使用设备树叠加层更改Beaglebone Black上的心跳LED

5
我正在使用Debian Wheezy文件系统和Robert Nelson的最新内核。 我想使用设备树叠加来禁用心跳LED。
我知道有更简单的方法来做到这一点,但我只对使用叠加来禁用心跳LED的答案感兴趣。
我可以通过更改am335x-boneblack.dts中gpio-leds,led0节点中的内容来实现这一点: 从: linux,default-trigger = “heartbeat”; 到 linux,default-trigger = “none”;
然后编译设备树并重新启动。
但是,如果我尝试使用以下叠加实现相同的功能,在成功应用叠加后,心跳LED仍然继续闪烁。我做错了什么?
/dts-v1/;
/plugin/;
/
{
    compatible = "ti,beaglebone", "ti,beaglebone-black";
part-number = "pru";
version = "00A0";
fragment@0
 {
    target = <&ocp>;
    __overlay__
    {
         gpio-leds
        {
            compatible = "gpio-leds";
            pinctrl-names = "default";
            pinctrl-0 = <0x3>;
             led0
             {
                label = "beaglebone:green:usr0";
                gpios = <0x5 0x15 0x0>;
                linux,default-trigger = "none";
                default-state = "off";
            };
        };
    };
};
};
2个回答

0

有一个systemd服务,leds.service,它覆盖了这个LED的设备树设置(谁知道为什么)。

要查看服务的状态,请运行

root@beaglebone:~# systemctl status leds.service

这将输出

leds.service - Angstrom LED config
          Loaded: loaded (/lib/systemd/system/leds.service; enabled)
          Active: active (exited) since Sat 2000-01-01 18:33:24 UTC; 13 years 7 months ago
          Process: 125 ExecStart=/usr/bin/led-config start (code=exited, status=0/SUCCESS)
          CGroup: name=systemd:/system/leds.service

通过查看“Loaded”字段,您可以看到服务脚本位于/lib/systemd/system/leds.service,并且“Process”字段显示此服务运行命令“/usr/bin/led-config start”。
查看文件“/usr/bin/led-config”,您会发现它是一个shell脚本,从文件“/etc/default/leds”中加载默认值:
#file format: name trigger
beaglebone::usr0 heartbeat

所以,您可以让设备树文件保持不变并在此处设置默认值,或使用以下方法禁用此服务

systemctl disable leds.service

感谢提供的信息。然而,在Debian上,leds.service守护进程没有运行。其次,我正在尝试理解为什么在重新编译设备树并重新启动时禁用LED有效,但在使用相同代码的设备树叠加时无效。 - Ray

0

在我看来,使用覆盖层禁用心跳非常低效!不如尝试在bash命令中键入:“echo none > /sys/devices/ocp.3/gpio-leds.8/beaglebone\:green\:usr0/trigger”,然后要重新打开它们,请键入“echo "heartbeat" > trigger”(首先检查文件路径)- 在Debian Wheezy A5A上测试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接