天天视点!Linux LED子系统详解
(资料图片)
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子系统详解
jf_30051736 2023-06-11
-
为什么本田cvt没有冷保护(为什么本田cvt没有冷保护?)_环球聚焦
互联网 2023-06-11
-
世界球精选!流年是指哪一年(流年是什么意思)
互联网 2023-06-11
-
当前观点:小米产品序列号查询(小米序列号查询官网查询系统)
2023-06-11
-
全球新资讯:新华全媒+|夜幕下,一个群体带动城市消费新热潮
新华社 2023-06-11
-
精选!中国历史_历史禁区
互联网 2023-06-11
-
当前观察:二十四节气顺序正确的是(二十四节气顺序)
互联网 2023-06-11
-
@高考生,2023年上海高招录取工作日程公布,这些时间节点不能错过!
文汇报 2023-06-11
-
世界快看:导演韩延:不要责怪观众挑剔,是很多创作者信誉破产了
搜狐娱乐 2023-06-11
-
抖音中视频计划视频要求是什么?怎么玩?|世界简讯
红神网 2023-06-11
-
天天视点!Linux LED子系统详解
jf_30051736 2023-06-11
-
为什么本田cvt没有冷保护(为什么本田cvt没有冷保护?)_环球聚焦
互联网 2023-06-11
-
世界球精选!流年是指哪一年(流年是什么意思)
互联网 2023-06-11
-
当前观点:小米产品序列号查询(小米序列号查询官网查询系统)
2023-06-11
-
全球新资讯:新华全媒+|夜幕下,一个群体带动城市消费新热潮
新华社 2023-06-11
-
精选!中国历史_历史禁区
互联网 2023-06-11
-
当前观察:二十四节气顺序正确的是(二十四节气顺序)
互联网 2023-06-11
-
@高考生,2023年上海高招录取工作日程公布,这些时间节点不能错过!
文汇报 2023-06-11
-
世界快看:导演韩延:不要责怪观众挑剔,是很多创作者信誉破产了
搜狐娱乐 2023-06-11
-
抖音中视频计划视频要求是什么?怎么玩?|世界简讯
红神网 2023-06-11
-
lh是什么激素(fsh是什么激素)
2023-06-11
-
国铁集团6月10日起在12306网站试行在线选铺服务
央视网 2023-06-11
-
-
微头条丨陕西西安推动“十里沣河”文旅深度融合古老沣河涌动新活力
海口网 2023-06-11
-
环球热推荐:“十年一遇”!数万人被疏散,加拿大山林野火为何失控?
环球网 2023-06-11
-
世界快播:become的过去式为什么是became_become的过去式
互联网 2023-06-11
-
滥用抗生素的危害问题(滥用抗生素的危害)
2023-06-11
-
吃喝玩乐购!快来一站式畅享非遗购 探访非遗味 共赴非遗游!
北方网 2023-06-11
-
全球要闻:足字旁那个字怎么写(足字旁怎么打)
2023-06-11
-
用小说法,而以记史 世界独家
齐鲁晚报 2023-06-11
-
“文根”何以“深种”?看文博会如何寻找岭南新坐标
央视新闻客户端 2023-06-10
-
直击2023中国经济传媒大会丨中国经济体制改革研究会副会长樊纲:复苏正在进行中 我们需要耐心-今日要闻
每日经济新闻 2023-06-10
-
深度解读 Vision Pro:苹果在发布会上没说的 18 个细节
爱范儿 2023-06-10
-
汽车水箱漏水怎么修补多少钱(汽车水箱漏水怎么修补?)_世界速读
互联网 2023-06-10
-
快看点丨咖啡伴侣有什么坏处吗(咖啡伴侣有什么坏处)
互联网 2023-06-10
-
鸿富瀚(301086)报收于70.09元,下跌3.39%-天天精选
东方资讯 2023-06-10
-
在智慧港口见证大湾区经济活力——广州南沙港走访一线见闻|环球即时看
新华社 2023-06-10
-
今日热搜:O型血的人想减肥,多吃肉?减肥和血型有关?
长江云 2023-06-10
-
固定资产卡片标签样式(跑跑卡丁车莫格瑞军团兵卡片)|当前速递
2023-06-10
-
二十碳五烯酸需求量(二十碳五烯酸) 环球观点
互联网 2023-06-10