这可能是一个非常基本的问题,但我真的很困惑。
有些主板在引导过程中不需要设备树dtb文件,比如beagleboard,而有些主板在引导过程中应该有dtb文件,比如Zynq。
这个假设是正确的吗?
另外,在引导过程中。引导加载程序何时获取dtb文件并加载它?
有没有了解整个过程的参考资料?
发布于 2014-08-26 12:14:46
Linux正在慢慢地向设备树移动。这一切都是从PowerPC开始的,现在ARM有了它。与在ARM中使用ATAGS相比,这是一种更好的传递系统信息的方法。
由于您提到了Xilinx的Zynq,bootloader (u-boot)被分配了从非易失性存储区(在本例中是SD卡)读取内核和设备树的任务。内核和设备树被传递给boot命令。
你应该通过启动Zynq和u- read more来理解它。找到"Device Tree“子部分。
发布于 2014-08-29 20:22:02
传统上,您必须为每个电路板编写一个" board -file“(用C语言编写),以描述哪些组件在电路板上的位置以及它们是如何连接的。那就是一个过程性的描述。
对于设备树,您可以使用声明性方法来描述硬件,并让内核调用适当的设备注册函数。
因此,对于较旧的主板,如果主板文件可用(在Beagleboard的情况下为arch/arm/mach-omap2/board-omap3beagle.c),则不需要设备树。但是如果没有板级文件和设备树,内核就无法知道它运行在哪种类型的硬件上。
设备树blob (dtb)由引导加载器加载到RAM中,然后引导加载器通过预定的寄存器通知内核该位置。
https://stackoverflow.com/questions/25487911
复制相似问题