繁体   English   中英

设备树覆盖命名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM