簡體   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