Linux LED子系统详解 世界新要闻
2023-06-11 15:53:07来源: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子系统详解 世界新要闻
- 6月10日起12306可以在线选火车铺位
- 高盛:明年美国经济衰退的可能性下降主要有两个原因
- 世界关注:a股b股h股的区别 A股B股H股有什么区别
- 报道:得不到就毁掉!租客拿到6万补偿后“毁坏式”退房 被判赔偿9万元!
- 专家分析丨日本一意孤行强推排“核”入海 贻害全球
- 全球速看:少先队员代表主要事迹(少先队员主要事迹1500)
- 中国首座大型区域综合性非遗馆将在杭开馆-世界新视野
- 热点聚焦:羽化大帝(羽化)
- 天天观速讯丨兰州榆中古稀村书记:当村干部不能怕得罪人更不能当老好人
- 天天快讯:野竹有什么用处_野竹攒石生下一句
- 全球热点评!国家乡村振兴局开展农村厕所革命“提质年”
- 环球观察:高考生中午睡过头,热心外卖小哥及时将其送到考场
- 跖疣就是hpv携带者吗_脚上长的跖疣怎么办 天天消息
- 滚动:英雄联盟屏幕锁定了怎么办鼠标不能移动屏幕(英雄联盟屏幕锁定了怎么办)
- 全球动态:交通银行手机客户端,交通银行手机客户端收支账本怎么删除记录
- 声援传奇,米兰中场阿德利晒出马尔蒂尼获欧洲最佳经理人奖项照片 环球速递
- 国际人士纷纷表示中国是世界经济增长重要引擎 当前信息
- 热门看点:注意防范!明后两天洛阳将有强对流天气
- 小学一年级家长会家长发言稿300字(小学一年级家长会家长发言稿)
- 芯片的战争 独家
- 古老沣河涌动新活力
- 一片冰心在玉壶用了什么样的修辞手法(一片冰心在玉壶修辞手法) 天天聚看点
- 霍尊前女友被移交检方,为900万搭上一生,小作文以后不好使了?-天天播资讯
- 【世界速看料】印尼华人如何看中国?历经数百年的屠杀和同化,印尼华人对中国还有感情吗?
- 头条焦点:二氯甲烷沸点多少度(二氯甲烷沸点)
- 动态焦点:什么叫劳动工伤
- 环球最新:避孕药一般什么时候吃(避孕药什么时候吃有效)
- 世界新资讯:中国首座大型区域综合性非遗馆将在杭开馆
- 兰州八门拳:闪耀西北“小”拳种