我是linux内核的新手。我正在尝试通过linux生成PWM。 API人员讨论了一个sysfs接口。我想在C中实现用户空间程序。但是使用PWM迫使我使用命令行。此外,使用read,write是C中的一个问题,因为当我使用cd时,它正在改变路径目录。 因此,路径是可变的。有没有什么办法可以在不使用sysfs的情况下将值传递给pwm_config()?也许是通过ioctl?如果是,那么程序是什么? 应用程序C代码:
void main(){
int export = open("/sys/class/pwm/pmwchip0/export",O_WRONLY);
int period,duty_cycle,enable;
if(export == -1)
{
perror("Export:");
}
等等其他文件,如句号和占空比。
当我尝试运行我的应用程序时,我收到以下错误。
Export:: No such file or directory
Export_write: Bad file descriptor
Period_write:: Bad file descriptor
Duty_cycle_write:: Bad file descriptor
Enable_write:: Bad file descriptor
答案 0 :(得分:0)
据我所知,var productSelected = "";
function addCartao(product){
if( productSelected != "" ){
removeCartaotoCart(productSelected); // Remove the item in cart, if there is one.
}
$j('#cartaoMensagem'+product).hide();
$j('#cartaoMensagemRemover'+product).show();
$j('#cartaoMensagemRemover'+product).css({'background-color': '#000000'});
$j.ajax({
type: "POST",
url: "<?php echo Mage::getUrl('fol_carousel/ajax/addCartao') ?>",
data: {
product: product
},
dataType: 'json',
cache : false,
beforeSend: function () {
},
success: function (retorno) {
var button = $j('#cartaoMensagemRemover'+product);
productSelected = product;
$j('#cartaoMensagemAdicionado').val(productSelected);
$j('.item-custom').append('<tr id="trAppend'+product+'"><td class="a-center lc-thumbnails"><img src="' + retorno['imagem'] + '" width="50" height="50" alt="' + retorno['name'] + '"></td><td><h3 class="product-name">' + retorno['name'] + '</h3></td><td class="a-center">1</td><td class="a-right"><span class="cart-price"><span class="price"> R$ ' + retorno['price'] + '</span></span></td></tr>');
getSubTotal();
getGrandTotal();
},
complete: function () {
},
error: function (x,y,z) {
alert("error");
alert(x);
alert(y);
alert(z);
}
});
}
function removeCartaotoCart(itemId){
productSelected = "";
$j('#cartaoMensagemRemover'+itemId).hide();
$j('#cartaoMensagem'+itemId).show();
$j.ajax({
type:"POST",
url:"<?php echo Mage::getUrl('fol_carousel/ajax/removeCartao') ?>",
data:{
itemId: itemId
},
cache: false,
beforeSend: function(){
},
success: function(retorno){
var button = $j('#cartaoMensagemRemover'+itemId);
$j('#cartaoMensagemAdicionado').val(productSelected);
$j('.item-custom #trAppend'+itemId+'').remove();
getSubTotal();
getGrandTotal();
},
complete: function () {
},
error: function (x,y,z) {
alert("error");
alert(x);
alert(y);
alert(z);
}
});
}
是PWM的唯一标准用户空间接口。但是你可以从命令行做的任何事情都可以在C中完成(毕竟shell是用C语言编写的。)
您使用sysfs
时遇到的问题实际上并不是问题。在cd
内,sysfs
中的目录实际上是指向正确设备的符号链接。在您的情况下,/sys/class/pwd/*
是/sys/class/pwm/pwmchip0
的符号链接。
有趣的是,有些shell,当你/sys/devices/soc0/amba/f8001000.timer/pwm/pwmchip0
符号链接将解析为真实目录时,但其他shell实际上会将符号链接名称保留为当前目录。
但是目录符号链接的问题不应该是你的问题。愿意管理PWM设备的C程序不应更改工作目录。而是使用完整路径打开文件:
cd
等等。