0

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

有些板在引导过程中不需要设备树 dtb 文件,如 beagleboard,而有些板在引导过程中应该有 dtb 文件,如 Zynq。

这个假设正确吗?

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

有任何参考可以了解整个过程吗?

4

2 回答 2

0

传统上,您必须为每个电路板编写一个“电路板文件”(用 C 语言)来描述电路板上的哪些组件以及它们如何连接。也就是程序描述。

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

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

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

于 2014-08-29T12:22:02.480 回答
0

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

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

您应该阅读有关 Zynq 和 u-boot 的更多信息以了解它。找到“设备树”子部分。

于 2014-08-26T04:14:46.417 回答