0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

J-Link工具下i.MXRT的串行NOR Flash下载算法设计

454398 来源:alpha007 作者:alpha007 2022-12-08 10:07 次阅读

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 J-Link 工具下 i.MXRT 的串行 NOR Flash 下载算法设计。

一、J-Link 各版本对 i.MXRT 的支持

从 Segger 官网上看,目前最新的 J-Link 驱动版本是 V6.86b,其能够支持目前所有已量产的 i.MXRT 系列,而痞子衡 PC 上安装的是 V6.52e,从 J-Link 历史各版本 Release Note 上看,痞子衡目前的 J-Link 版本不支持全部 i.MXRT 型号,那么如果想要支持新芯片(比如 i.MXRT1170),是不是一定要重新安装最新 J-Link 呢?其实未必!

版本 发布时间 支持芯片
V6.84 2020-09-04 i.MXRT1024
V6.64 2020-03-13 i.MXRT1170
V6.60 2019-12-16 i.MXRT1010
V6.46 2019-05-23 i.MXRT500、i.MXRT600
V6.44 2019-03-01 i.MXRT1015
V6.40 2018-10-26 i.MXRT1064
V6.34 2018-08-07 i.MXRT1060
V6.32 2018-04-20 i.MXRT1050、i.MXRT1020

J-Link 对新 MCU 型号的下载支持并不是与自身版本严格绑定的,其增加新芯片的方式很灵活,只需要按要求添加相应的算法文件即可,这样我们可以不必等待 Segger 的正式发布。

二、为当前 J-Link 增加新 i.MXRT 型号支持

关于增加 i.MXRT 新型号的支持,痞子衡之前写过一篇文章《轻松为 i.MXRT 设计更新 Segger J-Link Flash 下载算法文件》,简介了如何为 v.6.52e 版本新增 i.MXRT600 的支持(那篇文章其实有点疏忽,v6.52 版本已经开始支持 i.MXRT600,直接集成进 JLinkARM.dll 中了,没有显式地放在 JLinkDevices.xml 文件中)。

为当前 J-Link 驱动增加新 i.MXRT 型号支持,其实就是在 /SEGGER/JLink_V652e/JLinkDevices.xml 文件中按模板添加一些代码,至于那些代码是什么含义,在 /SEGGER/JLink_V652e/Doc/Manuals/UM08001_JLink.pdf 文档的Chapter 12 Open Flashloader有详细解释。

让我们试着分析 JLinkDevices.xml 文件中那些模板代码的含义,且以最常见的 i.MXRT1060 型号为例:


  
  

模板代码中参数主要分两类:ChipInfo 和 FlashBankInfo,前者描述算法适用的 MCU 芯片相关信息,后者描述在该 MCU 上适用的 Flash 操作相关信息。

先说 ChipInfo 下的参数:Vendor 和 Name 主要是创建 J-Flash 工程或者在 IDE 里在线下载时弹出 J-Link 选项框时用于确定选择这个下载算法文件的标识。Core 用于指定 MCU 芯片内核类型。JLinkScriptFile 指定开始启用下载算法前需预加载的 Jlink 脚本(可以根据 MCU 特性做一些特殊的初始化工作,比如 RT600 的 Debug Mailbox 激活,RT1170 的双核切换等)。Aliases 就是 Name 的详细展开。

ChipInfo 下最重要的两个参数其实是 WorkRAMAddr 和 WorkRAMSize,它们指明了下载算法(某种 elf 格式文件)被加载进 MCU 内部 SRAM 执行的区域,这两个参数值与 MCU 型号息息相关,必须是合法有效的,但可以不唯一。后面的文章里痞子衡会介绍下载算法设计原理,其最重要的特性是 Read-Only Position Independent 和 Read-Write Position Independent,即下载算法本身不是固定地址链接,而是位置无关链接,算法代码机器码是可以被放到任意地址去执行的。

