Firefly-RK3399--LED 介绍

led 使用 前言 firefly-rk3399 开发板上有 2 个 led 灯,如下表所示:
可通过使用 led 设备子系统或者直接操作 gpio 控制该 led。
以设备的方式控制 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 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 = ; pinctrl-names = default; pinctrl-0 = ; }; user_led: user { label = firefly:yellow:user; linux,default-trigger = ir-user-click; default-state = off; gpios = ; pinctrl-names = default; pinctrl-0 = ; }; };
注意:compatible 的值要跟 drivers/leds/leds-gpio.c 中的 .compatible 的值要保持一致。
simple trigger led 按名字来是看就是简单的触发方式控制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; };
complex trigger 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

深度解析物联网的安全问题
Mg0.5Ti0.5TaO4陶瓷的高频本征介电性能与低温烧结特性研究
怎么搭建WSL+Vivado?又如何去使用?
南瑞集团将实施三型两网发展战略建设世界一流的能源互联网企业
MiniWare推出微型多模块线性的可编程数字电源
Firefly-RK3399--LED 介绍
pcb是半导体还是集成电路?好问题!进来看答案
1.5GHz双核高清屏 索尼LT29i即将亮相
车好多融资后 估值达66亿美元 几乎垄断二手车市场
施耐德电气以“透明工厂”携手中国制造业共铸新制造
民营100强企业的多媒体展馆,数字展厅用到的全息展柜、大屏展览展示机器人
第七代iPod nano拆解:配备了五款神秘的苹果芯片
ARM的视频安全监控终端的设计与实现
蓝牙组网智能风扇灯方案简介
关于宽带功放数字预失真测试方案的分析和应用
云网融合推动5G终端应用创新,推进生态合作共促产业链繁荣
苹果M1 Mac mini单核基准测试快于所有英特尔Mac
长宽比为18:9华为荣耀畅玩7x重新定义全面屏手机:致敬夏普未提小米MIX
雷蛇公布双十一 战报:王牌单品霸榜TOP1
现在是否有智能家居领域的创业机会