參考文件:Sitara AM335x Bootload的流程分析
創(chuàng)新互聯(lián)是一家專業(yè)提供田陽企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為田陽眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
am335x上電后從Rom code開始運行,Rom code 地址0x4000_0000。
Rom code 是固化在芯片的一個引導(dǎo)程序,具體參見《AM335x and AMIC110 Sitara. Processors Technical Reference Manual》第26章。
Rom code運行后,根據(jù)sysboot引進配置,去遍歷啟動列表,尋找啟動Image。啟動列表主要分為存儲器件和外設(shè)。從存儲器件啟動,啟動Image需要有Image標(biāo)頭,標(biāo)頭含有入口地址和Image大小。
sysboot配置,SYSBOOT[4:0] = 10011,那么啟動順序為 NAND->NANDI2C->MMMC0->UART0。
上電后,串口輸出8個“C”,即是Rom code程序跳轉(zhuǎn)到UART啟動了。
AM335X中內(nèi)部RAM的大小為128KB,其中最后18KB由ROM代碼使用。此外,啟動時1 KB(0x402f0000 - 0x402f0400)無法訪問,所以限制了U-Boot的大小為109KB以內(nèi)。無法再109KB完成U-Boot的所有功能,那就將u-boot分成2部分。
MLO文件——初始化所需的引導(dǎo)設(shè)備(NAND,MMC,I2C等)。
U-Boot.img——初始化所有其他設(shè)備。U-boot.img在u-boot.bin基礎(chǔ)上添加頭信息后,可用被MLO引導(dǎo)。