再说 FlashBankInfo 下的参数:Name 标明下载算法适用的 Flash 类型(FlashBankInfo 可以有多个,对应不同 Flash 的下载算法)。BaseAddr 和 MaxSize 标明该 Flash 在 MCU 系统内存映射中的地址范围,主要用于后续 XIP 调试,跟下载关系不大。Loader 和 LoaderType 则指明下载算法文件位置和类型,这是核心,对于新 i.MXRT 型号的下载支持,大部分工作其实就是提供合适的 Loader。

三、NOR Flash 下载算法设计

前面讲了 J-Link 对于新 i.MXRT 型号的下载支持,其实就是提供合适的 Loader 文件,Loader 文件的设计是核心,那么 J-Link 的 Loader 到底是怎么设计的呢?这得先从理解 LoaderType 这个参数说起。

搜遍整个 UM08001_JLink 文档,LoaderType 仅有一个值,即 FLASH_ALGO_TYPE_OPEN,文档里的解释是使用公开的 Flashloader 算法设计,这个公开的 Flashloader 指的是 ARM 官方的基于 CMSIS 的 Flashloader。

ARM 开源的 Flashloader 算法属于 CMSIS-Pack 中的 Device Family Pack (DFP) 里的一个组成部分,它本来是专用于 Keil MDK 下的,但是 Segger 为了保持其 J-Link 工具链的通用性,选择了与 ARM Flashloader 的 API 接口保持一致,这意味着 Keil MDK 与 J-Link 两者的下载算法文件基本是可以交换使用的(当然设计上有一点小区别,后面文章会介绍)。

鉴于 Segger 并没有开源其下载算法源码,因此我们无法得知其 J-Link 自带的下载算法文件具体是怎么实现(例如 Devices/NXP/iMXRT106x/NXP_iMXRT106x_QSPI.elf),虽然我们可以根据每次的 J-Link 驱动版本更新时的记录得知其动态,但总觉得是个黑盒子。

Version V6.80d
  DLL 3.NXP RT106x: Flash programming >= 8 MB failed. Fixed.

Version V6.80c
  DLL 1.NXP RT106x: QSPI programming failed under specific circumstances. Fixed.

Version V6.70
  DLL 19.NXP RT106x: QSPI programming did not work for some already supported flashes. Fixed.

Version V6.62b
  DLL 9.NXP iMXRT106x: (Q)SPI flash programming did not work when using Adesto ATXP064 as external flash. Fixed.

Version V6.60
  DLL 1.Added flash programming support for NXP MIMXRT1062DVJ6A (QSPI flash).

Version V6.40b
  DLL 4.Fixed clock restore settings within programming algorithms for iMXRT105x and iMXRT106x QSPI-FLASH and HyperFLASH series devices.

Version V6.34
  DLL 8.Added QSPI-Flash programming support for NXP i.MX RT106x series devices.

下一篇文章,痞子衡将带大家深入探究 Keil MDK 下的下载算法设计,了解了这个 MDK 下载算法,我们便可以自己为 J-Link 设计下载算法,从此再也不用担心黑盒子。

至此,J-Link 工具下 i.MXRT 的串行 NOR Flash 下载算法设计痞子衡便介绍完毕了,掌声在哪里~~~

审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法设计
    +关注

    关注

    0

    文章

    24

    浏览量

    8020
  • J-Link
    +关注

    关注

    0

    文章

    77

    浏览量

    21951
