这可能是一个非常基本的问题,但我真的很困惑这个。
某些主板在启动过程中不需要设备树dtb文件,如beagleboard,有些主板应该像启动过程一样在启动过程中使用dtb文件。
这个假设是否正确?
另外,在启动过程中。引导加载程序何时获取dtb文件并加载它?
任何参考知道整个过程?
答案 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中,然后通过预定的寄存器通知内核。