首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无系统PWM

无系统PWM
EN

Stack Overflow用户
提问于 2017-09-11 16:30:33
回答 1查看 1.6K关注 0票数 0

我对linux内核非常陌生,我正试图通过linux来生成PWM。API man讨论了sysfs接口。我想在C中实现一个用户空间程序,但是使用PWM迫使我使用命令行。此外,在C中使用读、写是一个问题,因为当我使用cd时,它正在改变路径目录。因此,路径是可变的。有没有办法不使用sysfs将值传递给pwm_config()?也许是通过ioctl?如果是的话,那程序是什么?应用程序C代码:

代码语言:javascript
复制
void main(){

    int export = open("/sys/class/pwm/pmwchip0/export",O_WRONLY);
    int period,duty_cycle,enable;

    if(export == -1)
    {
        perror("Export:");
    }

等等,其他文件,如期间和职责周期。

当我试图运行我的应用程序时,我会得到以下错误。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-11 18:21:13

据我所知,sysfs是唯一的标准用户空间接口。但是从命令行可以做的任何事情都可以用C来完成(毕竟shell是用C编写的)。

cd存在的问题实际上并不是一个问题。在sysfs中,/sys/class/pwd/*中的目录实际上是指向适当设备的符号链接。在您的例子中,/sys/class/pwm/pwmchip0是指向/sys/devices/soc0/amba/f8001000.timer/pwm/pwmchip0的符号链接。

有趣的是,有些shell,当您的cd符号链接将解析到真正的目录,但其他shell实际上将保持符号链接名称为当前目录。

但是,目录符号链接的问题对您来说不应该是一个问题。愿意管理PWM设备的C程序不应更改工作目录。相反,使用完整路径打开文件:

代码语言:javascript
复制
open("/sys/class/pwm/pwmchip0/npwm", O_RDONLY);

诸若此类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46160349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档