收藏 人收藏

    评论

    相关推荐

    J-LINK提示Active write protected STM32 device detected但是驱动能正常识别,为什么?

    J-LINK 提示 Active write protected STM32 device detected... 但是驱动能正常识别。在线等,谢谢!采用的swd的下载方式,现在是驱动能正常识别,就是找不到SWD,下载不了程序。
    发表于 04-25 07:04

    j-link的操作命ConfigTargetSettings()发出的数据有什么具体的意义吗?

    错,请各位工程师指点一j-link发出的数据有什么含义吗?因为目前两线的连接方式正确但是不能定位这个错误是什么导致的。下图是j-link编译器的截图,左边是四线接口的,右边是两线接口的。
    发表于 03-20 07:48

    STM32WB55RG是否可以使用j-flash通过j-link烧录协议栈和FUS bin文件?

    硬件基于STM32WB55RG是否可以使用j-flash通过j-link烧录协议栈和FUS bin文件?
    发表于 03-12 07:14

    使用Dave IDE将更新的固件配置刷新到XMC4700,会收到J-Link驱动程序错误怎么解决?

    ; 调试器即可刷新,但当我按下调试\"(似乎是按闪存的按钮)时,我还是会收到 J-Link 驱动程序错误。 你能帮我解决这个问题吗? 我的总体目标是为Distance2Gol上的一条I2C线路配置一个地址,这样我就可以从Ard
    发表于 01-23 07:54

    请问MS51FB9AE能否用J-LINK下载器进行烧写?

    MS51FB9AE能否用J-LINK 下载器进行烧写?
    发表于 01-17 06:04

    ADUCM360 DEMO板中的J-LINK固件掉了怎么办?

    ADUCM360 DEMO板中的J-LINK固件掉了怎么办!! 通用大个的J-LINK可以通过里面的跳线重烧固件恢复,但是DEMO板中配套的J-LINK送的跳线不知道有没有接出?接出了也不知道那几个?
    发表于 01-15 06:35

    J-Link下载代码异常的解决方法

    较多电路板在设计时,为了节省空间,会采用 SWD 方式下载程序,并在硬件设计上只将 SWCLK、SWDIO 及 GND 与 J-Link 对接,此时就有可能会出现无法正常下载代码的现象此问题只针对
    发表于 10-19 07:40

    什么是串行Nor Flash串行Nor Flash的结构和参数特性

    引言:串行Nor Flash是一类使用比较多的存储器件,在特殊应用场景中具有不可替代的地位,本节是数字存储器件系列第一节,介绍串行Nor
    的头像 发表于 09-05 10:09 1884次阅读
    什么是<b class='flag-5'>串行</b><b class='flag-5'>Nor</b> <b class='flag-5'>Flash</b>?<b class='flag-5'>串行</b><b class='flag-5'>Nor</b> <b class='flag-5'>Flash</b>的结构和参数特性

    请问MS51FB9AE能否用J-LINK下载器进行烧写?

    MS51FB9AE能否用J-LINK 下载器进行烧写?
    发表于 08-30 07:49

    求助,如何解决J-Link调试蜂鸟E203失败的问题?

    这个低速时钟供SoC使用。 接下来下载比特流到我的板子上,将一个J-Link通过GPIO接到蜂鸟E203的jtag上,用NucleiStudio软件通过GDB OpenOCD Debugger调试,软件
    发表于 08-16 08:23

    串行Nor Flash的结构和参数特性(1)

    引言:串行Nor Flash是一类使用比较多的存储器件,在特殊应用场景中具有不可替代的地位,本节是数字存储器件系列第一节,介绍串行Nor
    发表于 08-11 15:44 1319次阅读
    <b class='flag-5'>串行</b><b class='flag-5'>Nor</b> <b class='flag-5'>Flash</b>的结构和参数特性(1)

    深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程

    我们知道外部串行NOR Flash是接到i.MXRT的FlexSPI外设引脚上,有时串行NOR
    的头像 发表于 06-02 17:43 1014次阅读
    深入i.<b class='flag-5'>MXRT</b>1050系列ROM中<b class='flag-5'>串行</b><b class='flag-5'>NOR</b> <b class='flag-5'>Flash</b>启动初始化流程

    使用J-LINK调试S32K344发现可以正常下载程序,但是无法在线调试怎么解决?

    您好,使用J-LINK调试S32K344发现可以正常下载程序,但是无法在线调试。但是PEmicro调试没问题。
    发表于 05-29 07:56

    MXRT1050 FlexSPI有没有办法支持超过16个flash命令的NOR Flash设备?

    flash 命令的 NOR Flash 设备? 2. 有没有办法在没有 LUT 的情况使用 FlexSPI 模块?-----
    发表于 05-08 06:52

    为什么无法通过J-link将iMX 8QM MEK套件与PC连接?

    是“无法连接。无法建立与目标的连接”。如何将套件与 J-link segger 连接?我正在使用 JLink plus 进行连接。谢谢!
    发表于 05-04 08:42