AM335x的啓動過程

u-boot簡介

簡單的說,u-boot的核心功能是加載內核。
爲什麼需要它,上電之後直接加載內核不可以嗎?
雖然目前的內核沒有這麼做且理論上也可以實現,但沒有必要這麼做。
這就類似於幾十萬大軍在行軍,通常的做法是派出幾千人的不斷在前面探路,而非幾十萬大軍一股腦的往前走。
總結一下,u-boot的作用,初始化各類的硬件,加載內核,在加載內核的同時,把硬件的基本信息通過參數的形式傳遞給內核。

啓動過程

AM335x通常的啓動分爲三個階段,ROM Code、SPL、u-boot,最終加載內核。

ROM Code

顧名思義,這塊的代碼是TI內置的。上電後,硬件去加載該代碼。這塊的代碼作用,是根據啓動選項來從不同的啓動源啓動。目前支持的啓動源有MMC、Nand、Uart、USB、net等方式。如,我們的項目用的Nand,ROM Code運行後,會初始化Nand,然後在Nand的0x0的位置加載下一階段的代碼,即SPL的代碼。把SPL的代碼,加載到內部存儲器中運行。

SPL

SPL和MLO有什麼區別,可以認爲是沒有區別。具體的區別是SPL代碼中包含了調試等描述信息,MLO作爲裁剪後的代碼,燒寫進Nand中。最大的疑問是,爲什麼需要SPL階段,直接ROM Code啓動u-boot不是更快嗎?因爲硬件,目前,ROM Code只能把代碼加載到內部存儲器中運行,而內部存儲器資源非常有限,運行不了正常的u-boot,所以先運行精簡版的u-boot,再去加載正常的u-boot。
所以,SPL階段的使命很明確,初始化外存,加載u-boot到外存。

u-boot

不必多言了,這就是正常的u-boot,一是提供交互界面,供用戶進行配置;二是初始化硬件環境加載內核運行。當然,核心功能上面也說了,是加載內核。
另外,目前AM335x也支持Falcon模式,在該模式下,SPL直接加載內核啓動,後面會有詳細的介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章