A20支持從NAND Flash、SPI NOR Flash、SD card(SDC 0/2)和USB啟動。當系統上電時,首先檢測Boot Select Pin(BSP)管腳,如果為低電平,則直接從USB啟動,否則嘗試從MMC0啟動,如果啟動失敗則嘗試從NAND啟動,如果啟動失敗則嘗試從MMC2啟動,如果啟動失敗則嘗試從SPI NOR啟動,如果啟動失敗則嘗試從USB啟動,整個啟動過程如圖1所示。
圖1 A20啟動過程
下面以MMC0啟動為例進行分析。當系統從MMC0啟動時,首先會讀取TF卡從8KB開始的數據,一共讀取24KB,讀到內部SRAM的0地址開始處,如圖2所示,然后校驗所讀取數據的頭部是否正確,如果正確則從0地址開始執行指令(相當于mov pc, #0)。從這里可以知道當我們想寫裸機程序(u-boot也是一個裸機程序)的時候,需要在編譯好的bin文件前面加上一個指定的頭部,而且這個頭部的第一條指令是一條跳轉指令,跳到程序真正開始的地方,這樣程序才能被正確執行。
圖2 拷貝TF卡里的數據到內部SRAM
新聞熱點
疑難解答