uboot啟動流程詳解
在處理器初始剛上電的狀態(tài)時,需要小心設置好許多關鍵狀態(tài),包括CPU狀態(tài)、中斷狀態(tài)、MMU狀態(tài)等。其次,根據(jù)硬件資源進行板級初始化,包括代碼重定向等操作。最后,進入命令行狀態(tài),等待處理輸入命令。 啟動流
在處理器初始剛上電的狀態(tài)時,需要小心設置好許多關鍵狀態(tài),包括CPU狀態(tài)、中斷狀態(tài)、MMU狀態(tài)等。其次,根據(jù)硬件資源進行板級初始化,包括代碼重定向等操作。最后,進入命令行狀態(tài),等待處理輸入命令。
啟動流程具體步驟
1. 關閉中斷,設置關鍵寄存器:在此階段,需要關閉中斷,設置svc模式并禁用MMU、TLB,并配置時鐘、看門狗的寄存器。
2. 堆棧環(huán)境設置和代碼重定向:在進行代碼重定向之前,進行板級初始化,包括串口、定時器、環(huán)境變量、I2C、SPI等資源的初始化。
3. 進行代碼重定向:完成代碼重定向后的板級初始化操作,包括板級定義的初始化操作、EMMC、NAND Flash、網(wǎng)絡、中斷等的初始化。
4. 進入命令行狀態(tài):等待終端輸入命令,并對命令進行相應處理,這是uboot啟動流程中的核心部分。
關于spl和uboot的初始化
在spl的階段已經(jīng)對arch級進行了初始化,為何uboot還要再次對arch初始化?實際上,spl對于uboot的啟動并非必須的。有些情況下,uboot可能會直接從ROM或者flash上開始執(zhí)行,而不經(jīng)過spl階段。這取決于平臺的啟動機制。因此,uboot會完整地執(zhí)行一遍初始化操作,以確保CPU處于所需狀態(tài)。
spl啟動過程的差異
就以tiny210為例,前期arch的初始化流程基本一致,真正的區(qū)別在于在`board_init_f`開始時。在啟動過程中,uboot將負責處理更多的初始化工作,確保系統(tǒng)順利啟動。透過``可以看到uboot代碼的入口。
通過深入了解uboot的啟動流程和相關初始化操作,可以更好地理解系統(tǒng)啟動的細節(jié),從而為系統(tǒng)優(yōu)化和問題排查提供更為有力的支持。