设备树覆盖命名
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/插槽
我看到错误:
-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 10 月 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
如果您在尝试加载片段时遇到 'No such file or directory' 错误,请务必检查 dmesg!
请注意,Device Tree Overlays 现在已过时,Uboot 应该用于在启动时或 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
尝试在 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/插槽
我看到错误:
-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 10 月 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
如果您在尝试加载片段时遇到 'No such file or directory' 错误,请务必检查 dmesg!
请注意,Device Tree Overlays 现在已过时,Uboot 应该用于在启动时或 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