当前位置:网站首页>RK3566添加LED
RK3566添加LED
2022-07-05 13:37:00 【火柴棍mcu】
在主板上设计了5个LED,其中2个绿色led用于运行指示,一个rgb灯用状态指示,分别用了5个GPIO口控制LED,均为高电平亮。
linux系统已经自带了leds-gpio的驱动,只需在内核中使能驱动即可。
LED驱动使能
一般内核中已经使能了LED Support for GPIO connected LEDs:
在DTS文件中增加LED的描述:
leds{
compatible = "gpio-leds";
user1_led: user1 {
label = "user1";
gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
default-state = "on";
};
user2_led: user2 {
label = "user2";
gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
blue_led: blue {
label = "blue";
gpios = <&gpio4 RK_PC0 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
green_led: green {
label = "green";
gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
red_led: red {
label = "red";
gpios = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
};
此描述添加在根节点下。
调试
修改DTS后编译内核,将boot.img烧写进主板,主板启动后,进入到/sys/class/leds/目录下查看led是否添加成功:
[[email protected]:/]# cd /sys/class/leds/
[[email protected]:/sys/class/leds]# ls
blue green mmc0:: red user1 user2
5个led已经添加成功了。
向led灯名称下的brightness写非0或0的值,相应的led就会亮、灭。
[[email protected]:/sys/class/leds]# echo 1 > user1/brightness
[[email protected]:/sys/class/leds]# echo 0 > user1/brightness
遇到的问题
第一次修改DTS后将boot.img烧写进主板,进入到/sys/class/leds/目录下,没有看到添加的led,查看开机日志:
[[email protected]:/]# dmesg | grep leds
[ 1.318922] leds-gpio: probe of leds failed with error -16
显示leds-gpio探测失败,反复检测dts文件,没有发现错误。
查看gpio使用情况:
gpiochip2: GPIOs 64-95, parent: platform/fe750000.gpio, gpio2:
gpio-73 ( |xgpio-pin ) out lo
发现xgpio-pin与user1定义的gpio冲突了。
查找dts文件中关于gpio-73相关的描述:
WORKLED {
compatible = "9tripod,xgpio";
pinctrl-names = "default";
def_val=<0>;
pinctrl-0 = <&io2_b1>;
gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>;
};
WORKLED使用了此GPIO,将此描述删除,再次编译内核,将boot.img烧写进主板,led就添加成功了。
遗留问题
虽然user1配置了默认触发为heartbeat,但是user1并没有自动熄灭,可能还有一些heartbeat的一些功能没有配置好。
边栏推荐
- Redis6 transaction and locking mechanism
- [server data recovery] a case of RAID5 data recovery stored in a brand of server
- The development of speech recognition app with uni app is simple and fast.
- 使用Dom4j解析XML
- Integer = = the comparison will unpack automatically. This variable cannot be assigned empty
- 龙芯派2代烧写PMON和重装系统
- Idea设置方法注释和类注释
- leetcode 10. Regular expression matching regular expression matching (difficult)
- 个人组件 - 消息提示
- Cloudcompare - point cloud slice
猜你喜欢
Win10——轻量级小工具
C# 对象存储
These 18 websites can make your page background cool
[daily question] 1200 Minimum absolute difference
CAN和CAN FD
Datapipeline was selected into the 2022 digital intelligence atlas and database development report of China Academy of communications and communications
今年上半年,通信行业发生了哪些事?
Huawei push service content, read notes
DataPipeline双料入选中国信通院2022数智化图谱、数据库发展报告
What is a network port
随机推荐
一网打尽异步神器CompletableFuture
Can and can FD
Huawei push service content, read notes
ETCD数据库源码分析——集群间网络层客户端peerRt
CAN和CAN FD
Programmer growth Chapter 8: do a good job of testing
DataPipeline双料入选中国信通院2022数智化图谱、数据库发展报告
[deep learning paper notes] hnf-netv2 for segmentation of brain tumors using multimodal MR imaging
leetcode 10. Regular Expression Matching 正则表达式匹配 (困难)
[MySQL usage Script] catch all MySQL time and date types and related operation functions (3)
Operational research 68 | the latest impact factors in 2022 were officially released. Changes in journals in the field of rapid care
Wonderful express | Tencent cloud database June issue
Don't know these four caching modes, dare you say you understand caching?
Aikesheng sqle audit tool successfully completed the evaluation of "SQL quality management platform grading ability" of the Academy of communications and communications
49. 字母异位词分组:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。
Flutter draws animation effects of wave movement, curves and line graphs
【MySQL 使用秘籍】一網打盡 MySQL 時間和日期類型與相關操作函數(三)
go map
"Baidu Cup" CTF competition in September, web:upload
Record in-depth learning - some bug handling