Linux LED子系统详解-天天观焦点
2023-06-11 04:42:53 来源:jf_30051736
(相关资料图)
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
审核编辑:汤梓红
关键词:
相关新闻
- Linux LED子系统详解-天天观焦点
- 【天天速看料】牛肉饼的家常做法_牛肉的家常做法
- 热资讯!AI前哨 | Open AI联合创始人Sam AItman:目前开源不是最佳路径
- 刘国梁提拔8人入围国家队,15岁小张怡宁入选,陈幸同王一迪师妹
- 山雨欲来风满楼全诗_风雨欲来风满楼是什么意思
- 当前关注:75部影片已定档,暑期档票房有望冲击150亿
- 全球观焦点:尿微量白蛋白高是怎么回事(尿蛋白高是怎么回事)
- 天天微头条丨非遗正青春|显微世界里探寻“纸寿千年”的奥秘
- 实业公司的经营范围有哪些(什么叫 ldquo 实业公司 rdquo 实业是什么意思)
- 中国女人和欧洲人结婚会疼吗_欧洲女性和中国女性外阴有区别吗
- 巴萨戏耍梅西遭曝光!加泰媒体倒戈,谈2大操作,耽误球王去国米
- 天天观热点:橄榄可以搭配葡萄酒吗?
- 「户外喂鸟器」好设计分享!
- 马桶盖换不了怎么办(换马桶盖手伸不进去怎么处理)|天天快报
- 观天下!行拘!广州番禺警方通报男子在女厕门口偷拍
- 专家企业家齐聚哈尔滨 共谋人工智能引领龙江数字经济发展
- 从南宁来到厦门 两件南侨机工文物落户陈嘉庚纪念馆 世界看热讯
- 容量4500mAh、充电25W!三星Galaxy S23 FE电池曝光|微速讯
- 天天快消息!暖心相伴 “义”路同行
- 消息!play a role in是什么意思(play a role)
- 世界新动态:全新途观曝光!外观神似小途锐 这颜值可不输豪车?|当前信息
- 即时:藏海花南派三叔 百度网盘(藏海花南派三叔)
- 足坛年薪排行榜:姆巴佩跌至第4,第2和第3来自亚洲,第1实至名归 天天观天下
- 记者:米兰将在收官战结束后举办简短仪式,向即将离队的伊布告别 世界资讯