当前位置: 首页 > news >正文

痞子衡嵌入式:在i.MXRT下测试启动特性时可改写OTP Shadow寄存器而不烧OTP


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下测试启动特性时可改写OTP Shadow寄存器而不烧OTP

  我们知道恩智浦 i.MXRT 系列除了 BOOT 相关引脚电平配置之外,主要通过片内 eFuse/OTP 存储器来进一步配置启动特性。如果我们想测试的启动特性仅能通过 eFuse/OTP 来配置,那么就需要烧写 eFuse/OTP,而 eFuse/OTP 仅能烧写一次,如果不小心值烧错了(或者写入的值未经验证),那这颗芯片就废了,所以面对这种情况,大家难免会焦虑。今天痞子衡就和大家聊聊消除这方面焦虑的一个替代方法,即用调试器直接改写 OTP Shadow 寄存器做测试。

  在进入正文之前,有必要介绍一下,eFuse/OTP 存储中的 BOOT 相关的内容在芯片 POR 之后会自动被系统硬件加载到相应 eFuse/OTP Shadow 寄存器中,Shadow 寄存器的读取很简单,跟普通寄存器一样,而 ROM 代码执行时正是从这些 Shadow 寄存器中去获取得启动配置(并不是从 eFuse/OTP 存储中去直接读取),这是本文方法能生效的大前提。

  • Note:本文方法仅在 RT500/600/700/1180 上生效。

一、主流RT4digits上设计

  首先来回顾下 RT10xx 以及 RT1160/1170 上 eFuse 配置设计。关于 eFuse 本身介绍可以参见痞子衡旧文 《eFUSE及其烧写方法》。痞子衡从芯片手册里找出了比较核心的 eFuse BOOT_CFG 配置对应的 Shadow 寄存器地址,此外 RT1060 系列参考手册(V3)里提及 Shadow 寄存器是 RW 属性,而 RT1160/1170 系列参考手册(V3)提及 Shadow 寄存器是 RO 属性。

芯片系列OTP Shadow寄存器起始地址Fuse BOOT_CFG对应Shadow寄存器地址参考手册提及Shadow寄存器属性
RT10xx0x401F4000 + 0x4000x401F4450 (BOOT_CFG1&2&3&4)RW
RT1160/11700x40CAC000 + 0x8000x40CAC940 (BOOT_CFG1&2)
0x40CAC950 (BOOT_CFG3&4)
RO

  原则上如果 Shadow 寄存器是 RO 属性,那我们就不用忙活了,通过调试器改写其值根本行不通。不管怎样,还是以板级实测为准,痞子衡用 J-Link Commander 实测如下,不管是 RT1060 还是 RT1170,其 Shadow 值都是可以改写成功的,但是一旦软复位后,其值会变成改写前的状态(这意味着任何一次软复位,系统硬件都会重新加载 eFuse 内容到相应 Shadow 寄存器里),这就是为什么此方法在主流 RT4digits 上行不通的原因。

  但是好在主流 RT4digits 上 32bit BOOT_CFG 的前 12 bit 是可以映射到外部引脚(BT_CFG pin)上的,也算是一种安慰,关于这个设计,详见痞子衡旧文《如果i.MXRT1xxx离线无法启动,请先查看SRC_SBMRx寄存器》。不过如果需要配置 BOOT_CFG 的其他 bit 位或者其他 BOOT 相关的 eFuse 域,就只能通过烧写 eFuse 来实现了。

二、主流RT3digits上设计

  再来看看 RT500/600 上 OTP 配置设计。关于 OTP 本身介绍可以参见痞子衡旧文 《OTP及其烧写方法》。同样从芯片手册里找出了比较核心的 OTP BOOT_CFG 配置对应的 Shadow 寄存器地址,RT500/700 参考手册里有 OCOTP 模块寄存器介绍,而 RT600 用户手册里并没有(不用担心,在 SDK 里头文件里能找到)。

  • Note:由于目前 RT700 尚未 launch,痞子衡手头参考手册里显示 OTP Shadow PARTx0-47, PARTx144-511 是可操作状态,其余是 reserved 状态(包括 SDK_25_09 里头文件也是如此),但是在 lifecycle 为 0x3 的情况下, 我们比较关心跟 boot 相关的 Shadow PARTx136-143 也是能操作的。
