本章分别使用C库和系统调用的文件操作方式控制开发板的LED灯,展示如何在应用层通过系统提供的设备文件控制相关硬件。
1.LED子系统
在Linux系统中,绝大多数硬件设备都有非常成熟的驱动框架,驱动工程师使用这些框架添加与板子相关的硬件支持,建立硬件与Linux内核的联系,内核再通过统一文件系统接口呈现给用户,用户通过对应的设备文件控制硬件。
对于LED设备,Linux提供了LED子系统驱动框架,在Linux内核源码中的“Documentation/leds/leds-class.txt”有相关的描述,它实现了一个leds类,用户层通过sysfs文件系统对LED进行控制。
1.1. LED设备目录
使用了LED子系统驱动的设备,会被展现在/sys/class/leds目录下,可在主机和开发板使用如下命令查看,命令的输出可能会因为硬件环境不同而不一样:
#在主机或ARM板的终端上执行如下命令:
ls /sys/class/leds/
#根据具体的目录内容继续查看:
#在主机上有input2::capslock目录,可在主机执行如下命令查看
ls /sys/class/leds/input2::capslock
#在开发板上有cpu目录,可在开发板上执行如下