[英]Device Tree Overlay naming
尝试在 Beaglebone black 上加载设备树覆盖时,我看到了一个奇怪的问题。 加载程序无法加载 .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
感谢您的帮助!
看起来设备树加载器有点简单,并且假设文件名在其名称中正好有16 个字符。 如果设备树片段没有 16 个字符的名称,则在加载片段时可能会发生各种级别的填充或截断。
正确的做法是将上述片段重命名为:
TEST-DT-12345678-00A0.dtbo
(-00A0.dtbo 前的 16 个字符)
然后这将正确加载设备树加载器修改名称。
另外,请注意尝试加载带有路径的文件:
echo /lib/firmware/TEST-DT-12345678-00A0.dtbo > /sys/devices/bone_capemgr.*/slots
路径中的字符将计入 16 个字符的预期名称长度,导致设备树加载器尝试加载片段:
TE-00A0.dtbo
如果您在尝试加载片段时遇到“没有这样的文件或目录”错误,请务必检查 dmesg!
请注意,Device Tree Overlays 现在已过时,应该使用 Uboot 来配置 boot 或 config-pin 命令。
检查这里部分:插槽文件去哪里了? https://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
UART4 配置引脚脚本示例
#!/bin/sh
config-pin p9.11 uart
config-pin p9.13 uart
stty -F /dev/ttyO4 sane
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.