为什么有些嵌入式主板需要设备树而有些则不需要?

时间:2014-08-25 14:14:43

标签: linux linux-kernel embedded-linux boot device-tree

这可能是一个非常基本的问题,但我真的很困惑这个。

某些主板在启动过程中不需要设备树dtb文件,如beagleboard,有些主板应该像启动过程一样在启动过程中使用dtb文件。

这个假设是否正确?

另外,在启动过程中。引导加载程序何时获取dtb文件并加载它?

任何参考知道整个过程?

2 个答案:

答案 0 :(得分:0)

Linux正在慢慢转向设备树。这一切都始于PowerPC,现在ARM已经拥有它。这是一种传递系统信息的更好方法,而不是使用例如ARM中的ATAGS。

由于您提到了Xilinx的Zynq,因此引导加载程序(u-boot)被分配了从非易失性存储区域(在本例中为SD卡)读取内核和设备树的任务。内核和设备树将传递给引导命令。

你应该read more关于Zynq和u-boot来理解它。找到“设备树”子部分。

答案 1 :(得分:0)

传统上,你必须写一个"电路板文件" (在C中)为每块电路板描述电路板上哪些元件以及它们在何处连接。也就是说,程序描述。

使用设备树,您可以使用声明性方法来描述HW,并让内核调用相应的设备注册函数。

因此,对于较旧的电路板,如果电路板文件可用(在Beagleboard的情况下为arch/arm/mach-omap2/board-omap3beagle.c),则不需要设备树。但是如果没有电路板文件而没有设备树,内核无法知道它运行的硬件类型。

设备树blob(dtb)由引导加载程序加载到RAM中,然后通过预定的寄存器通知内核。