没有sysfs的PWM

时间:2017-09-11 16:30:33

标签: linux pwm

我是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

1 个答案:

答案 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

等等。