Linux内核dtb vs dtbo

Rau*_*ulp 7 linux-device-driver linux-kernel device-tree

我正在为设备开发一个设备驱动程序.我想知道除了编写设备驱动程序之外什么以及何时需要它 - 设备树blob(dtb)或设备树覆盖(dtbo).

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

对于静态构建dtb,除了设备驱动程序的Kconfig之外,我还需要处理dtb文件的任何Kconfig.

idl*_*ead 1

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

设备树覆盖需要用户空间的支持,以覆盖管理器的形式提供,该支持知道在运行时加载哪些覆盖。除非您的设备处于非常动态的环境中,并且可能会消失,否则在大多数情况下,您需要一个简单的硬编码设备树。

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

例如,请参阅一系列SoC 特定的设备树1、2、3中的兼容注册和相应的硬件描述。该驱动程序通过在兼容标志后面添加特定于 SoC 的功能,在所有这些 SoC 上运行。