Sama5d3的boot sequence主要分為三個階段
- ROM code
- AT91Bootstrap
- U-Boot
Boot
開機的流程如下圖
- ROM code先確認目前是由何種方式boot(Flash or SD card),若選定的存取裝置中存在AT91Bootstrap,則ROM code會負責將此段二進位檔讀取一份到SRAM,接著跳過去
- AT91Bootstrap負責相關的硬體配置,另外也必須將存取裝置中的U-Boot/barebox讀取一份到SDRAM/DDRAM,接著跳過去
- U-Boot負責將Kernel從儲存裝置讀取一份到SDRAM/DDRAM,之後即開始執行Kernel
一般Kernel會是Linux kernel,但也可以在bootstrap設定好相關硬體後載入其它OS,甚至沒有OS直接進入一無窮的while,照順序性的執行任務
也可以在Bootstrap時只設定需使用到的硬體,接著直接執行相關任務,也就是說從ROM code跳到RAM之後就開始執行任務
當然還有各式各樣的不同應用,使用者只要知道當ROM code結束之後會跳到SRAM開始執行程式,其它端看需求使用
Memory map
下圖為Sama5d3的儲存裝置配置圖,有了這張圖即可得知需把各段的程式碼放置何處,例如AT91Bootstrap就要放在offset 0x000000的地方,而U-Boot則需放在0x040000