Summary
我目前正在为定制板编译 Linux 内核(内核、模块和 DTB)以及一些定制驱动程序。有时,我会编译内核并意识到 DTB 文件中的兼容性字符串不是自定义驱动程序正在寻找的内容。现在,我可以解决此问题的唯一方法是修改 DTS 或内核驱动程序,使字符串匹配,然后再次重新编译内核。有没有办法可以编辑 DTB 文件来更新兼容性字符串?
失败的尝试
我已经能够使用以下命令将 DTB 文件反编译回 DTS 文件:
dtc -I dtb -o <filename>.dts -<filename>.dtb
但是,如果我修改 DTS 文件并使用以下命令重新编译:
dtc -I dts -o <filename>.dtb -<filename>.dts
内核不会加载重新编译的DTB文件
只是想用两年多的经验来更新这个主题。
Linux存储库中的DTS文件是DTS的混合andC 预处理器指令(#include、#define 等)。因此,当编译原始 DTB 时,预处理器会链接到引用的文件以创建纯 DTS 文件。dtc
将单个 DTS 文件转换为 DTB 文件。
所以如果你想修改内核DTS文件并编译它,那么你有两个选择:
- 赶紧跑
make dtbs
它会自动处理所有这些
- 手动运行预处理器(
cpp -nostdinc -I <include dir> -undef -x assembler-with-cpp ...
)然后编译输出dtc
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)