• 正文
    • 一、從參考手冊(cè)中的美麗誤會(huì)說(shuō)起
    • 二、SRC_SBMRx寄存器作用
  • 推薦器件
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

RT無(wú)法離線啟動(dòng)?請(qǐng)先查看這兩個(gè)寄存器

2024/02/05
1859
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

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

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

一、從參考手冊(cè)中的美麗誤會(huì)說(shuō)起

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

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

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

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

二、SRC_SBMRx寄存器作用

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

啟動(dòng)配置項(xiàng) 啟動(dòng)檢查項(xiàng)
啟動(dòng)模式
BOOT_MODE[1:0]引腳
SRC_SBMR2[BMOD]
啟動(dòng)模式輔助項(xiàng)
Fuse BT_FUSE_SEL 位
SRC_SBMR2[BT_FUSE_SEL]
啟動(dòng)設(shè)備選擇
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]

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

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

    意義一:有時(shí)候因?yàn)樯想姴蓸訒r(shí)序或者設(shè)定后僅軟復(fù)位原因,BOOT_MODE[1:0] 以及 BT_CFG[11:0] 引腳設(shè)定并沒(méi)有如期生效,所以需要通過(guò) SRC_SBMR2 來(lái)確認(rèn)。
    意義二:Fuse BT_FUSE_SEL 位在不同 BOOT_MODE[1:0] 下作用不同,這會(huì)影響啟動(dòng)設(shè)備 BOOT_CFG 最終設(shè)定(有時(shí)候是 BT_CFG[11:0] 引腳生效,有時(shí)候是 Fuse BOOT_CFG1/2 值生效),所以需要通過(guò) SRC_SBMR1 來(lái)確認(rèn)。

至此,SRC_SBMRx寄存器對(duì)于定位i.MXRT1xxx離線無(wú)法啟動(dòng)問(wèn)題的意義痞子衡便介紹完畢了,掌聲在哪里~~~

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
4N35SM 1 Isocom Components Transistor Output Optocoupler, 1-Element, 5300V Isolation, SURFACE MOUNT, PLASTIC PACKAGE-6
$0.88 查看
ECS-1612MV-250-CN-TR 1 ECS International Inc HCMOS Output Clock Oscillator,

ECAD模型

下載ECAD模型
$2.11 查看
KSZ8041FTLI-TR 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48

ECAD模型

下載ECAD模型
$2.95 查看

相關(guān)推薦

  • LAT1209 Arm?v7-M架構(gòu)的STM32如何啟用DWT進(jìn)行計(jì)數(shù)
  • LAT1202 TIM DMA burst 輸出變頻 PWM 波形
  • LAT1255 直接修改寄存器來(lái)輸出內(nèi)部時(shí)鐘的方法
  • 登錄即可解鎖
    • 海量技術(shù)文章
    • 設(shè)計(jì)資源下載
    • 產(chǎn)業(yè)鏈客戶資源
    • 寫文章/發(fā)需求
    立即登錄

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