最新快讯!Linux LED子系统详解

2023-06-11 03:19:18 来源: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

审核编辑:汤梓红

标签

大米等库存充足!宁波生活必需品市场供应总体平稳有序

宁波市商务局9月14日晚间发布的重点生活必需品市场供应情况保障工作日报显示,我市大米、蔬菜、副食、粮...

2022-09-15 17:27:29

全国新能源汽车下乡活动在昆山启动 将发放500万元“红包”

6月17日,由中国汽车工业协会、省工信厅、省农业农村厅、省商务厅、省发改委、苏州市政府、新华日报社、...

2022-06-20 16:48:35

安阳本土确诊病例上升至26例

  中新网安阳1月10日电 (杨大勇)10日,河南省安阳市召开新冠肺炎疫情防控工作第二场新闻发布会通报称...

2022-01-10 15:22:56

3次推迟婚期 满洲里抗疫民警兑现承诺:“我回来娶你了!”

  (抗击新冠肺炎)3次推迟婚期 满洲里抗疫民警兑现承诺:“我回来娶你了!”  中新网呼伦贝尔1月10...

2022-01-10 15:22:56

上海公安民警在岗位上迎接2022年“中国人民警察节”

  中新网上海1月10日电(记者 李姝徵)“我志愿成为中华人民共和国人民警察,献身于崇高的人民公安事业...

2022-01-10 15:22:55

郑州核酸检测为中小学生开辟“绿色通道”

  (抗击新冠肺炎)郑州核酸检测为中小学生开辟“绿色通道”  中新网郑州1月10日电(杨大勇)“学生不用...

2022-01-10 15:22:55

反扒便衣警察“小曹”:藏在人海中的隐形“守护者”

  小曹说,他现在理解了师父当年如何历练出一副“火眼”,碰见的贼多了,案子经手的多了,自然就有了...

2022-01-10 15:22:54

哥哥移植肾脏给病重弟弟 已在上海顺利康复

  中新社上海1月10日电 (陈静 王根华)在上海武警服役的弟弟被尿毒症击倒,哥哥义无反顾地捐献出自...

2022-01-10 15:22:54

网友与人裸聊被敲诈10万余元 被告人获刑5年

  中新网长春1月10日电 (谭伟旗)当下,新型网络诈骗案件已较为普遍,由于网络上身份的不确定性、语言...

2022-01-10 15:22:53

1月10日起天津市暂停开展旅行社旅游业务活动

  中新网1月10日电 据天津市文旅局官网消息,天津市文化和旅游局10日发布紧急通知称,即日起,天津市...

2022-01-10 15:22:53
x 广告
x 广告

Copyright  2015-2022 人人粮油网版权所有  备案号:粤ICP备18023326号-36   联系邮箱:8557298@qq.com