大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT1xxx上第三級啓動保障 - SDMMC manufacture模式。
如果你在 i.MXRT1xxx 板卡上嘗試過從 SD/eMMC 卡啓動,你會發現一個奇怪的現象:如果把 SD/eMMC 卡還插着(並且裏面保留正常的 App 程序),明明 BOOT_MODE[1:0] 設置得是從串行 NOR Flash 啓動,但是在 Flash 中沒有可啓動 App 情況下,芯片沒有像往常那樣轉入串行下載模式,而是正常啓動了,並且啓動得是 SD/eMMC 裏的程序,這是怎麼回事?今天痞子衡就跟大家介紹下導致這個現象背後的神祕力量 - SDMMC manufacture mode:
- Note:SDMMC manufacture 模式僅在 i.MXRT 四位數上被支持。
一、什麼是SDMMC manufacture模式?
我們知道 i.MXRT1xxx 系列支持得一級啓動設備有很多:串行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.MXRT 會最後一次嘗試從 SD/eMMC 中讀取 App 去啓動。需要注意的是這個 SDMMC manufacture 啓動方式和作爲 《一級啓動設備 SD/eMMC 方式》 有如下區別:
- 一級啓動設備 SD/eMMC 可以有很多用戶配置(由 BT_CFG 引腳或者 eFuse 決定),但是 SDMMC manufacture 啓動與用戶配置完全無關,其固定從 uSDHC1 口以 1bit bus width,3.3V 模式去讀取啓動 App。
二、什麼情況下進SDMMC manufacture模式?
在 i.MXRT 芯片參考手冊 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.MXRT 上的 SDMMC manufacture 模式特性完全繼承自 i.MX 系列,我們知道 MPU 世界裏使用 SD 卡場景非常多,因此使能這個功能很自然,在 i.MXRT 上如果應用裏也有 SD 卡相關設計,那麼不妨也關注下這個特性,多一重保障。
至此,i.MXRT1xxx上第三級啓動保障 - SDMMC manufacture模式痞子衡便介紹完畢了,掌聲在哪裏~~~
歡迎訂閱
文章會同時發佈到我的 博客園主頁、CSDN主頁、知乎主頁、微信公衆號 平臺上。
微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。