使用设备树覆盖在 beaglebone black 上更改心跳

Posted

技术标签:

【中文标题】使用设备树覆盖在 beaglebone black 上更改心跳【英文标题】:Change hearbeat led on beaglebone black with device tree overlay 【发布时间】:2013-08-25 15:47:26 【问题描述】:

我正在使用带有 Robert Nelson 最新内核的 D​​ebian wheezy 文件系统。 我想使用设备树覆盖来禁用心跳。

我知道有更简单的方法可以做到这一点,但我只对使用覆盖来禁用心跳的答案感兴趣。

我可以实现此目的的一种方法是更改​​ am335x-boneblack.dts 中的 gpio-leds,led0 叶 从: linux,默认触发器=“心跳”; 到 linux,default-trigger = "none";

然后编译设备树并重新启动。

但是,如果我尝试使用以下叠加层实现相同的操作,则在我成功应用带有 echo > $SLOTS 的叠加层后,心跳 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";
            ;
        ;
    ;
;
;

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

有一个 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

通过查看“已加载”字段,您可以看到服务脚本位于 /lib/systemd/system/leds.service,“进程”字段表示此服务运行命令“/usr/bin /led-config 启动”。

查看这个文件“/usr/bin/led-config”你会发现它是一个从文件“/etc/default/leds”加载默认值的shell脚本:

#file format: name trigger
beaglebone::usr0 heartbeat

因此,您可以单独保留设备树文件并在此处设置默认值,或者使用以下命令禁用此服务

systemctl disable leds.service

【讨论】:

感谢您的信息。但是 leds.service 守护程序没有在 debian 上运行。其次,我试图理解为什么当我重新编译设备树并重新启动时禁用 LED 会起作用,但当我在设备树覆盖中使用相同的代码时不起作用。

以上是关于使用设备树覆盖在 beaglebone black 上更改心跳的主要内容,如果未能解决你的问题,请参考以下文章

Python中的Beaglebone Black看门狗

ioctl“无法发送 spi 消息:无效参数”Beaglebone Black

Beaglebone Black教程Beaglebone Black的引脚分配

Beaglebone Black GPIO控制运行步进电机的速度非常慢。我怎样才能提高速度?

在 Beaglebone Black 上启用 UART

提高 Beaglebone Black ADC 采样率?