有时候开机时需要设置LED常量,或者LED间隔多少毫秒进行闪烁等配置
设置LED定时闪烁
1.修改以下设备树文件
aml-comp/kernel/aml-5.4/arch/arm64/boot/dts/amlogic/sc2_s905x4_ah212_linux.dts
2.在leds中配置LED节点信息
leds {
compatible = "gpio-leds"; // LED 节点使用了 gpio-leds 驱动程序,这意味着它是一个使用 GPIO 引脚控制的 LED 设备
sys_led { // 子节点 sys_led
label = "sys_led"; // LED 设备的标签,用于标识该设备,在/sys/class/leds/xxxx中
gpios = <&gpio GPIOD_11 GPIO_ACTIVE_LOW>; // LED 设备使用的 GPIO 引脚的编号和属性。
default-state = "on"; // LED 设备的默认状态 on : 开启, off : 关闭
linux,default-trigger = "timer"; // LED 设备的默认触发器,可以查看 https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/common.yaml
led-pattern = <250 250>; 如果设置了“timer”它表示属性 `delay_on` 和 `delay_off`,它们分别表示 LED 灯保持亮的时间和灭的时间
};
state_led { // 子节点 state_led,
label = "state_led";
gpios = <&gpio GPIOD_10 GPIO_ACTIVE_LOW>;
default-state = "off";
};
};
3.添加gpio-led选项(以S905Y4为例)
a.查看leds_gpio驱动Makefile
aml-s905x4-androidr/common/drivers/leds/Makefile
查看编译选项
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o //把gpio-led编入kernel
b.查看驱动编译Makefile
aml-s905x4-androidr/common/drivers/Makefile
查看led的编译选项
obj-$(CONFIG_NEW_LEDS) += leds/ //将led编入kernel
c.确定以下配置文件的配置
common/arch/arm64/configs/meson64_a64_R_defconfig
确定两个选项配置为y,如果没有可以增加
# 添加gpio-led编译选项
CONFIG_LEDS_GPIO=y
CONFIG_NEW_LEDS=y
对源码感兴趣的可以去 yocto-dunfell-202302-bsp/aml-comp/kernel/aml-5.4/drivers/leds 目录中学习
led-class.c 是主要入口
led-core.c 是LED的核心程序
trigger/ 是所有LED的触发器
timer 触发器的源码在 trigger/ledtrig-timer.c 中
参考文档
- leds-gpio.txt gpio-leds驱动程序说明
- common.yaml 常见的led属性
- leds-trigger-pattern.txt LED模式触发的格式
- Linux下的led子系统分析(一)
- Linux下的led子系统分析(二)

本文详细指导如何在AML-S905X4平台上设置LED定时闪烁,包括修改设备树文件、配置LED节点、添加gpio-led驱动选项以及参考相关文档。
1668

被折叠的 条评论
为什么被折叠?



