[分享] 【正点原子阿尔法 IMX6ULL Linux开发板】第10篇 Linux C编程驱动LED(SYSFS)

常见泽1   2023-6-14 20:05 楼主

一 SYSFS文件系统

sysfs向用户空间展示了驱动设备的层次结构。我们都知道设备和对应的驱动都是由内核管理的,这些对于用户空间是不可见的。现在通过sysfs,可以在用户空间直观的了解设备驱动的层次结构。

 

我们来看看sysfs的文件系统

block:块设备

bus:系统中的总线

class: 设备类型,比如输入设备

dev:系统中已注册的设备节点的视图,有两个子目录char和block。

devices:系统中所有设备拓扑结构视图

fireware:固件

fs:文件系统

kernel:内核配置选项和状态信息

module:模块

power:系统的电源管理数据

 

 

看下 实际测试的情况

 

image-20230614140231-1.png  

 

image-20230614140231-2.png  

重点就是上面一张图 led的几个文件

image-20230614140231-3.png  

方括号([heartbeat] )括起来的表示当前 LED 对应的触发模式, none 表示无触发,常用的触发模式包括 none(无触发)、 mmc0(当对 mmc0 设备发起读写操作的时候 LED 会闪烁)、timer(LED 会有规律的一亮一灭,被定时LED 会闪烁)、timer(LED 会有规律的一亮一灭,被定时

 

二 编程测试

 

截取一段比较常见的吧

感觉是和linux的驱动开发是差不多的

主要还是一些文件的操作读写等等

 

    fd1 = open(LED_TRIGGER, O_RDWR);

    if (0 > fd1) {

        perror("open error");

        exit(-1);

    }



    fd2 = open(LED_BRIGHTNESS, O_RDWR);

    if (0 > fd2) {

        perror("open error");

        exit(-1);

    }



    /* 根据传参控制LED */

    if (!strcmp(argv[1], "on")) {

        write(fd1, "none", 4);   //先将触发模式设置为none

        write(fd2, "1", 1);        //点亮LED

    }

 

编译注意事项:

source 工具链配置文件

是配置环境变量的意思吗?

source /opt/fsl-imx-fb-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

 

配置好了之后再编译生成可执行文件

image-20230614140231-4.png  

 

三 结果显示

 

可执行文件改变权限

然后再执行

./led 需要参数

./led on 灯亮

./led off 灯灭

image-20230614140231-5.png  

 

可以看到随着命令LED亮和灭

回复评论 (2)

跟着楼主学习 Linux C编程驱动LED(SYSFS)

点赞  2023-6-15 07:27

sys比以前ioctl好用多的。

默认摸鱼,再摸鱼。2022、9、28
点赞  2023-6-22 19:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复