AIO-3399C 開發板上有 2 個 LED 燈,如下表所示:
以設備的方式控制 LED可通過使用 LED 設備子系統或者直接操作 GPIO 控制該 LED。
標準的 Linux 專門為 LED 設備定義了 LED 子系統。 在 AIO-3399C 開發板中的兩個 LED 均以設備的形式被定義。
用戶可以通過 /sys/class/leds/ 目錄控制這兩個 LED。
開發板上的 LED 的默認狀態為:
-
Blue: 系統上電時打開
-
Yellow:用戶自定義
用戶可以通過 echo 向其 brightness屬性輸入命令控制每一個 LED:
root@rk3399_firefly_box:~ # echo 0 >/sys/class/leds/firefly:blue:power/brightness //藍燈滅 root@rk3399_firefly_box:~ # echo 1 >/sys/class/leds/firefly:blue:power/brightness //藍燈亮
Trigger 包含多種方式可以控制LED,這里就用兩個例子來說明
-
Simple trigger LED
-
Complex trigger LED
更詳細的說明請參考 leds-class.txt 。
首先我們需要知道定義多少個LED,同時對應的LED的屬性是什么。
在 kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-port.dts 文件中定義LED節點,具體定義如下:
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 的值要保持一致。
按名字來是看就是簡單的觸發方式控制LED,如下就默認打開黃燈,AIO-3399C開機后黃燈就亮
(1)定義 LED 觸發器 在kernel/drivers/leds/trigger/led-firefly-demo.c 文件中有如下添加
DEFINE_LED_TRIGGER(ledtrig_default_control);
(2)注冊該觸發器
led_trigger_register_simple("ir-user-click", &ledtrig_default_control);
(3)控制 LED 的亮。
led_trigger_event(ledtrig_default_control, LED_FULL); //yellow led on
(4)打開LED demo
led-firefly-demo默認沒有打開,如果需要的話可以使用以下補丁打開demo驅動:
--- 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"; };
如下是trigger方式控制LED復雜一點的例子,timer trigger 就是讓LED達到不斷亮滅的效果
我們需要在內核把timer trigger配置上
在 kernel 路徑下使用 make menuconfig ,按照如下方法將timer trigger驅動選中。
Device Drivers --->LED Support --->LED Trigger support --->LED Timer Trigger
保存配置并編譯內核,把kernel.img 燒到AIO-3399C板子上 我們可以使用串口輸入命令,就可以看到藍燈不停的間隔閃爍
echo "timer" > sys/class/leds/firefly\:blue\:power/trigger
用戶還可以使用 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
+關注
關注
87文章
11123瀏覽量
207905 -
嵌入式主板
+關注
關注
7文章
6081瀏覽量
34941 -
Firefly
+關注
關注
2文章
538瀏覽量
6930
發布評論請先 登錄
相關推薦
評論