gpt4 book ai didi

linux - 设备树覆盖命名

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:53 28 4
gpt4 key购买 nike

尝试在 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: write error: No such file or directory

使用 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

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

关于linux - 设备树覆盖命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36920913/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com