当前聚焦: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子系统详解
- 社交综艺为何能成爆款
- 中阿两国央行续签双边本币互换协议 有效期三年_全球速看
- 百度搜索风云榜明星(百度搜索风云榜)
- 刘国梁提拔8人入围国家队,15岁小张怡宁入选,陈幸同王一迪师妹
- 环球今日讯!考生腿部术后行动不便 多方接力暖心送考
- 当前短讯!崔永辉走访调研部分中央驻厦单位
- 每日聚焦:领益智造:截至6月9日,公司股东总户数为203,136户
- 当前热文:襄阳6家企业签约入驻军创园地
- 交口县:保护古树名木 守好绿色“活文物” 每日速讯
- 高考落幕——
- 极目时评丨环卫母亲与高考儿子相拥而泣刷屏,普通人改变命运的努力打动人心_今日看点
- 安装系统时蓝屏的原因有哪些
- 杜甫是个怎么样的人?他为什么被称为诗圣? 世界即时
- 全球观察:和钱有缘的5个生肖,一时缺钱,半生富裕,越老越富,看看有你吗
- “这堂电影体验课超乎想象!”近300名广东学子在文博会拥抱光影新科技 环球看热讯
- 2015年天猫双十一如何免费抽取千万流量和现金话费? 世界百事通
- 比利时将向乌克兰提供新一批军事支持 时讯
- 环球动态:今天来郑州大剧院,看雕塑展免费听4场主题音乐会
- 组图|2023高考结束!青春不散场 未来皆可期 当前快报
- 焦点讯息:我们的法则在线观看_我们的法则
- 每日视讯:新入职员工工作总结精选文档.doc
- 全球资讯:还真要注意!身体这几项不达标,将无法参军
- 曹云金前任江若琳官宣产子,老公卖生煎包身价超十亿,两人太幸福
- cs序列号查询(cs 序列号)
- 今日看点:王欣瑜晋级法网女双决赛
- 欧盘欧元/美元汇率走势分析(2023年6月9日)
- 150万台农业机械“上阵” 确保减损增效、高标准完成夏种作业
- 不用鼠标怎样_世界最新
- 马斯克嘲讽苹果VisionPro头显 买它不如花20美元买包致幻蘑菇 今日关注