Linux LED子系统详解|当前观点
2023-06-10 19:19:55来源: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子系统详解|当前观点
- 卖红酒背熟10句开场白话术?_全球快播
- 高质量发展调研行 | 在智慧港口见证大湾区经济活力——广州南沙港走访一线见闻
- 薇奥兰特普拉西多壁纸(薇奥兰特 普拉西多) 全球微头条
- 信息:广州市人大代表张忠德:打造中医药“医院—社区”老年康养服务新模式
- 环球热点!天津夏季达沃斯论坛期间将举办主题城市论坛
- 中超:武汉三镇平山东泰山-独家焦点
- 中经评论:以“村BA”点燃乡村活力
- 青岛市现代海洋英才② | 薛长湖:深耕海洋水产加工,引领产业技术进步
- 聚焦世遗 | 多图集锦来啦!“文化和自然遗产日”主题宣传活动启动|资讯
- 逮捕中社会危险性条件核心地位逻辑证成_当前讯息
- 如何促进新型研发机构高质量发展?广州这样做
- 今日最新!qq空间关闭申请注销登录(qq空间关闭申请登录)
- 年内定增募资排行榜:7家公司募资超百亿元
- 【世界快播报】网坛新一代缺乏大心脏!手脚都抽筋,阿卡赛后坦言对战小德太紧张
- 长安大学学子以“三色”模式助力陕西乡村振兴
- 业绩之外,中兴通讯的ESG底色|世界热讯
- 斗罗:修罗唐三差点沦为冷血动物,小舞将其唤醒,比比东为国捐躯
- 每日看点!endurance fuels_endurance
- 每日聚焦:发展中国家能源发展与产业政策研修班在兰开班
- 环球消息!创造安全、友好的内容分发平台,Meta 的推特竞品截图曝光
- 当前消息!夏收攻坚战|郑州麦收基本结束 夏玉米播种154万余亩
- 【独家焦点】地产还在暴雷:富豪开始逃离,信托开始裁员
- 阳极氧化处理保护方法_阳极氧化处理
- 特稿:低碳、绿色、宜居——中国经验助力非洲国家可持续发展_天天观天下
- 焦点信息:江上词综 全二册_关于江上词综 全二册简述
- 一个“双碳”时代的全球共识,光伏巨头阿特斯IPO, 鼎晖为最大外部股东
- 美国国防部突然为中国辟谣,背后暗藏玄机!|快看点
- 899元,小米MIJIA智能音频眼镜开售,是眼镜也是耳机
- 热门:首场“浦江夜话”:践行ESG理念已成为全球金融业的“必答题”