Linux LED子系统详解-每日时讯

采编:hyt15  来源:jf_30051736  发布时间:2023-06-11 14:53:44 


(资料图)

1. 简介

专栏总目录Linux为了广泛通用性及适应性,各种框架都做得非常灵活而又复杂,小小的LED也不例外。支持了不 同的LED硬件设备,例如gpio接口,i2c接口,LED芯片等。为了支持各种点灯效果,使用了Trigger框架,除了系统默认的一些trigger外,用户可以创建自定义trigger。因此,为了点个灯,软件开发人员需要了解Linux中gpio, led, trigger三个模块。led框架核心文件:
/kernel/include/linux/leds.h    // 重要,led相关结构体,宏定义,trigger等目录 /kernel/driver/leds/ 下led-class.c  // 定义led class及相关接口led-core.c   // export 了闪烁,设置亮灭等接口led-gpio.c   // "leds-gpio" 驱动leds.h       // 提供几个接口,如:led_init_core
trigger 框架核心文件:
目录 /kernel/driver/leds/ 下    led-triggers.c    // export了许多接口,包括:led_trigger_register目录 /kernel/driver/leds/trigger 下    ledtrig-backlight.c    ledtrig-camera.c    ledtrig-cpu.c    ledtrig-default-on.c    ledtrig-disk.c    ledtrig-gpio.c    ledtrig-heartbeat.c   // 心跳灯效果    ledtrig-mtd.c    ledtrig-oneshot.c    ledtrig-panic.c    ledtrig-timer.c       // 定时器ledtrig-transient.c

以参考上面的trigger例子写自己的trigger,或者改造,需要在make menuconfig里面选上才会编译,如下:

2. LED 调试

2.1 调试总览,调试步骤分析

步骤 一 : dts配置步骤 二 :编译烧写,调试

2.2 调试过程

步骤 一 : dts配置① leds节点是在rk3588-evb.dtsi文件中定义

#include "rk3588-evb.dtsi"

② 定义四个led节点: (检查gpio是否被复用)

使用命令:dmesg | grep cannot检查是否有gpio冲突,有冲突的话驱动代码会中断,后面的dts就不会生效。

&leds {        status = "okay";        compatible = "gpio-leds";        pinctrl-names = "default";        pinctrl-0 = < &work1_led_gpio >, < &work2_led_gpio >,< &work3_led_gpio >,< &work4_led_gpio >;        work1_led: work1{            default-state = "off";            gpios = < &gpio4 RK_PD2 GPIO_ACTIVE_HIGH >;        };        work2_led: work2{            default-state = "off";                  gpios = < &gpio4 RK_PD3 GPIO_ACTIVE_HIGH >;        };        work3_led: work3{            default-state = "off";            gpios = < &gpio4 RK_PD4 GPIO_ACTIVE_HIGH >;        };        work4_led: work4{            default-state = "off";            gpios = < &gpio4 RK_PD5 GPIO_ACTIVE_HIGH >;        };};&pinctrl {    leds{            work1_led_gpio: work1-led-gpio{            rockchip,pins = < 4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_down >;            };            work2_led_gpio: work2-led-gpio{            rockchip,pins = < 4 RK_PD3 RK_FUNC_GPIO &pcfg_pull_down >;            };            work3_led_gpio: work3-led-gpio{            rockchip,pins = < 4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_down >;            };            work4_led_gpio: work4-led-gpio{            rockchip,pins = < 4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down >;            };        }; }

步骤二:调试,验证:在用户空间操作led

使用了驱动框架后可以不需要编写应用程序就可以测试led是否能正常被点亮与熄灭,这些都可以在sysfs文件系统中完成。在装载驱动后可以在/sys/class/leds/目录下看到对应的led设备目录,如本文中的work1(填充设备时的设备名字段)。

ls /sys/class/leds/work1

brightness      power           ueventmax_brightness  subsystem

点亮led

echo 1 > brightness

熄灭led

echo 0 > brightness

审核编辑:汤梓红

关键词:

关闭
环球关注:《不虚此行》发布会 胡歌吴磊再合作畅谈角色塑造
尼古拉斯·凯奇谈《变脸》续集剧情 更加三维立体
从来不敢仔细看你完整版(从来不敢仔细看你)-观点
天天观点:《少年时代》定档8月17日 导演陈凯歌:这是献给青春的颂歌
《我爱你!》映后 千人观众遥祝梁家辉人生大事
Linux LED子系统详解-每日时讯
重点聚焦!电影《角斗士2》片场发生事故!数名工作人员受伤
天天热消息:大语言模型中的涌现现象是不是伪科学?
已知数列an的前n项和为Sn且Sn=2an-a1(已知数列an的前n项和为sn)_天天热闻
世界即时:侠盗猎车手罪恶都市怎么调中文电脑版调键(侠盗猎车手之罪恶都市怎么调中文)
【世界播资讯】我是大运火炬手丨丁宁:大运会既是赛场,更是世界青年的交流展示平台
天天快资讯:选择大城市逐梦还是小城市安稳
【环球新视野】下个月,三大属相得到偏财神指路,福禄寿财星纷纷前来!
就在北虹桥,为司机提供更好服务!这个超级充电站开门迎客
好玩好看,上海国际电影节首次推出“数字影视体验展”-焦点速讯
天津红桥区可提供洛贝电压力锅维修服务地址在哪|快资讯
重庆万州区可提供伊立浦电压力锅维修服务地址在哪
视讯!zgo手表_zgo手表官网
北京公租房项目(2018年北京公租房项目)
茅屋为秋风所破歌原文及翻译朗诵_茅屋为秋风所破歌原文及翻译-世界短讯
苏州音乐喷泉开放时间2020_苏州音乐喷泉开放时间
热头条丨什么叫职业目标_什么叫职业目标?
怎么查流量使用情况电信_怎么查流量使用情况? 焦点速讯
永远不要指望驯服的三个星座,一身反骨,生来叛逆,像狼一样自由-信息
将来3月,四大生肖前缘重现,财源滚滚,事业进步