Firefly-RK3399 開發板上有 2 個 LED 燈,如下表所示:
可通過使用 LED 設備子系統或者直接操作 GPIO 控制該 LED。
標準的 Linux 專門為 LED 設備定義了 LED 子系統。 在 Firefly-RK3399 開發板中的兩個 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.dtsi 文件中定義LED節點,具體定義如下:
leds { compatible = "gpio-leds"; power_led: 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_led: 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,如下就默認打開黃燈,Firefly-RK3399開機后黃燈就亮
(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 燒到Firefly-RK3399板子上 我們可以使用串口輸入命令,就可以看到藍燈不停的間隔閃爍
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文章
11351瀏覽量
210497 -
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35641 -
Firefly
+關注
關注
2文章
538瀏覽量
7141
發布評論請先 登錄
相關推薦
【Firefly RK3399試用體驗】+linux環境下給RK3399燒入linux
Firefly RK3399開源板的雙目攝像頭數據采集方案
Firefly -RK3399電源適配器介紹
![<b class='flag-5'>Firefly</b> -<b class='flag-5'>RK3399</b>電源適配器<b class='flag-5'>介紹</b>](https://file.elecfans.com/web1/M00/AB/49/o4YBAF22zsCACha_AAESYwVcVZw399.jpg)
Firefly-RK3399--PWM介紹
![<b class='flag-5'>Firefly-RK3399</b>--PWM<b class='flag-5'>介紹</b>](https://file.elecfans.com/web1/M00/AE/41/o4YBAF3XQ3mAEZT1AAFhCM0tNzE156.png)
Firefly-RK3399--IR程序 使用
![<b class='flag-5'>Firefly-RK3399</b>--IR程序 使用](https://file.elecfans.com/web1/M00/AB/49/o4YBAF22zu2AKNkMAADawVe-83s960.png)
Firefly-RK3399--ADC開發板介紹
![<b class='flag-5'>Firefly-RK3399</b>--ADC開發板<b class='flag-5'>介紹</b>](https://file.elecfans.com/web1/M00/AE/9A/pIYBAF3XSW2AGzt6AAIRdlroTGQ426.png)
評論