痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同

link,mxrt1170 · 浏览次数 : 0

小编点评

**不同J-Link版本对于i.MXRT1170连接复位处理** **引言** 不同J-Link版本对于i.MXRT1170连接复位后处理行为可能有所不同。本文将介绍不同版本间的差异,并提供测试方法以确认具体版本的行为。 **J-Link版本变化记录** * V6.64:DLL 7.Added (QSPI) flash programming support for NXP iMXRT117x series devices。 * V6.86:DLL 14.NXP RT117x: Reset did not work for rev B0 silicon. * V7.00:DLL 4.Added quad memory mapped read for NXP iMXRT117x series devices with SPIFI-Lib support. **V6.86f对于RT1170连接复位处理** V6.86开始正式支持RT1170 B0 Silicon,因此从V6.86版本开始进行测试。在测试之前,需要烧录一个链接在0x30002000的XIP App程序。使用J-Link commander操作如下: *烧录一个不是链接在0x30002000的App。 * PC始终停在0x223104。 **不同版本之间的差异** * V7.94f版本在reset后PC已经halt在App里,而V6.86版本则在BootROM里。 * V7.94f版本使用mem32命令读取0x3000a000处内容,而V6.86版本从Flash中获取信息。 **结论** 不同J-Link版本对于i.MXRT1170连接复位处理行为可能有所不同,尤其是在V7.94f版本中。通过测试不同的版本,可以确保使用正确的版本实现复位处理。

正文


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是不同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.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连接复位后处理行为有所不同相似的内容:

痞子衡嵌入式:不同J-Link版本对于i.MXRT1170连接复位后处理行为有所不同

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是不同J-Link版本对于i.MXRT1170连接复位后处理行为。 痞子衡之前写过一篇旧文 《i.MXRT1170上用J-Link连接复位后PC总是停在0x223104的原因》,这篇文章详细解释了 RT1170 BootROM 代码里软件

痞子衡嵌入式:从JLink V7.62开始优化了手动增加新MCU型号支持方法

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是JLink 7.62优化了手动增加新MCU型号支持方法。 JLink 工具可以说是搞单片机开发的必备神器,JLink 包括一个硬件仿真器(分不同用途的 EDU/BASE/PLUS/WIFI/ULTRA+/PRO)和 PC 机上的驱动软件

痞子衡嵌入式:我被邀请做贸泽电子&与非网联合推出的《对话工程师》节目嘉宾

《对话工程师》是「贸泽电子」赞助、「与非网」策划制作的一档网络节目,自2022年11月起,邀请不同技术领域的资深工程师,聊聊开发过程中的经验感悟,栏目共 10 期,痞子衡有幸被邀请做了第 4 期节目的嘉宾(12月5日在 「B站 - 与非网官方账号」里刚播出第 1 期)。 说起与《对话工程师》节目的结

痞子衡单片机排行榜(2022Q4)

痞子衡单片机排行榜(2022Q4) 继2020年开办的《痞子衡嵌入式半月刊》之后,从2023年1月份开始痞子衡将为大家带来新项目《痞子衡单片机排行榜》(一年分四季,每个季度发布一期),以MCU主频和Coremark跑分为基础(后期会加入更多指标),搜罗国内外8051/ARM/RISC-V等不同赛道的

痞子衡嵌入式全部原创文章 - 汇总索引

职场经验与见闻感悟 痞子衡在嵌入式行业也摸打滚爬了不少年,有一些个人经验可以给大家参考。所谓他山之石可以攻玉,希望痞子衡的经验对大家的职场之路有所帮助。 职场经验篇(持续更新中...4/4) 职场上有效地向师傅请教问题的几点建议 关于做技术的工作态度方面的几点建议 工作多年的工程师且看这四条进阶之路

痞子衡嵌入式:Farewell, 我的写博故事2016-2019

-- 题图:苏州天平山枫叶 现在是 2022 年末,痞子衡又要起笔博文年终总结了,看着 2020 年之前的博文总结缺失,始终觉得缺憾,所以写下此篇 2016 - 2019 总结合辑。2016 年之前,痞子衡也发表过一些文章,不过没有持续性,那时候更多是以个人笔记形式留在硬盘里。2016 年是痞子衡正

痞子衡嵌入式:AppCodeHub - 一站网罗恩智浦MCU应用程序

近日,恩智浦官方隆重上线了应用程序代码中心(Application Code Hub,简称 ACH),这是恩智浦 MCUXpresso 软件生态的一个重要组成部分。痞子衡之所以要如此激动地告诉大家这个好消息,是因为 ACH 并不是又一个恩智浦官方 github project site 那么简单而已

痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题。 前段时间有客户在官方社区反映 i.MXRT1170 下使用官方 SDK 里 FlexSPI 驱动去擦写 Flash 时不能很好地支持全局中断。客户项目里用

痞子衡嵌入式:MCUBootUtility v4.0发布,开始支持MCX啦

-- 痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v3.5.0)发布过去 9 个月了,这一次痞子衡为大家带来了版本升级 v4.0.0,这个版本主要有两个重要更新需要跟大家特别说明一下。 一、v4.0更新记录 二、几个不可忽视的更新 2.1 更多MCU型号支持 v4.0

痞子衡嵌入式:盘点国内Cortex-M内核MCU厂商高主频产品(2023)

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是国内Cortex-M内核MCU厂商高主频产品。 在 2021 年初痞子衡写了篇 《盘点国内Cortex-M内核MCU厂商高性能产品》,搜罗了当时市面上主频不低于 96MHz 的 CM 核国产 MCU。如今过去了两年,痞子衡又一次梳理了国