加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 一、从参考手册中的美丽误会说起
    • 二、SRC_SBMRx寄存器作用
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

RT无法离线启动?请先查看这两个寄存器

02/05 10:10
2348
阅读需 6 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是SRC_SBMRx寄存器对于定位i.MXRT1xxx离线无法启动问题的意义

最近有一位开源社区大佬在使能 RT1050 BEE 加密过程中遇到无法启动问题,折腾到一度崩溃,甚至想要弃坑。痞子衡哪能让这位“老乡”跑掉,连忙给予紧急支持,一番了解下来,其实这位大佬已经做好了大部分的工作,但是卡在了一个非常小的启动配置问题上面(他以为他配置好了 BOOT_CFG1[1] - EncryptedXIP,但其实配置并没有生效),这不禁让痞子衡思考,为什么大佬会卡在这里?于是便有了今天的文章,希望通过本篇文章,让所有的 RT 开发者再遇到无法启动问题时,养成第一时间检查 SRC_SBMR1/2 寄存器的意识。

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

一、从参考手册中的美丽误会说起

在进入正题之前,痞子衡先让大家看一段参考手册里的文字,这段文字存在于全部 RT10xx 的参考手册里(比如 RT1050 RM Rev.5 里)。这段文字讲得是当 SRC_GPR10[28] 位被置起来的时候,BootROM 用 SRC_GPR9 寄存器来替代 SRC_SBMR1 来决定启动设备以及相关配置。

    Note: SRC 模块的寄存器仅在 POR 复位时才会被置位,普通系统软复位不会改变其内容。

如果这段文字是真的,那我们就可以通过调试器直接改写 SRC_GPR9/10 的值再软复位从而切换启动设备,不再需要像往常那样重设 BOOT_CFG pins/fuse 再硬复位来做切换了。就像这样:

但是很遗憾,这段内容是个美丽的错误,它是从 i.MX6ULL 参考手册里直接复制过来的,我们知道 RT 就是脱胎于 6ULL 的架构,但是 RT 的 BootROM 里并没有真的实现这个功能。

二、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]

通过调试器获取这两个寄存器的值非常简单,如果是 J-LINK,只需要连上之后使用 mem32 命令读取即可(注意 RT10xx 上的 SRC_SBMR1/2 地址分别是 0x400F8004/0x400F801C,但是 RT1160/1170 上是 0x40C04008/0x40C0401C)。

知道了启动配置检查方法,现在痞子衡告诉你这么做的意义,主要有以下两点。其中第二点就是文章开头那位开源社区大佬掉进坑里的原因(关于 BT_FUSE_SEL 位的解释详见痞子衡旧文 《Boot配置(BOOT Pin/eFUSE)》 1.2 小节)。

    意义一:有时候因为上电采样时序或者设定后仅软复位原因,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离线无法启动问题的意义痞子衡便介绍完毕了,掌声在哪里~~~

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
S29GL256P10FFI020 1 AMD Flash, 16MX16, 100ns, PBGA64,
$9.29 查看
SN74LVC1G125DCKR 1 Texas Instruments Single 1.65-V to 5.5-V buffer with 3-state outputs 5-SC70 -40 to 125

ECAD模型

下载ECAD模型
$0.3 查看
ASFL1-12.000MHZ-ERS-T 1 Abracon Corporation XTAL OSC XO 12.0000MHZ HCMOS TTL
$1.28 查看

相关推荐

电子产业图谱

硕士毕业于苏州大学电子信息学院,目前就职于恩智浦(NXP)半导体MCU系统部门,担任嵌入式系统应用工程师。痞子衡会定期分享嵌入式相关文章