芯片系列OTP Shadow寄存器起始地址OTP BOOT_CFG对应Shadow寄存器地址参考手册提及Shadow寄存器属性
RT500/6000x40130000/0x50130000 + 0x00x40130180 (BOOT_CFG[0])
0x40130184 (BOOT_CFG[1])
0x40130188 (BOOT_CFG[2])
0x4013018C (BOOT_CFG[3])
RW
RT7000x40018000/0x50018000 + 0x00x40018220 (BOOT_CFG0)
0x4001823C (LIFECYCLE)
0x40018240 (XSPI0_IPED_CTX0)
RW

  一样的方法用 J-Link Commander 实测如下,Shadow 值可以改写成功,并且软复位后,其值会保持住(这意味着主流 RT3digits 上系统硬件只在 POR 时重新加载 OTP 内容到相应 Shadow 寄存器里),所以本方法在主流 RT3digits 上可行,我们完全不用烧写任何 OTP 就能进行想要的测试。实际上痞子衡之前用这个方法解决过一个问题,详见《快速定位i.MXRT600板级设计ISP[2:0]启动模式引脚上电时序问题的方法》。

  • Note:RT700 测试是在 ISP 模式下,如果是 Boot 模式,需保证软复位后 App 能正常运行,否则会进入 Activate debugger(Debug Mailbox)环节。

  至此,i.MXRT下测试启动特性时可改写OTP Shadow寄存器而不烧OTP痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

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

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

http://www.hskmm.com/?act=detail&tid=28800

相关文章:

  • 直流微电网运行控制仿真算法设计与实现
  • 基于MATLAB的多棵树分类器(随机森林)
  • 车载360环视平台:米尔RK3576开发板支持12路低延迟推流
  • 2025双氧水厂家最新推荐榜:品质卓越与环保安全的首选品牌!
  • TDengine 3.3.6.0 使用Docker部署3节点集群
  • 05-字符设备驱动之ioctl
  • 2025氧化镁厂家最新推荐榜:高纯度与稳定性能的行业佼佼者!
  • 从“视频孤岛”到“统一视界”:解析视频汇聚平台EasyCVR的核心功能与应用场景
  • 个人博客作业 1:就《现代软件工程》提 5 个问题
  • 2025 年锅炉优质厂家最新推荐榜单:高效节能与环保性能全方位剖析,助您选到靠谱锅炉供应商
  • 2025 年商用洗碗机源头厂家最新推荐榜:聚焦实力企业,为餐饮及企事业单位选购提供可靠参考
  • EHOME平台EasyCVR视频诊断功能指南:一文读懂其可识别的所有视频质量问题
  • html介绍+运用
  • 2025 年 氨糖软骨素厂家哪家好?傦力宝产品选购指南,解析研发实力与品质优势
  • 【SPIE出版】2025年信息工程、智能信息技术与人工智能国际学术会议(IEITAI 2025)
  • go读取二进制文件编译信息
  • 2025锯床厂家最新推荐榜:精准切割与高效性能的行业首选!
  • 2025.10.10 图论
  • xshell把界面转发到xming
  • 使用AI创建angular项目
  • 大模型在软件研发协同演进
  • NocoBase 走进德国大学课堂
  • 2025青海视频号运营最新推荐:创意内容与高效推广策略的完美
  • 008_函数
  • 内存分析记录
  • 详细介绍:构建生产级多模态数据集:视觉与视频模型(参照LLaVA-OneVision-Data和VideoChat2)
  • 2025 年图书杀菌机生产厂家最新推荐排行榜:聚焦高效杀菌技术与优质服务,优质企业全面盘点自助图书/臭氧图书/消毒图书/图书杀菌机厂家推荐
  • 公网服务器下的dify安装模型插件的相关问题和操作
  • vscode 生成代码片段
  • MySQL根据表生成实体类