痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是不同J-Link版本对于i.MXRT1170连接复位后处理行为。
痞子衡之前写过一篇旧文 《i.MXRT1170上用J-Link连接复位后PC总是停在0x223104的原因》,这篇文章详细解释了 RT1170 BootROM 代码里软件实现的 Debug Mailbox 机制对 J-Link 调试体验的影响,文末还给了结论 J-Link 里只要执行 reset 后 PC 就必定会停在 0x223014,这句话其实不完全准确,因为底层 J-Link 脚本内容可以改变这个行为,这在不同 J-Link 版本的 DLL 处理里就有体现。今天痞子衡要聊得就是这个话题:
一、不同J-Link版本关于RT1170更新
为了了解不同 J-Link 版本对于 RT1170 处理差异,痞子衡从 J-Link 历史版本记录 https://www.segger.com/downloads/jlink/ReleaseNotes_JLink.html 里抽取了从 V6.64 - V7.96i 所有关于 RT1170 更新如下,其中 V6.86、V6.94、V6.98c、V7.86 四个版本涉及 Debug 连接处理,但是没有说明进一步实现细节。
| J-Link版本 | 关于RT1170更新 |
|---|---|
| V6.64 | DLL 7.Added (QSPI) flash programming support for NXP iMXRT117x series devices. |
| V6.72 | DLL 2.Added (QSPI) flash programming support for the Cortex-M4 core of NXP iMXRT117x series devices. |
| V6.80b | DLL 1.NXP RT117x QSPI flash programming: Some necessary pins were not correctly configured to connect to the FLEXSPI controller. Fixed. |
| V6.86 | DLL 14.NXP RT117x: Reset did not work for rev B0 silicon. Fixed. |
| V6.88 | DLL 57.Added 4byte address mode QSPI flash programming support NXP iMXRT117x series devices. |
| V6.94 | DLL 3.JTAG chain detection for NXP iMXRT117x series devices, fixed. |
| V6.98 | DLL 7.Added debug and (QSPI) flash programming support for NXP MIMXRT1177xxxA_M4 and MIMXRT1177xxxA_M7. |
| V6.98c | DLL 1.NXP iMXRT117x: Reading PC & SP after reset could return incorrect values. Fixed. |
| V7.00 | DLL 4.Added quad memory mapped read for NXP iMXRT117x series devices with SPIFI-Lib support. |
| V7.22b | DLL 10.NXP i.MXRT117x Cortex-M4 debug: Software breakpoints did not work correctly in case the LMem caches were enabled. Fixed. |
| V7.50 | DLL 28.NXP i.MXRT117x series: Connect sequence to the Cortex-M4 failed under certain circumstances. Fixed. DLL 42.NXP i.MXRT117x series: Some devices passed by ARM KEIL MDK were not detected correctly. Fixed. |
| V7.54 | DLL 12.NXP iMXRT117x devices: Flashloader did not save and restore all used registers. Fixed. |
| V7.82d | DLL 11.NXP i.MXRT117x: Added flash programming support for FlexSPI 2 flash bank. |
| V7.84c | DLL 11.NXP iMXRT117x: Detecting FlexSPI2 boot config and booting from FlexSPI2 did not work. Fixed. |
| V7.86 | DLL 4.NXP iMXRT117x: Debug connection would fail when debugging both Cortex-M4 and Cortex-M7 cores and performing a reset via Cortex-M7. Fixed. |
| V7.86e | DLL 9.NXP iMXRT117x: FlexSPI Flash programming did not work. Introduced with V7.86. Fixed. |
| V7.88k | DS 5.NXP iMXRT117x FlexSPI support: Under certain circumstances writing less than four bytes could fail. Fixed. |
| V7.88i | DS 6.NXP iMXRT117x FlexSPI1 support: Added support for pin configuration "nCS@AD18_CLK@AD19_D0@AD20_D1@AD21_D2@AD22_D3@AD23" |
| V7.94d | DS 3.NXP iMXRT1170: Flash programming did not work. Introduced with V7.88l. Fixed. |
二、J-Link V6.86f对于RT1170连接复位处理
从 J-Link 版本来看,V6.86 开始正式支持 RT1170 B0 Silicon(恩智浦最终发布的芯片版本),我们就从 V6.86 版本开始做测试。在测试之前,痞子衡在板载串行 NOR Flash 里烧录了一个链接在 0x30002000 的 XIP App 程序。然后使用 J-Link commander 操作如下:
上述测试结果表明:当芯片上电/复位能正常启动链接在 0x30002000 的 App 时,J-Link 下用默认 MIMXRT1176XXXA_M7 设备去连芯片复位后,PC 能停在 App 里,因为自带 DLL 里集成了 jlinkscript 处理,这在 dll 里搜索 "Valid application detected. Setting PC / SP manually." 信息可知。但是如果我们自己添加的 jlinkscript 不包含这样的处理(比如用超级下载算法 UFL),那么 PC 还是停在 0x223104。
如果我们在板载串行 NOR Flash 里烧录了一个不是链接在 0x30002000 的 App,痞子衡烧录得是链接在 0x3000a000 处的 XIP App(总之保证 Flash 偏移 0x2000 处没有有效 App 中断向量表),再来做同样的测试(在芯片能正常启动 App 情况下),此时 PC 永远停在 0x223104,这说明 J-Link DLL 默认集成的 jlinkscript 永远是从 Flash 0x2000 偏移处取 App 信息去设置 PC、SP。
我们紧接着上面的测试,使用 mem32 命令读取 0x3000a000 处内容,发现是有效 App 数据,这说明 FlexSPI 外设被正常初始化了,此时手动设置 PC、SP 后可以跳转到 App 里,这意味着如果我们自定义 jlinkscript 里能够解析 IVT 去获取 App 信息,那么可以做到通用。
三、不同J-Link版本对于RT1170连接复位处理
由于 V6.86 版本对于连接复位处理已经一定程度上满足实际需求,因此对比后续更高 J-Link 版本意义不太重要了,不过这里有一个差异不得不提。正常来说,在芯片上电/复位能正常启动链接在 0x30002000 的 App 情况下,reset 命令执行完后,PC 应该 halt 在 BootROM 里,需要继续使用 go 命令才能跳转进入 App,这在 V6.86 上确实如此。然后在 V7.94f 版本上测试来看,reset 之后,PC 已经 halt 在 App 里了。
至此,不同J-Link版本对于i.MXRT1170连接复位后处理行为痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同的更多相关文章
- 痞子衡嵌入式:MCUXpresso IDE下在线调试时使用不同复位策略的现象总结
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结. 本篇实际上是<IAR在线调试时设不同复位类型可能会导致i.M ...
- 痞子衡嵌入式:微控制器CPU性能测试基准(EEMBC-CoreMark)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是微控制器CPU性能测试基准CoreMark. 在嵌入式系统行业用于评价CPU性能指标的标准主要有三种:Dhrystone.MIPS.Co ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.5)- 串行NOR Flash下载算法(IAR EWARM篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是IAR开发环境下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash XI ...
- 痞子衡嵌入式:MCUXpresso IDE下添加新路径下源文件进工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加新路径下源文件进工程编译的方法. 接着上篇文章 <MCUXpresso IDE下SDK工程导入与 ...
- 痞子衡嵌入式:把玩i.MXRT1062 TencentOS Tiny EVB_AIoT开发板(1) - 开发环境搭建与点灯
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1062 TencentOS Tiny EVB_AIoT开发板环境搭建与点灯. 腾讯 TencentOS 团队于2021年1 ...
- 痞子衡嵌入式:大话双核i.MXRT1170之单独在线调试从核工程的方法(IAR篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170下单独在线调试从核工程的方法(基于IAR). 两年前痞子衡写过一篇<双核i.MXRT1170之Cortex-M ...
- 痞子衡嵌入式:MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异. 程序函数库是一个包含已经编译好代码和数据的函数集合,这 ...
- 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...
- 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具NXP-MCUBootUtility用户指南
NXP MCU Boot Utility English | 中文 1 软件概览 1.1 介绍 NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP M ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(2)- RT1052DVL6性能实测
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的性能. 在前面的文章 i.MXRT微控制器概览 里,痞子衡给大家简介过恩智浦半导体在2017年推出的新 ...
随机推荐
- Android 开发入门(1)
0x01 准备 (1)概述 安卓(Android)基于 Linux 内核开发的操作系统,由 Google 等领导开发. (2)版本 Android 版本号 API 发布时间 Android 14 - ...
- sql 语句系列(列举非索引外键)[八百章之第九章]
列举非索引外键 列举出那些外键没有添加索引. 目的: 1.减少锁. 2.外键添加索引,提示了查询性能,因为要与父表做连接查询做笛卡尔积. 下面只要会复制即可,没有会去从新写一遍的. select fk ...
- 我用这10招,能减少了80%的BUG
前言 对于大部分程序员来说,主要的工作时间是在开发和修复BUG. 有可能修改了一个BUG,会导致几个新BUG的产生,不断循环. 那么,有没有办法能够减少BUG,保证代码质量,提升工作效率? 答案是肯定 ...
- 力扣367(java&python)-有效的完全平方数(简单)
题目: 给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false . 进阶:不要 使用任何内置的库函数,如 sqrt . 示例 1: 输入: ...
- 5月25日,阿里云开源 PolarDB-X 将迎来重磅升级发布
简介:2022年5月25日,阿里云开源 PolarDB-X 将升级发布新版本!PolarDB-X 从 2009 年开始服务于阿里巴巴电商核心系统, 2015 年开始对外提供商业化服务,并于 2021 ...
- [PHP] 业务逻辑大内存占用的优化思路, yield 和 chunk
示例: header("content-type:text/html;charset=utf-8"); function readTxt() { $handle = fopen ...
- [PHP] Laravel 依赖注入使用不当引起的内存溢出
业务逻辑: 正常在 controller 方法的参数中注入某个类,方法中使用这个类时发生内存超出提示. 分析: 过往显示,正常使用依赖注入是不存在问题的,那么很有可能是哪里发生了循环引用,导致一直请求 ...
- dotnet 修复多框架 TargetFrameworks 包含不受支持平台导致构建失败
本文将告诉大家如何修复 dotnet 项目里的多框架 TargetFrameworks 如果包含了当前系统无法支持的平台时,如何进行跳过.解决在 Linux 平台构建时提示 Mac Catalyst ...
- 剪贴板被占用导致应用使用剪贴板拷贝内容失败抛出 COMException 0x800401D0 错误
本文记录某些软件,例如 向日葵远程控制 软件占用剪贴板,导致 WPF 应用使用剪贴板拷贝内容和设置剪贴板时,抛出 System.Runtime.InteropServices.COMException ...
- 读 MAUI 源代码 理解可绑定对象和可绑定属性的存储机制
和 UWP 与 WPF 不同的是在 MAUI 里面,使用可绑定对象 BindableObject 替换了依赖对象的概念,我阅读了 MAUI 的源代码发现其实只是命名变更了,里面的机制和设计思想都是差不 ...