痞子衡嵌入式:聊聊i.MXRT1xxx上第三級啟動保障 - SDMMC manufacture模式

痞子衡發表於2023-05-03

  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是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主頁知乎主頁微信公眾號 平臺上。

微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。

相關文章