linux内核的led子系统是一种重要的框架,用于管理和控制设备上的led指示灯。在嵌入式系统和物联网设备中,led子系统发挥着关键作用,为开发者提供了一种统一的方式来控制和定制led的行为和效果。
1. linux 子系统框架图
内核空间:内核配置led相关的gpio,初始化,提供各种控制led的接口,并且在linux 系统需要通过设备节点形式呈现,可通过读写设备节点去控制。用户空间:led子系统还提供了一组用户空间api,供应用程序使用。这些api可以在应用程序中调用,以实现对led的控制和操作。api通常包括打开和关闭led、设置led亮度和颜色、闪烁和动画效果等。led子系统主要核心文件:
driver/leds/led-class.cdriver/leds/led-core.cdriver/leds/led-triggers.c还有一些其他文件,按照自己配置情况是否选用
kernel_imx_dev/drivers/leds$ lsbuilt-in.a leds-apu.c leds-da903x.c leds-ip30.c leds-locomo.c leds-max77693.c leds-pca963x.c leds-ti-lmu-common.ckconfig leds-ariel.c leds-da9052.c leds-ipaq-micro.c leds-lp3944.c leds-max8997.c leds-pm8058.c leds-tlc591xx.cled-class.c leds-as3645a.c leds-dac124s085.c leds-is31fl319x.c leds-lp3952.c leds-mc13783.c leds-powernv.c leds-tps6105x.cled-class-flash.c leds-asic3.c leds-el15203000.c leds-is31fl32xx.c leds-lp50xx.c leds-menf21bmc.c leds-pwm.c leds-turris-omnia.cled-class-flash.o leds-aw2013.c leds-fsg.c leds-ktd2692.c leds-lp5521.c leds-mlxcpld.c leds-rb532.c leds-wm831x-status.cled-class-multicolor.c leds-bcm6328.c leds-gpio.c leds-lm3530.c leds-lp5523.c leds-mlxreg.c leds-regulator.c leds-wm8350.cled-class.o leds-bcm6358.c leds-gpio.ko leds-lm3532.c leds-lp5562.c leds-mt6323.c leds-s3c24xx.c leds-wrap.cled-core.c leds-bd2802.c leds-gpio.mod leds-lm3533.c leds-lp55xx-common.c leds-net48xx.c leds-sc27xx-bltc.c led-triggers.cled-core.o leds-blinkm.c leds-gpio.mod.c leds-lm355x.c leds-lp55xx-common.h leds-netxbig.c leds-sgm3140.c led-triggers.oleds-88pm860x.c leds-clevo-mail.c leds-gpio.mod.o leds-lm3601x.c leds-lp8501.c leds-nic78bx.c leds-spi-byte.c makefileleds-aat1290.c leds-cobalt-qube.c leds-gpio.o leds-lm36274.c leds-lp8788.c leds-ns2.c leds-ss4200.c modules.orderleds-acer-a500.c leds-cobalt-raq.c leds-gpio-register.c leds-lm3642.c leds-lp8860.c leds-ot200.c leds-sunfire.c todoleds-adp5520.c leds-cpcap.c leds.h leds-lm3692x.c leds-lt3593.c leds-pca9532.c leds-syscon.c triggerleds-an30259a.c leds-cr0014114.c leds-hp6xx.c leds-lm3697.c leds-max77650.c leds-pca955x.c leds-tca6507.c uleds.c2. led子系统使用的场景
可以控制led的亮灭,闪烁模式,可以灵活改变相关触发方式;方便控制led的亮度相关;其他控制gpio同样适用;特殊使用,比如cpu使用情况,音频led3. led子系统使用
修改设备树
leds { compatible = gpio-leds; pinctrl-names = default; pinctrl-0 = ; vibrator { label = vibrator; gpios = ; default-state = off; }; led0 { label = heartbeat; gpios = ; default-state = on; /*linux,default-trigger = heartbeat;*/ }; led1 { label = led1; gpios = ; default-state = on; }; led2 { label = led2; gpios = ; default-state = off; }; };内核配置相关
需要开启
config_leds_triggers 和 config_leds_trigger_timer
编译完毕后,内核加载驱动后可以看到相关:
evk_8mq:/ # ls /sys/class/leds/heartbeat led1 led2 mmc0:: mmc1:: vibratorevk_8mq:/ # cd /sys/class/leds/led1evk_8mq:/sys/class/leds/led1 # lsbrightness device max_brightness power subsystem trigger uevent控制led亮灭
evk_8mq:/sys/class/leds/led1 # echo 0 > brightnessevk_8mq:/sys/class/leds/led1 # echo 1 > brightness查看触发方式:
evk_8mq:/sys/class/leds/led1 # cat trigger[none] rc-feedback rfkill-any rfkill-none timer transient mmc1 mmc0 tcpm-source-psy-0-0022-online bq25700-charger-online cw2015-battery-charging-or-full cw2015-battery-charging cw2015-battery-full cw2015-battery-charging-blink-full-solid rfkill0看到[none],表明是空,没有使用任何触发方式,这里将举例子,设置灯亮1秒钟:
采用timer 实现
evk_8mq:/sys/class/leds/heartbeat # echo timer > triggerevk_8mq:/sys/class/leds/heartbeat # lsbrightness delay_on max_brightness subsystem ueventdelay_off device power trigger#设置灯亮1秒钟evk_8mq:/sys/class/leds/heartbeat # echo 1000 > delay_on#灭1秒钟evk_8mq:/sys/class/leds/heartbeat # echo 1000 > delay_off采用transient实现
evk_8mq:/sys/class/leds/led1 # echo transient > triggerevk_8mq:/sys/class/leds/led1 # lsactivate device max_brightness state triggerbrightness duration power subsystem uevent#控制led1 亮一秒熄灭:echo 1 > stateecho 1000 > durationecho 1 > activate在设备树中,可以看到里面有一个
/ linux,default-trigger = heartbeat; /
这个可以在设备树选定它做为什么触发,这里是心跳方式
4. led的trigger
led的trigger (部分)种类和作用
工业互联网使各行业数字化转型进程加速
南孚推出一款户外便携式充电站 50000mAh容量并自带40W适配器
雷电对弱电设备的干扰与防护
云存储监控解决方案的8大优势
嵌入式微处理器MCF5249及其应用
Linux内核之LED子系统(一)
联发科推出人工智能芯片_消费者们怎么看
苹果Watch能否加速无线充电标准统一的步伐
分析我国三大运营商在NB-IoT和eMTC技术比较及推广策略
中国3D打印产业即将腾飞 京津地区有望领跑全国
无线投屏技术可帮助我们在家学习和工作
Facebook和谷歌自建高速互联网设备 思科等受损
什么是EDM功能 EDM功能的作用是什么
华芯通与OpenBMC组织签署CLA,正式成为OpenBMC项目贡献成员
沃达丰表示华为是5G网络的最佳合作伙伴我们将会继续与华为合作
PECVD原理
网络设施的逐渐升级完善 助力政府与公共安全业市场发展
卓岚信息科技储存型Modbus网关ZLAN5143概述
新荣耀正在重整芯片供应链?
滤波器的奇妙世界:递进式解析滤波技术的精髓!