瑞芯微Rockchip开发者社区
直播中

神之小风

12年用户 887经验值
私信 关注
[问答]

怎样去控制DLT-RK3288开发板的LED设备子系统呢

怎样去控制DLT-RK3288开发板的LED设备子系统呢?

回帖(1)

刘勉励

2022-3-3 10:17:07
基于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); //灭
举报

更多回帖

发帖
×
20
完善资料,
赚取积分