Linux内核dtb与dtbo的区别

12

我正在为设备开发一个设备驱动程序。我想知道除了编写设备驱动程序之外,何时需要使用设备树 blob(dtb)或设备树叠加(dtbo)。

是否可以在使用 dtc 编译器编译 dtb 并测试驱动程序(动态可加载的)之后,动态插入 dtb。

对于静态构建 dtb,除了设备驱动程序的 Kconfig,是否还有任何需要注意的 dtb 文件的 Kconfig。


我认为下面链接的内核文档应该能帮助你理解:http://lxr.free-electrons.com/source/Documentation/devicetree/overlay-notes.txt,同时也可以参考这个链接:https://gist.github.com/bodokaiser/6854708。看起来DTBO与DTB相似,唯一的区别是它可以在运行时添加节点。我对这些细节不是很了解。 - ART
1个回答

1

您没有提到这是哪个平台,但我假设它是一个广泛使用设备树进行硬件描述的架构之一,如ARM、PPC,并且您实际上需要设备树。

设备树叠加需要来自用户空间的支持,以覆盖管理器的形式在运行时了解要加载的覆盖。除非您的设备处于非常动态的环境中,否则对于大多数情况,您需要一个简单的硬编码设备树。

编写驱动程序后,您需要定义兼容属性,以便在何时加载此驱动程序时告知内核,然后在arch/<foo>/boot/dts/*/*下的设备树(.dts/.dtsi)文件中添加一个节点,最好描述您的板子。

例如,请查看此兼容的注册链接以及在一堆特定于SoC的设备树1, 2, 3中对应的硬件描述。这个驱动程序通过在兼容标志后面使用特定于SoC的功能来适用于所有这些SoC。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接