IMX51启动模式
相關鏈接:
http://blog.csdn.net/kickxxx/article/details/7236040
http://blog.csdn.net/evilcode/article/details/6079767
?
IM51有4種啟動模式,通過GPIO管腳BOOT_MODE[1:0]來選擇。在系統重啟時,所有的啟動引腳被采樣并存儲到SBMR(System reset controller Boot Mode Register,系統復位控制器啟動模式寄存器)。連接BOOT_MODE到地對應邏輯0,對于邏輯1,飛思卡爾推薦連接到NVCC_PER3(為什么推薦此電平,是為了最大可能的避免啟動時啟動引腳電平處于unknown狀態導致啟動異常嗎?)。
?
這4中啟動模式分別是Internal BOOT、reserved、Internal BOOT-ROM Select和Serial Downloader,它們對應于BMOD[1:0](SMBR寄存器的14和15位)的值如下:
圖1
其中BMOD[1:0]=01是飛思卡爾預留用來作為內部測試使用的。
?
1.??????Internal Boot(BMODE = 00)
在此模式下設備上電時,處理器從Internal ROM(IMX51內部的ROM大小為36KB)啟動,內部啟動代碼執行HW初始化,通過使用HAB庫校驗application image的有效性和跳轉到application image(這里指uboot或是xldr)的地址并接著執行。如果在內部ROM執行過程出錯,啟動代碼將跳轉到serial downloader模式。
?
當設置為BMODE = 00模式,將由eFUSE設置或使用GPIO覆蓋的fuse設置來控制啟動流程,這兩種選擇是通過GPIO引導選擇熔絲(GPIO_BT_SEL)來控制的:
?
⑴如果GPIO_BT_SEL(=1)熔絲被熔斷(被燒錄過),所有的啟動選項由eFUSEs來控制。內部的啟動代碼可以從SBMR中讀取BMOD[1:0]的值,或是直接通過IIM(IC Identification Module,IC識別模塊)模塊讀取eFUSEs。
?
⑵如果GPIO_BT_SEL(=0)熔絲是完整的(沒有被動過),啟動選項由SBMR的設置來決定。此模式下一些熔絲選型可能被覆蓋,具體哪些熔絲可以被覆蓋,這是由GPIO那一列中寫明了YES來決定的,比如:
圖2
在此模式下之能通過SBMR來讀取啟動選項的值,比如圖2的BT_MEM_CTL[1:0](也對應SBMR[1:0]),至于eFUSE中哪些驅動選項的值可以由哪些對應的GPIO口來覆蓋的,見圖3:
圖3
由圖3可知,DISP1_DAT[14:13](GPIO)的值會覆蓋BT_MEM_CTL[1:0]的值,也就是說BT_MEM_CTL[1:0]的值由DISP1_DAT[14:13]來決定,由此可見此模式下這些GPIO的設計非常重要,否則很有可能導致啟動無法正常啟動。
?
2.??????Internal Boot-ROM Select(BMODE= 10)
BMODE = 10模式相當于BMODE = 00模式,差別在于BMODE= 10模式忽略GPIO的啟動覆蓋,也不管BT_GPIO_SEL的設置。此模式只使用eFUSE的設置來啟動,這樣可允許用戶在最終的產品上(完成開發,交付給客戶的產品)熔斷熔絲。沒有了外部的BOOT_MODE引腳,沒啟動GPIO上拉和下拉,這樣就不會出現在設備啟動時,由于啟動引腳(比如圖3左邊的GPIO)的不確定值導致了調用Serial Downloader。
?
此模式下,啟動流程發現如果BT_BLANK=0沒有被燒錄過(ROM沒有被燒錄過),啟動流程被重新定向并跳轉到Serial Downloader。如果BT_BLANK=1被燒寫過,則是正常的啟動流程,并且使用eFUSE來啟動。
?
當板子第一次使用時,如果沒有熔絲被熔斷,連接到啟動GPIO引腳上的pad可能產生一些值,這可能被ROM code錯誤使用而導致啟動流程從不存在的設備上啟動。這可能產生電氣/邏輯上的破壞,但此模式解決了這個問題。
?
3.??????Serial Downloader(BMODE = 11)
當外部Flash設備沒有程序,或是在啟動過程中遇到錯誤,或是遇到下面的一些情況,啟動留出都會跳轉到Serial Downloader:
⑴BMOD[1:0] = 11 (serial downloader mode)
⑵BMOD[1:0] = 10和eFUSE的BT_BLANK=0
⑶BMOD[1:0] = 10但熔絲沒有被正確設置。
⑷BMOD[1:0] = 00或10,且沒有有效的鏡像文件在Flash中。
⑸ Security hardware failure
⑹運行時產生異常
⑺ Error returned by the HAB functions while in productionmode. Errors are ignored in engineering
mode)
?
為了檢測有效的串行端口(UART或USB),處理器的ROM程序定期間隔32s輪詢UART和USB狀態寄存器。如果在預定的輪詢時間內沒有發現有效的端口,ROM程序就通過看門狗對處理器斷電。當serial downloader有效,看門狗定時服務,如果serial host和IM51之間的通訊在32s之外沒有反應或是處理器進入死循環,看門狗就timeout并對設備下電。
?
總結
- 上一篇: VS2005工程由Pocket PC 2
- 下一篇: 优秀中层必备的十大能力