如果你在i.MX RT1xxx板卡上嘗試過從SD/eMMC卡啟動,你會發現一個奇怪的現象:通常在BOOT_MODE[1:0]設置為從串行NOR Flash啟動,如果在Flash中沒有可啟動App情況下,芯片會自動轉入串行下載模式,但是如果此時SD/eMMC卡槽中插著存有可以正常運行的App程序,此時芯片是可以正常啟動的,并且啟動是 SD/eMMC里的程序,這是怎么回事?
今天就跟大家介紹下導致這個現象背后的神秘力量——SDMMC manufacture mode(出廠模式)。
注:只有i.MX RT四位數的產品支持SDMMC出廠模式。
回顧i.MX RT的啟動設備
所有i.MX RT系列均沒有內部非易失性存儲器,需要配置一個外部存儲器存放啟動代碼,這個外部存儲器我們也稱作啟動設備。 i.MX RT 支持的啟動設備類型非常多,并且因為啟動設備受板級環境影響可能導致啟動代碼讀取異常,因此i.MX RT上設計了多級啟動保障,如下圖所示: 芯片上電之后,首先按照BOOT_MODE引腳的配置,執行Primary Boot即第一級啟動流程;當第一級流程啟動失敗后,則進入第二級Recovery Boot啟動流程;如果第二級啟動仍然失敗,則將進入Manufacture Boot啟動流程,嘗試從SD/eMMC啟動。 以下將具體談談這個第三級的,出廠啟動模式。
何為SDMMC出廠模式
i.MX RT1xxx系列支持的一級啟動設備有很多:串行NOR/NAND、并行NOR/NAND、SD/eMMC,當這些一級啟動設備中的App未能正常啟動時,為了保證系統仍能運行正常,將會自動進入備份啟動方案(默認沒開啟,需要主動運行eFuse 開啟),我在之前介紹過一期《從Serial(1-bit SPI) EEPROM/NOR恢復啟動》。
如果這個備份啟動方案仍然失敗了怎么辦?那就需要進入今天的主角,第三級也是最后一級啟動方案-SDMMC manufacture方式啟動(默認開啟,可以啟動eFuse關閉。對于RT1050系列,配置在eFuse 0x470[3]-Disable SDMMC Manufacture mode),簡單說就是i.MX RT會做最后的努力:嘗試從SD/eMMC中啟動App。 需要注意的是這個SDMMC manufacture啟動方式和作為《一級啟動設備 SD/eMMC 方式》兩者區別如下: 一級啟動設備SD/eMMC可以有很多用戶配置(由BT_CFG引腳或者eFuse決定),但是SDMMC manufacture啟動與用戶配置完全無關,其固定從uSDHC1口以1bit bus width,3.3V模式去讀取啟動 App。
何時進入SDMMC出廠模式
在i.MX RT芯片參考手冊System Boot章節可以找到如下流程圖,圖中介紹了兩種進 入SDMMC manufacture模式的途徑。 第一種途徑是在BOOT_MODE[1:0]=2'b10(或者BOOT_MODE[1:0]=2'b00且BT_FUSE_SEL=1'b1)時,主啟動設備以及備份啟動設備(假設已使能)均失敗的情況下自動進入,這種方法屬于被動式進入,當然這也是該模式的主要用意。 第二種途徑是在BOOT_MODE[1:0]=2'b00且BT_FUSE_SEL=1'b0時,主動進入 SDMMC manufacture模式,這有點將該模式升級成一級啟動設備地位的感覺。 ? 最后提一下,i.MX RT上的SDMMC manufacture模式特性完全繼承自i.MX系列,我們知道在MPU世界里使用SD卡場景非常多,因此使能這個功能很自然,在i.MX RT上如果應用里也有SD卡相關設計,那么不妨也關注下這個特性,可以多一重保障。? ??
-
存儲器
+關注
關注
38文章
7455瀏覽量
163622 -
程序
+關注
關注
116文章
3778瀏覽量
80858 -
sdmmc
+關注
關注
0文章
4瀏覽量
2040
原文標題:一起聊聊i.MX RT1xxx上的神秘力量——SDMMC出廠模式
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論