LED 使用
前言
AIO-3399J 開(kāi)發(fā)板上有 2 個(gè) LED 燈,如下表所示:
以設(shè)備的方式控制 LED可通過(guò)使用 LED 設(shè)備子系統(tǒng)或者直接操作 GPIO 控制該 LED。
標(biāo)準(zhǔn)的 Linux 專(zhuān)門(mén)為 LED 設(shè)備定義了 LED 子系統(tǒng)。 在 Firefly-RK3399 開(kāi)發(fā)板中的兩個(gè) LED 均以設(shè)備的形式被定義。
用戶(hù)可以通過(guò) /sys/class/leds/ 目錄控制這兩個(gè) LED。
開(kāi)發(fā)板上的 LED 的默認(rèn)狀態(tài)為:
Blue: 系統(tǒng)上電時(shí)打開(kāi)
Yellow:用戶(hù)自定義
用戶(hù)可以通過(guò) echo 向其 brightness屬性輸入命令控制每一個(gè) LED:
root@rk3399_firefly_box:~ # echo 0 >/sys/class/leds/firefly:blue:power/brightness //藍(lán)燈滅 root@rk3399_firefly_box:~ # echo 1 >/sys/class/leds/firefly:blue:power/brightness //藍(lán)燈亮
使用trigger 方式控制 LED
Trigger 包含多種方式可以控制LED,這里就用兩個(gè)例子來(lái)說(shuō)明
Simple trigger LED
Complex trigger LED
更詳細(xì)的說(shuō)明請(qǐng)參考 leds-class.txt 。
首先我們需要知道定義多少個(gè)LED,同時(shí)對(duì)應(yīng)的LED的屬性是什么。
在 kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-aio.dts 文件中定義LED節(jié)點(diǎn),具體定義如下:
&power_led { gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>; }; &user_led { gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; }; leds { compatible = "gpio-leds"; power{ label = "firefly:blue:power"; linux,default-trigger = "ir-power-click"; default-state = "on"; gpios = <&gpio2 27 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&led_power>; }; user{ label = "firefly:yellow:user"; linux,default-trigger = "ir-user-click"; default-state = "off"; gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&led_user>; }; };
注意:compatible 的值要跟 drivers/leds/leds-gpio.c 中的 .compatible 的值要保持一致。
Simple trigger LED
按名字來(lái)是看就是簡(jiǎn)單的觸發(fā)方式控制LED,如下就默認(rèn)打開(kāi)黃燈,F(xiàn)irefly-RK3399開(kāi)機(jī)后黃燈就亮
(1)定義 LED 觸發(fā)器 在kernel/drivers/leds/trigger/led-firefly-demo.c 文件中有如下添加
DEFINE_LED_TRIGGER(ledtrig_default_control);
(2)注冊(cè)該觸發(fā)器
led_trigger_register_simple("ir-user-click", &ledtrig_default_control);
(3)控制 LED 的亮。
led_trigger_event(ledtrig_default_control, LED_FULL); //yellow led on
(4)打開(kāi)LED demo
led-firefly-demo默認(rèn)沒(méi)有打開(kāi),如果需要的話(huà)可以使用以下補(bǔ)丁打開(kāi)demo驅(qū)動(dòng):
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-demo.dtsi +++ b/kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-demo.dtsi @@ -52,7 +52,7 @@ led_demo: led_demo { - status = "disabled"; + status = "okay"; compatible = "firefly,rk3399-led"; };
Complex trigger LED
如下是trigger方式控制LED復(fù)雜一點(diǎn)的例子,timer trigger 就是讓LED達(dá)到不斷亮滅的效果
我們需要在內(nèi)核把timer trigger配置上
在 kernel 路徑下使用 make menuconfig ,按照如下方法將timer trigger驅(qū)動(dòng)選中。
Device Drivers --->LED Support --->LED Trigger support --->LED Timer Trigger
保存配置并編譯內(nèi)核,把kernel.img 燒到Firefly-RK3399板子上 我們可以使用串口輸入命令,就可以看到藍(lán)燈不停的間隔閃爍
echo "timer" > sys/class/leds/firefly\:blue\:power/trigger
用戶(hù)還可以使用 cat 命令獲取 trigger 的可用值:
root@rk3399_firefly_box:/ # cat sys/class/leds/firefly\:blue\:power/trigger none rc-feedback test_ac-online test_battery-charging-or-full test_battery-charging test_battery-full test_battery-charging-blink-full-solid test_usb-online mmc0 mmc1 ir-user-click [timer] heartbeat backlight default-on rfkill0 mmc2 rfkill1 rfkill2
-
Linux
+關(guān)注
關(guān)注
87文章
11459瀏覽量
212787 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6096瀏覽量
36138 -
Firefly
+關(guān)注
關(guān)注
2文章
541瀏覽量
7398
發(fā)布評(píng)論請(qǐng)先 登錄
fireflyAIO-3399J主板散熱套件簡(jiǎn)介

fireflyAIO-3399J主板紅外遙控器簡(jiǎn)介
fireflyAIO-3399J主板UART使用介紹

fireflyAIO-3399J主板TIMER使用簡(jiǎn)介

fireflyAIO-3399J主板RTC使用簡(jiǎn)介

fireflyAIO-3399J主板PWM使用介紹
fireflyAIO-3399J主板MIPI CSI使用簡(jiǎn)介

fireflyAIO-3399J主板IR使用簡(jiǎn)介

評(píng)論