嵌入式系統啓動過程

1.ROM code. 上電首先運行ROM中的代碼,ROM code的目的是把第二部分boot code(SPL-second stage program loader) load 到 SRAM中。ROM code運行時,屬於最小系統,DDR還沒有初始化,可以使用的RAM 只有芯片中的SRAM。而SRAM的大小隻有幾KB,不能load佔用空間很大的code(如uboot)進入SRAM。 ROM code從flash, emmc, sd,或者通過USB, load SPL 到SRAM中,然後PC指針跳到SPL。從存儲介質的最開頭的位置load: first pages of NAND flash, first sectors of eMMC chip.
這裏寫圖片描述
2.SPL. SPL 的大小受SRAM的限制,功能受限。負責初始化DDR,把佔用空間更大,功能更強的TPL(third stage program loader) 從一系列的存儲介質中load到DDR中。通過約定的offset,從存儲介質中找到TPL。
這裏寫圖片描述
3.TPL. 如uboot, 全面初始化系統,通常帶有命令行。load kernel, rootfs. 把kernel啓動需要的系統參數,RAM address, size, CPU clock, DTS(device tree),kernel command line 傳遞給kernel. 然後啓動kernel.
這裏寫圖片描述

參考自:《Mastering Embedded Linux Programming》

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