加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、從參考手冊中的美麗誤會說起
    • 二、SRC_SBMRx寄存器作用
  • 推薦器件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

RT無法離線啟動?請先查看這兩個寄存器

02/05 10:10
2420
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

大家好,我是痞子衡,是正經(jīng)搞技術的痞子。今天痞子衡給大家介紹的是SRC_SBMRx寄存器對于定位i.MXRT1xxx離線無法啟動問題的意義。

最近有一位開源社區(qū)大佬在使能 RT1050 BEE 加密過程中遇到無法啟動問題,折騰到一度崩潰,甚至想要棄坑。痞子衡哪能讓這位“老鄉(xiāng)”跑掉,連忙給予緊急支持,一番了解下來,其實這位大佬已經(jīng)做好了大部分的工作,但是卡在了一個非常小的啟動配置問題上面(他以為他配置好了 BOOT_CFG1[1] - EncryptedXIP,但其實配置并沒有生效),這不禁讓痞子衡思考,為什么大佬會卡在這里?于是便有了今天的文章,希望通過本篇文章,讓所有的 RT 開發(fā)者再遇到無法啟動問題時,養(yǎng)成第一時間檢查 SRC_SBMR1/2 寄存器的意識。

Note: 本文適用全部的 RT10xx 以及 RT1160/1170。

一、從參考手冊中的美麗誤會說起

在進入正題之前,痞子衡先讓大家看一段參考手冊里的文字,這段文字存在于全部 RT10xx 的參考手冊里(比如 RT1050 RM Rev.5 里)。這段文字講得是當 SRC_GPR10[28] 位被置起來的時候,BootROM 用 SRC_GPR9 寄存器來替代 SRC_SBMR1 來決定啟動設備以及相關配置。

    Note: SRC 模塊的寄存器僅在 POR 復位時才會被置位,普通系統(tǒng)軟復位不會改變其內(nèi)容。

如果這段文字是真的,那我們就可以通過調(diào)試器直接改寫 SRC_GPR9/10 的值再軟復位從而切換啟動設備,不再需要像往常那樣重設 BOOT_CFG pins/fuse 再硬復位來做切換了。就像這樣:

但是很遺憾,這段內(nèi)容是個美麗的錯誤,它是從 i.MX6ULL 參考手冊里直接復制過來的,我們知道 RT 就是脫胎于 6ULL 的架構,但是 RT 的 BootROM 里并沒有真的實現(xiàn)這個功能。

二、SRC_SBMRx寄存器作用

如果你注意看,上面那個參考手冊里的美麗誤會其實告訴了我們一件事,那就是 BootROM 其實是通過 SRC_SBMR1 寄存器來獲取啟動設備以及相關配置(BOOT_CFG)的。既然如此,當我們配置了 BOOT_CFG pins/fuse 的時候,不妨通過 SRC_SBMR1 寄存器來檢查一下配置是否真的生效。除此以外,BootROM 也是通過 SRC_SBMR2 來獲取啟動模式的,因此這兩個寄存器 SRC_SBMR1/2 的值非常重要。

啟動配置項 啟動檢查項
啟動模式
BOOT_MODE[1:0]引腳
SRC_SBMR2[BMOD]
啟動模式輔助項
Fuse BT_FUSE_SEL 位
SRC_SBMR2[BT_FUSE_SEL]
啟動設備選擇
BT_CFG[7:0]引腳 / Fuse BOOT_CFG1[7:0]
BT_CFG[11:8]引腳 / Fuse BOOT_CFG2[3:0]
SRC_SBMR1[7:0]
SRC_SBMR1[11:8]

通過調(diào)試器獲取這兩個寄存器的值非常簡單,如果是 J-LINK,只需要連上之后使用 mem32 命令讀取即可(注意 RT10xx 上的 SRC_SBMR1/2 地址分別是 0x400F8004/0x400F801C,但是 RT1160/1170 上是 0x40C04008/0x40C0401C)。

知道了啟動配置檢查方法,現(xiàn)在痞子衡告訴你這么做的意義,主要有以下兩點。其中第二點就是文章開頭那位開源社區(qū)大佬掉進坑里的原因(關于 BT_FUSE_SEL 位的解釋詳見痞子衡舊文 《Boot配置(BOOT Pin/eFUSE)》 1.2 小節(jié))。

    意義一:有時候因為上電采樣時序或者設定后僅軟復位原因,BOOT_MODE[1:0] 以及 BT_CFG[11:0] 引腳設定并沒有如期生效,所以需要通過 SRC_SBMR2 來確認。
    意義二:Fuse BT_FUSE_SEL 位在不同 BOOT_MODE[1:0] 下作用不同,這會影響啟動設備 BOOT_CFG 最終設定(有時候是 BT_CFG[11:0] 引腳生效,有時候是 Fuse BOOT_CFG1/2 值生效),所以需要通過 SRC_SBMR1 來確認。

至此,SRC_SBMRx寄存器對于定位i.MXRT1xxx離線無法啟動問題的意義痞子衡便介紹完畢了,掌聲在哪里~~~

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
SN65HVD234D 1 Texas Instruments 3.3 V CAN Transceiver with Sleep Mode 8-SOIC -40 to 125

ECAD模型

下載ECAD模型
$3.95 查看
NCV7321D12R2G 1 onsemi LIN Transceiver, Stand-alone ESD Improved, 3000-REEL
$1.11 查看
CY62167EV30LL-45ZXI 1 Cypress Semiconductor Standard SRAM, 1MX16, 45ns, CMOS, PDSO48, TSOP1-48
$69.33 查看

相關推薦

電子產(chǎn)業(yè)圖譜

碩士畢業(yè)于蘇州大學電子信息學院,目前就職于恩智浦(NXP)半導體MCU系統(tǒng)部門,擔任嵌入式系統(tǒng)應用工程師。痞子衡會定期分享嵌入式相關文章