Linux LED子系统
前言 Linux 内核提供了丰富的设备驱动接口,其中GPIO和LED属于是最基本的一类了。之前就已经讲过用户空间下的GPIO读写操作,LED设备的操作也基本相同。其实完全可以使用GPIO驱动去控制LED,但LED的驱动针对LED提供了更多的功能,一起来看一下吧。 配置设备树 设备树中的LED节点配置,例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /* kernel/arch/arm/boot/dts/imx6ul-14x14-evk-c-emmc.dts */ leds { compatible = "gpio-leds"; pinctrl-names = "default"; status = "okay"; led1{ label = "led1"; gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; default-state = "off"; }; led2{ label = "led2"; gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; default-state = "off"; }; led3{ label = "heartbeat"; gpios = <&gpio5 5 GPIO_ACTIVE_LOW>; linux,default-trigger = "heartbeat"; }; }; 节点属性说明: label:LED设备的名字,名字必须是唯一的。如果没有设置,则会使用节点的名字。 gpios:GPIO的编号,以及高低电平设置,GPIO_ACTIVE_LOW低电平点亮,GPIO_ACTIVE_HIGH高电平点亮。 default-state:默认状态,on/off。 linux,default-trigger:设置LED的触发器。backlight-背光灯,heartbeat-心跳灯,timer-定时,default-on-默认开状态,disk-activity-硬盘状态,gpio,none。 用户空间下的LED操作 注意:以下操作都需要root权限! 用户空间下的GPIO文件系统接口在/sys/class/leds/{label}目录下。 LED节点有以下属性可以配置: ...