Linux LED子系统详解 世界热议
2023-06-10 16:43:47 来源: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子系统详解 世界热议
- 天津静海钢管产业如何破解“成长的烦恼”-世界资讯
- 每日视讯:@考生和家长 涉高考诈骗重要提醒!
- 广州番禺公安通报“男子在女厕门口偷拍”:已抓获,行拘十天
- 环球关注:是喝高度还是低度?一位酿酒师告诉你,两者白酒的区别
- 这个全国区县级首创活动在东安湖体育公园开幕 世界最资讯
- 昌都宝藏男孩,完成了5400公里的G318骑行 天天实时
- 全球观热点:2023年长白山之夏“鸭绿江文化旅游季”大幕开启
- 短讯!小儿鹅口疮怎么治好得快,小儿鹅口疮处理方法
- 50岁大叔当主播,养活一个剧团!
- 提高科学素养 “深海发现之旅”在国家海博馆启动 当前短讯
- 天天短讯!六祖慧能不识字却懂佛理,不会下棋却懂棋理,他是如何做到的?
- 每日视点!自查情况反馈公文模板_自查情况
- 夏日消费旺季来临 啤酒板块低估值引人关注
- 杨幂粉色连衣裙气质优雅,造型师表现不错!
- 福能股份:6月9日融资买入1052.46万元,融资融券余额2.77亿元
- 环球头条:河南各地迎难而上全力抢收 多方聚力确保夏粮应收尽收
- 一口咬掉牛尾巴打一字猜一个字_一口咬掉牛尾巴打一字
- 当前热文:5-7!德约科维奇遗憾输掉一盘,1-1!阿尔卡拉斯振臂庆祝,终于发力
- 四川:1-4月新增减税降费及退税缓费超200亿元
- 环球快看:唐氏综合征国际脸图片(唐氏综合症国际脸)
- 工程师评审多少钱_工程师评审
- [路演]致欧科技:23H1预计扣非净利1.81亿元-1.91亿元 同比增长71.49%-80.96%|全球播资讯
- 中央气象台发布暴雨蓝色预警 广西湖南福建等局地有大暴雨