嵌入式系统启动过程

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》

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