1. 程式人生 > 實用技巧 >君正X2000開發板試用體驗之二:君正X2000引導過程分析

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

X2000內部集成了32KB Boot ROMCPU上電覆位後先執行Boot ROM中的程式。

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

預設情況下,開發板的CON1CON2兩個跳線帽連線2-3插針,BOOT_SEL0BOOT_SEL2通過下拉電阻接地,因此預設的啟動方式為[email protected];如果將兩個跳線帽連線1-2插針,

BOOT_SEL0BOOT_SEL2上拉至1.8V則啟動方式可以更改為[email protected]

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