This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Linux
您好!
我们将一个 LED 连接到我们尝试使用器件树中的计时器触发器进行控制的 GPIO 引脚。 计时器触发正在工作、但是 LED 的闪烁速率与活动/非活动延迟值不匹配。 这是器件树条目。
blink_led{ label ="LED_Blinky"; GPIO =<&GPIO1 19 0>; linux、default-trigger ="计时器"; 主动延迟=<250>; 非活动延迟=<250>; };
LED 会闪烁、但持续时间为1秒、而不是半秒。 如果我在/sys/class/platform/leds/LED_Blinky 下检查延迟打开和延迟关闭值、则这两个值都设置为500。 500是默认值吗? 还需要做些什么?
此致、
Tim Entinger
好的。 我不能立即理解您的回答是什么、但我现在知道了。
是的、ACTIVE_DELAY_ms 似乎仅用于 GPIO-RESTART。
我查看了 ledtrig-timer.c 中的代码、发现它将 delay_on 和 delay_off 值传递到了 LED-core.c 中的 LED_blink_setup 在 LED_BLINK 设置中、如果未传入任何值、则将 DELAY_ON 和 DELAY_OFF 值设置为500。
// if (!*delay_on &&!*delay_off ) *delay_on =*delay_off =500; led_set_software_BLINK (led_cdev,*delay_on,*delay_off );
由于我只关心启动时的闪烁速率、我创建了一个补丁、将值设置为250而不是500。 我必须进行一些测试、以查看是否可以在器件树中设置 DELAY_ON 和 DELAY_OFF。 我希望这不起作用,但我会看到。
我尝试了两种格式来设置器件树中的延迟值。 两者均不起作用、仅选择默认值。 这将使我得出结论、您只能从器件树中设置"计时器"触发值。 这似乎是疏忽、因为如果您也设置触发器、设置延迟值的理想位置将位于器件树中。 无论在哪种情况下、我尝试的都不起作用。
blink1_led{ 标签="LED_Blinky1"; GPIO =<&GPIO1 20 0>; linux、default-trigger ="定时器"; ON_DELAY =<100>; OFF_DELAY =<100>; }; blink2_led{ 标签="LED_Blinky2"; GPIO =<&GPIO1 19 0>; linux、default-trigger ="定时器"; linux、ON_DELAY ="100"; Linux、OFF_DELAY ="100"; };
[引用用户="Timothy Entinger"] linux、default-trigger ="计时器";ON_DELAY =<100>;OFF_DELAY =<100>;
[引用 user="Timothy Entinger"] linux、default-trigger ="计时器";linux、ON_DELAY ="100";linux、OFF_DELAY ="100";
默认情况下、GPIO-LED DTS 支持:
-GPIO
-标签
- linux、default-trigger
-默认状态
-保留-状态-已暂停
默认情况下不支持 on/off_delay、Linux、on/off_delay。 请参阅 Linux-kernel/Documentation/devicetree/bindings/LEDs/leds-gpio.txt
您可以自行添加这些内容。 可以使用_property_read_u32()函数。 请参阅如何使用此函active-delay"
数在 Linux-4.4.4.3.32/drivers/power/reset/gpi-restart 中将"从 dts 设置为"u32 active_delay_ms"。c 您还可以查看如何使用此函数将 dts (即 OMAP4-sdp.dts)中的"最大亮度"设置为 linux-4.4.4.3.32/drivers/LEDs/twms.c 中的最大亮度值
另请检查是否可以从用户空间设置 DELAY_ON/OFF 值、有关详细信息、请参阅以下 e2e 线程:
此致、
帕维尔