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
审核编辑:汤梓红
关键词:
相关阅读
-
06-11
-
06-11
-
06-11
-
06-11
-
06-11
推荐阅读
-
银鹏控股公司:业务交流促提升互学互鉴共进步|世
3月2日,银鹏控股公司董事长刘懿婷带队前往中粮集团期货公司进行业务学习和交流。中粮期货公司从业多年、具有丰富实战经验的风险管理专家现场更多
2023-03-07 17:52:41
-
我国首个万吨级钠离子电池材料项目在山西综改区开
山西晚报讯(记者温丽芳通讯员张晓茹)日前,总投资约11亿元的山西华钠铜能(碳能)科技有限责任公司万吨级钠离子电池正(负)极材料项目在山更多
2023-03-07 11:51:14
-
建行阳江市分行:践行金融惠民理念-全球关注
2月24日,随着客户办妥抵押登记手续并成功放款,标志着阳江市建行“带押过户”业务取得历史性突破。根据中国人民银行发布《关于鼓励推广二手房更多
2023-03-07 11:53:21
-
焦点简讯:证监会同意三超新材向特定对象发行股票
中证网讯(记者昝秀丽)证监会网站3月6日消息,证监会发布关于同意南京三超新材料股份有限公司向特定对象发行股票注册的批复。【来源:中国证更多
2023-03-07 09:57:39
-
美股航空股6日全线走低
中证网讯(记者赵中昊)当地时间周一(3月6日),美股航空股全线走低。据wind数据,截至收盘,波音跌1 49%,美国航空跌1 47%,达美航空跌1%,更多
2023-03-07 09:43:44
-
世界热资讯!晋钢控股集团荣登2022山西省品牌十强
近日,“品牌强国(龙城)论坛”在太原举行,发布“2022中国上市公司品牌500强”以及“2022山西省品牌100强”。晋钢控股集团以218 9亿元的品牌更多
2023-03-06 17:38:52
-
手绘报告:2023预期目标
【来源:中国政府网】声明:转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请作者持权属证明发至邮箱newmedia@xx更多
2023-03-06 16:46:31
-
惠州首笔数字人民币缴纳税费业务成功落地
3月1日,TCL科技集团财务有限公司拿到了全市第一张使用数字人民币账户缴纳税款和非税收入的完税凭证,标志着惠州市首笔数字人民币缴纳税费业务更多
2023-03-06 11:50:50
-
理财