君正X2000開發板試用體驗之二:君正X2000引導過程分析


X2000內部集成了32KB Boot ROMCPU上電復位后先執行Boot ROM中的程序。

X2000芯片上的三個引腳 BOOT_SEL0, BOOT_SEL1, BOOT_SEL2 決定了X2000的啟動方式。

 

默認情況下,開發板的CON1CON2兩個跳線帽連接2-3插針,BOOT_SEL0BOOT_SEL2通過下拉電阻接地,因此默認的啟動方式為SFC0@PE3.3V;如果將兩個跳線帽連接1-2插針,

BOOT_SEL0BOOT_SEL2上拉至1.8V則啟動方式可以更改為MSC0@PD1.8V

CPU啟動時,首先執行Boot ROM中的代碼,引導程序進行一些基本的初始化動作(主要是SPI控制器初始化)之后,將SPI Flash上的輔助程序裝載器(Secondary Program Loader, SPL)裝入SRAM中。X2000中集成了32K SRAM,其地址范圍為0xB2400000 ~ 0xB2408000

SRAM的內存布局如上圖所示,其中開頭的4K用於堆棧和數據空間。因此引導程序會跳轉到0xb2401000處開始執行SPL代碼。spl signature (512B)用於存儲啟動類型信息,隨后的 sc boot keys (1.5K)用於安全引導,spl.text(不到22K512字節對齊)是真正的代碼段。

之所以需要SPL,是因為SRAM數量有限(X2000只有32KB),通常uboot可執行文件的大小遠遠大於SRAM大小,而此時DRAM尚未初始化,因而DRAM不可用。SPL將初始化DRAM,將uboot裝入內存並跳轉去執行。

啟動順序大體上是:

Boot ROM --> SPL --> uboot --> kernel

類似於X86 PC的啟動順序:

BIOS --> MBR --> GRUB --> kernel

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM