基于linux的DLT-RK3288之 led控制
DLT-RK3288开发板正面有3个LED,如下表所示:
LED GPIO ref. GPIO number color
D8 VCC_SYS 5V RED
D3 GPIO8_A1 257 GREED
D2 GPIO8_A2 258 GREED
红灯D8,上电常亮,指示电源状态;
绿灯D3、D2,可通过linux led设备子系统控制,也可以直接操作gpio控制。软件默认定义开机进内核后D2常亮,D3常灭
LED设备子系统
Linux 专门为 LED 设备定义了 LED 设备子系统。在 DLT-RK3288 开发板中的两个 LED 均以设备的形式被定义。
LED子系统主要驱动源码文件:
kernel/drivers/leds/led-class.c
kernel/drivers/leds/led-core.c
kernel/drivers/leds/led-triggers.c
kernel/drivers/leds/leds-gpio.c
kernel/drivers/leds/trigger/ledtrig-default-on.c
kernel/drivers/leds/trigger/ledtrig-backlight.c
LED子系统以/sys/class/leds/文件接口提供给上层操作。
shell@daluotuo:/ # ls /sys/class/leds/
daluotuo:green_d2:power
daluotuo:green_d3:user
可以通过 echo 向其 trigger 属性输入命令控制每一个 LED:
控制D2灭:
shell@daluotuo:/ # echo none > /sys/class/leds/daluotuo:green_d2:power/trigger
控制D2亮:
shell@daluotuo:/ # echo default-on > /sys/class/leds/daluotuo:green_d2:power/trigger
使用 cat 命令获取 trigger 的可用值:
shell@daluotuo:/ # cat /sys/class/leds/daluotuo:green_d2:power/trigger
[none] ir-power-click mmc0 mmc1 mmc2 backlight default-on rfkill0 rfkill1 rfkill2
在内核中控制LED
1、dts定义“leds”节点:kernelarcharmbootdtsdaluotuo-rk3288.dts
leds {
compatible = "gpio-leds";
power {
label = "daluotuo:green_d2:power";
linux,default-trigger = "ir-power-click";
default-state = "on";
gpios = ;
};
user {
label = "daluotuo:green_d3:user";
linux,default-trigger = "ir-user-click";
default-state = "off";
gpios = ;
};
};
2、驱动中控制LED
需要包含的头文件:
#include 定义 LED 触发器
DEFINE_LED_TRIGGER(ledtrig_ir_click);
为D2 LED 注册该触发器
led_trigger_register_simple("ir-power-click", &ledtrig_ir_click);
控制D2 LED 亮灭
led_trigger_event(ledtrig_ir_click, LED_FULL); //亮
led_trigger_event(ledtrig_ir_click, LED_OFF); //灭
基于linux的DLT-RK3288之 led控制
DLT-RK3288开发板正面有3个LED,如下表所示:
LED GPIO ref. GPIO number color
D8 VCC_SYS 5V RED
D3 GPIO8_A1 257 GREED
D2 GPIO8_A2 258 GREED
红灯D8,上电常亮,指示电源状态;
绿灯D3、D2,可通过linux led设备子系统控制,也可以直接操作gpio控制。软件默认定义开机进内核后D2常亮,D3常灭
LED设备子系统
Linux 专门为 LED 设备定义了 LED 设备子系统。在 DLT-RK3288 开发板中的两个 LED 均以设备的形式被定义。
LED子系统主要驱动源码文件:
kernel/drivers/leds/led-class.c
kernel/drivers/leds/led-core.c
kernel/drivers/leds/led-triggers.c
kernel/drivers/leds/leds-gpio.c
kernel/drivers/leds/trigger/ledtrig-default-on.c
kernel/drivers/leds/trigger/ledtrig-backlight.c
LED子系统以/sys/class/leds/文件接口提供给上层操作。
shell@daluotuo:/ # ls /sys/class/leds/
daluotuo:green_d2:power
daluotuo:green_d3:user
可以通过 echo 向其 trigger 属性输入命令控制每一个 LED:
控制D2灭:
shell@daluotuo:/ # echo none > /sys/class/leds/daluotuo:green_d2:power/trigger
控制D2亮:
shell@daluotuo:/ # echo default-on > /sys/class/leds/daluotuo:green_d2:power/trigger
使用 cat 命令获取 trigger 的可用值:
shell@daluotuo:/ # cat /sys/class/leds/daluotuo:green_d2:power/trigger
[none] ir-power-click mmc0 mmc1 mmc2 backlight default-on rfkill0 rfkill1 rfkill2
在内核中控制LED
1、dts定义“leds”节点:kernelarcharmbootdtsdaluotuo-rk3288.dts
leds {
compatible = "gpio-leds";
power {
label = "daluotuo:green_d2:power";
linux,default-trigger = "ir-power-click";
default-state = "on";
gpios = ;
};
user {
label = "daluotuo:green_d3:user";
linux,default-trigger = "ir-user-click";
default-state = "off";
gpios = ;
};
};
2、驱动中控制LED
需要包含的头文件:
#include 定义 LED 触发器
DEFINE_LED_TRIGGER(ledtrig_ir_click);
为D2 LED 注册该触发器
led_trigger_register_simple("ir-power-click", &ledtrig_ir_click);
控制D2 LED 亮灭
led_trigger_event(ledtrig_ir_click, LED_FULL); //亮
led_trigger_event(ledtrig_ir_click, LED_OFF); //灭
举报