Linux LED子系统详解
来源:jf_30051736 时间:2023-06-11 06:09:06
(资料图片仅供参考)
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子系统详解
- 页尾注释怎么加(注释怎么加)
- 肠悔青!我花499元买了台小屏平板,结果体验还不如用了5年的小米平板4
- 洋槐树枝熬水有什么功效(洋槐树)-即时焦点
- 环球讯息:关于铁路计次票、定期票 如何购买使用
- 朝阳沟歌词是什么意思_朝阳沟歌词|新视野
- 天天热门:《波斯语课》《1917》后又一部高分战争佳作即将上映
- 团伙设下“首付购车”骗局,黄石两家4S店掉进陷阱 全球报资讯
- 相似三角形的性质ppt课件 相似三角形的性质
- 天天观速讯丨马自达cx-4和cx30(马自达cx4和cx30有什么区别?)
- 导演韩延:不要责怪观众挑剔,是很多创作者信誉破产了
- 信用就医“亲情付”上线 老年人和未成年人也能享“先诊疗 后付费”
- 王力宏方发声否认李靓蕾在美国胜诉
- 天天微资讯!怎么查看微信删除的聊天记录电脑(怎么查看微信删除的聊天记录)
- 淮安多措并举做好“三夏”服务工作
- 速冻鸡怎么炖好吃?
- 【全球报资讯】国家防总启动防汛四级应急响应,派工作组赴广西福建指导救灾
- 天天热门:蓝牙适配器怎么连接电视机(蓝牙适配器)
- 伊藤美诚戴奥运金牌回母校,豪言:巴黎夺冠!79岁爷爷为她立碑!|今日热文
- 首台套50万千瓦冲击式水电机组项目开工
- 定了!皇马第二签锁定中场万金油,德国国脚登陆伯纳乌倒计时
- 少恭和cb是谁 少恭和cb在一起
- 穿越岁月的热情与温暖 环球新动态
- 3亿珠宝,9亿豪宅,67亿身家,这些港圈老牌美人晚年真有钱-环球最资讯
- 自荐信最后要写此致敬礼吗?
- 62岁老伯因血栓双目几近失明,上海医生做视神经鞘“开窗”手术减压
- 网坛新一代缺乏大心脏!手脚都抽筋,阿卡赛后坦言对战小德太紧张
- 热文:张建坤深入高考点巡查护考护安情况
- 国家防总针对南方地区持续降雨启动防汛四级应急响应 热点在线
- 延边医院:“医”暖游客心 一面来自千里之外的锦旗|天天快报
x
广告
x
广告