设备树叠加命名

时间:2016-04-28 16:53:03

标签: linux embedded beagleboneblack device-tree

我尝试在Beaglebone黑色上加载设备树覆盖时遇到了一个奇怪的问题。加载程序无法加载.dtbo文件,因为它正在查找名称与已被告知要加载的名称不同的文件。 .dts文件使用以下命令在同一设备上编译:

dtc -O dtb -o TEST-DT-00A0.dtbo -b 0 - @ TEST-DT-00A0.dts

编译完成没有错误,但是当我尝试使用:

加载二进制文件时

echo TEST-DT-00A0.dtbo> /sys/devices/bone_capemgr.9/slots

我看到了错误:

-bash:echo:写错误:没有这样的文件或目录

使用dmesg检查失败的原因显示加载程序正在尝试加载名称(-0插入文件名)的文件:

TEST-DT-0-00A0.dtbo

果然,如果我将.dtbo文件重命名为加载程序所需的名称,它会正确加载并且工作正常。

有没有人知道为什么额外的' -0'是由设备树加载器添加到名称?在第二个Beaglebone上,加载器期望文件名为TEST-DT-00-00A0.dtbo(名称中添加了-00)。

如果有帮助,请点击uname的输出:

Linux beaglebone 3.8.13-bone79#1 SMP Tue Oct 13 20:44:55 UTC 2015 armv7l GNU / Linux

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

设备树加载器看起来有点简单,并假设文件名名称中的正好 16个字符。如果设备树片段没有16个字符的名称,则在加载片段时可能会出现各种级别的填充或截断。

然后正确的事情就是将上面的片段重命名为:

TEST-DT-12345678-00A0.dtbo

(-00A0.dtbo之前的16个字符)

然后,这将正确加载设备树加载器重命名。

另外,要小心尝试使用路径加载文件:

echo /lib/firmware/TEST-DT-12345678-00A0.dtbo> / SYS /装置/ bone_capemgr。* /槽

路径中的字符将计入16个字符的预期名称长度,导致设备树加载程序尝试加载片段:

TE-00A0.dtbo

如果您在尝试加载片段时遇到“没有此类文件或目录”错误,请务必检查dmesg!

答案 1 :(得分:0)

请注意,Device Tree Overlays 现在已过时,应该使用 Uboot 在启动时进行配置或使用 config-pin 命令。

查看这里部分:slots 文件去哪儿了? https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays

UART4 config-pin 脚本示例

#!/bin/sh
config-pin p9.11 uart
config-pin p9.13 uart
stty -F /dev/ttyO4 sane