痞子衡嵌入式:如果i.MXRT1xxx离线无法启动,请先查看SRC_SBMRx寄存器


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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离线无法启动问题的意义痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页知乎主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此微信小程序医院挂号预约系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。微信小程序医院挂号预约系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,医生信息管理,医院信息管理,科室信息管理,预约信息管理,预约取消管理,留言板,系统管理。微信小程序用户可以注册登录,查看医院信息,查看医生信息,查看公告资讯,在科室信息里面进行预约,也可以取消预约。微信小程序医院挂号预约系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痞子衡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值