繁体   English   中英

U-Boot如何与Linux内核通信?

[英]How does U-Boot communicate with Linux kernel?

我正在读这本书,它告诉我:

U-Boot加载Linux内核后,内核将占用U-Boot的所有资源

这是什么意思? 这是否意味着将丢弃U-Boot中分配的所有数据结构?

例如:在U-Boot期间,PCIE和网络设备将被初始化。 引导Linux内核后,PCIE和网络设备数据结构会被丢弃吗? Linux内核会再次初始化PCIE和NEtwork吗? 还是U-Boot将一些数据传输到内核?

通讯如何进行取决于您的CPU体系结构,但通常是通过RAM,闪存或文件系统中的特殊位置进行的。 不会传输任何数据结构,它们对内核将毫无意义,并且两者之间的存储空间将有所不同。 Uboot通常会传递引导参数,例如存在的硬件类型,用于某些事物的内存或用于特定驱动程序的模式类型。 因此,是的,内核将重新初始化硬件。 内核可能希望uboot或BIOS已经设置了某些低级CPU细节,这是一个例外。

根据您的体系结构,u-boot与Linux内核进行通信的机制可能有所不同。 实际上,u-boot可能定义了一些结构,这些结构已使用ATAGS传递给内核并由内核使用。 传递这些结构的地址存储在ARM的r2寄存器中。 它们传达信息,例如可用的RAM大小和位置,内核命令行,...

请注意,在某些体系结构(再次类似于ARM)上,我们支持设备树,该树旨在定义要在其中运行内核的硬件以及内核命令行,内存和其他Thins。 这种描述通常是在内核编译时创建的,通过u-boot加载到内存中,对于ARM体系结构,其地址通过r2寄存器进行传输。

有趣的是(关于您的问题),u-boot可以在通过设备树覆盖机制将其传递到内核之前更改此设备树结构。 因此,这是(相对)u-boot /内核通信的新方式。 请注意,某些体系结构不支持设备树。

最后,是的,除了内存控制器和其他一些非常低级的初始化AFAIK外,硬件已经由u-boot进行了初始化,即使它们已经由u-boot进行了初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM