君正X2000開發板試用體驗之二:君正X2000引導過程分析
阿新 • • 發佈:2020-07-20
X2000內部集成了32KB Boot ROM,CPU上電覆位後先執行Boot ROM中的程式。
X2000晶片上的三個引腳 BOOT_SEL0, BOOT_SEL1, BOOT_SEL2 決定了X2000的啟動方式。
預設情況下,開發板的CON1和CON2兩個跳線帽連線2-3插針,把BOOT_SEL0和BOOT_SEL2通過下拉電阻接地,因此預設的啟動方式為[email protected];如果將兩個跳線帽連線1-2插針,
把BOOT_SEL0和BOOT_SEL2上拉至1.8V,則啟動方式可以更改為[email protected]。
CPU啟動時,首先執行Boot ROM中的程式碼,載入程式進行一些基本的初始化動作(主要是SPI控制器初始化)之後,將
SRAM的記憶體佈局如上圖所示,其中開頭的4K用於堆疊和資料空間。因此載入程式會跳轉到0xb2401000處開始執行SPL程式碼。spl signature (512B)用於儲存啟動型別資訊,隨後的 sc boot keys (1.5K)用於安全引導,spl.text(不到22K,512位元組對齊)是真正的程式碼段。
之所以需要SPL,是因為SRAM數量有限(X2000只有32KB),通常uboot可執行檔案的大小遠遠大於SRAM
啟動順序大體上是:
Boot ROM --> SPL --> uboot --> kernel
類似於X86 PC的啟動順序:
BIOS --> MBR --> GRUB --> kernel