大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件

  想要在Flash中调试,基本是离不开Flash下载算法的,毕竟要先将代码烧写进Flash,然后才能调试。主流MCU开发环境(MCUX / IAR / Keil)以及调试工具(J-Link)的Flash下载算法设计思路基本都差不多,简单的说,就是把Flash擦写操作的底层驱动代码可执行文件通过JTAG/SWD预先加载到MCU内部RAM里,然后继续从JTAG/SWD接收应用程序代码数据并调用预加载的Flash擦写操作代码实现下载。

  痞子衡前段时间为大家介绍过 《利用i.MXRT系列ROM提供的FlexSPI driver API可轻松IAP》,其实MCU开发环境和调试工具里的Flash下载算法也在某种程度上算是一种IAP,目前最新版本的开发环境和工具基本上都是基于ROM API来实现i.MXRT的Flash下载算法的。

  在i.MXRT所有Flash下载算法里,痞子衡认为Segger J-Link版的Flash下载算法是最应该掌握的,毕竟Segger提供了完善的软件工具支持(Jlink commander、J-Flash、Ozone),既可独立使用,也可嵌入其他MCU开发环境中使用(实际上它与Keil算法文件是兼容的),会修改和更新Segger Jlink Flash下载算法,那真是走遍天下都不怕。

  因此痞子衡搞了一个i.MXRT下载算法项目,收集了i.MXRT所有型号的下载算法源代码工程,其中jlink算法是最全的,其他IDE算法还在陆续完善中。今天痞子衡就给大家简单介绍下,如何基于这个项目来生成和更新Segger J-Link Flash算法文件。

i.MXRT下载算法项目: https://github.com/JayHeng/imxrt-tool-flash-algo

1、安装Segger J-Link驱动

  想正常使用 J-Link 仿真器,首先需要在 Segger 官网下载并安装 J-Link 驱动:

2、确定MCU型号在J-Link支持列表里

  以 i.MXRT600 芯片为例,进入 J-Link 安装目录,找到 \SEGGER\JLink_Vxxx\Devices\NXP\ 路径查看是否有 i.MXRT600 的支持,很遗憾,没有发现 i.MXRT600 的踪影,因为 i.MXRT600 型号比较新,还没有被 J-Link 官方支持。

  所以我们需要为 J-Link 增加 i.MXRT600 的支持。将本项目中提供的 i.MXRT600 芯片支持包解压,将包中的 \JLink_V652\Devices\NXP\iMXRT6xx 文件夹拷贝到上图路径下:

  最后需要将如下代码添加到 \SEGGER\JLink_Vxxx\JLinkDevices.xml 文件中,JLinkDevices.xml 文件主要用于告诉 J-Link 仿真器 i.MXRT600 的 flash 算法文件位置在哪里。至此,i.MXRT600 的初步支持已经加到 J-Link 中。

  <Device>
<ChipInfo Vendor="NXP" Name="MIMXRT685S_M33" WorkRAMAddr="0x00000000" WorkRAMSize="0x00480000" Core="JLINK_CORE_CORTEX_M33" JLinkScriptFile="Devices/NXP/iMXRT6xx/iMXRT6xx_CortexM33.JLinkScript"/>
<FlashBankInfo Name="FLEXSPI flash" BaseAddr="0x08000000" MaxSize="0x08000000" Loader="Devices/NXP/iMXRT6xx/MIMXRT6XX_EVK_FLEXSPI.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" />
<FlashBankInfo Name="Secure OSPI flash Secure" BaseAddr="0x18000000" MaxSize="0x08000000" Loader="Devices/NXP/iMXRT6xx/MIMXRT6XX_EVK_FLEXSPI_S.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" />
</Device>
<Device>
<ChipInfo Vendor="NXP" Name="MIMXRT633S" WorkRAMAddr="0x00000000" WorkRAMSize="0x00280000" Core="JLINK_CORE_CORTEX_M33"/>
</Device>

3、生成flash算法文件

  以 i.MXRT600-EVK (Rev.E) 官方开发板为例,使用 Keil MDK (v5.27及以上) 打开 flash 算法工程,这个工程里的默认 flash 配置适用于 EVK 上 Flash 型号以及连法(关于 RT600 的 flash 连法可参考文章 《FlexSPI NOR连接方式大全(RT600)》 )。

  如果是其他型号 Flash 或连法,一般只需要更改 FlashPrg_mx25um51345.c 文件里的 CONFIG_OPTION0 和 CONFIG_OPTION1 的值即可。关于这两个值的定义,参考芯片手册里的BootROM章节,因为 i.MXRT600 支持 ROM API,这里的 flash 算法工程是基于 ROM API 实现的。

  工程成功编译后,会生成 MIMXRT6XX_EVK_FLEXSPI.FLM,这个文件就是我们要的算法文件,其实它就是.axf文件改了个文件类型。你可以手工地将新生成的 .FLM 改个名字(当然最好在 Keil 工程里改名)。

4、使用新生成的flash算法文件

  有了新生成的 MIMXRT6XX_EVK_FLEXSPI.FLM,将其放到 \SEGGER\JLink_Vxxx\Devices\NXP\iMXRT6xx 目录下,并且注意修改 \SEGGER\JLink_Vxxx\JLinkDevices.xml 文件中的 Loader="Devices/NXP/iMXRT6xx/MIMXRT6XX_EVK_FLEXSPI.FLM" 语句(如果你改了.FLM文件名的话)。

  为了让 i.MXRT600 芯片支持包和新 flash 算法生效,最好双击运行一下 \SEGGER\JLink_Vxxx\JLinkDLLUpdater.exe。

5、J-Flash使用示例

  至此我们就可以在 J-Link 下正常下载 i.MXRT600-EVK 上的 flash 了,以 J-Link 配套的 flash 烧写工具 J-Flash 为例。打开 \SEGGER\JLink_Vxxx\JFlash.exe 软件,选择目标芯片为 MiMXRT685S_M33

  然后,将 i.MXRT600-EVK 设为 Serial ISP 模式(SW5[2:1]设为Off-Off-On)并通电,连接上后便可以任意读写擦 flash 了。

欢迎订阅

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

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

痞子衡嵌入式:轻松为i.MXRT设计更新Segger J-Link Flash下载算法文件的更多相关文章

  1. 痞子衡嵌入式:在i.MXRT启动头FDCB里调整Flash工作频率也需同步设Dummy Cycle

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Flash工作频率与Dummy Cycle的联系. 上一篇文章 <从头开始认识i.MXRT启动头FDCB里的lookupTable ...

  2. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的DTR模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的DTR模式. 前两篇文章 <IS25WP系列Dummy Cycle设置> 与 < ...

  3. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的Continuous read模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的Continuous read模式. 前面关于串行Flash传输时序的文章 <Fast R ...

  4. 痞子衡嵌入式:关于i.MXRT中FlexSPI外设lookupTable里配置Normal read的一个小误区

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT中FlexSPI外设lookupTable里配置Normal read的一个小误区. 关于串行四线NOR Flash,当其作 ...

  5. 痞子衡嵌入式:对比i.MXRT与LPC在RTC外设GPREG寄存器使用上的异同

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是对比i.MXRT与LPC在RTC外设GPREG寄存器使用上的异同. 本篇是 <在SBL项目实战中妙用i.MXRT1xxx里Syst ...

  6. 痞子衡嵌入式:其实i.MXRT下改造FlexSPI driver同样支持AHB方式去写入NOR Flash

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下改造FlexSPI driver以AHB方式去写入NOR Flash. 痞子衡前段时间写过一篇 <串行NAND Fl ...

  7. 痞子衡嵌入式:揭秘i.MXRT1060,1010上串行NOR Flash冗余程序启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业 ...

  8. 痞子衡嵌入式:介绍i.MXRT定时器PIT的多通道链接模式及其在coremark测试工程里的应用

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT定时器PIT的多通道链接模式及其在coremark测试里的应用. 早在 2018 年 i.MXRT 系列跨界处理器刚推出的时 ...

  9. 痞子衡嵌入式:在i.MXRT启动头FDCB里使能串行NOR Flash的QPI/OPI模式

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的QPI/OPI模式. 我们知道 Flash 读时序里有五大子序列 CMD + ADDR + MO ...

随机推荐

  1. Java实现蓝桥杯二项式的系数规律

    二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学家杨辉1261年所著的<详解九章算法>一书里就出现了. 其排列规律: 1 1 1 2 1 3 3 1 4 6 4 ...

  2. java实现逻辑推断

    A.B.C.D.E.F.G.H.I.J 共10名学生有可能参加本次计算机竞赛,也可能不参加.因为某种原因,他们是否参赛受到下列条件的约束: 如果A参加,B也参加: 如果C不参加,D也不参加: A和C中 ...

  3. “造轮运动”之 ORM框架系列(三)~ 干货呈上

     这一趴里面,我就来正式介绍一下CoffeeSQL的干货.    首先要给CoffeeSQL来个定位:最开始就是由于本人想要了解ORM框架内部的原理,所以就四处搜寻有关的博客与学习资料,就是在那个夏天 ...

  4. ibatis BindingException Parameter 'status' not found. Available parameters are [arg1, arg0, param1, param2] 解决方法

    最近做项目测试mapper接口时出现了下面这个异常,接口的函数参数找不到,网上搜索发现可能是@Param注解问题. 查阅Mybatis官方文档对@Param的解释如下: 在代码中加入, 异常消失 测试 ...

  5. hadoop知识整理(3)之MapReduce之代码编写

    前面2篇文章知道了HDFS的存储原理,知道了上传和下载文件的过程,同样也知晓了MR任务的执行过程,以及部分代码也已经看到,那么下一步就是程序员最关注的关于MR的业务代码(这里不说太简单的): 一.关于 ...

  6. 【译】构造和匹配二进制(Efficiency Guide)

    可以通过以下方式有效地构建二进制: my_list_to_binary(List) -> my_list_to_binary(List, <<>>). ​ my_list ...

  7. spring源码解读-ioc

    本系列博客结合我的理解,对spring的ioc进行简单分析,欢迎大家批评指正. beanfactory 我们从beanfactory开始,beanfactory是最根部的容器,描述了整个ioc的一些规 ...

  8. Python的数据的基本类型

    基本数据类型 int整数 str 字符串   一般不存放大量的数据 bool  布尔值,用来判断. True,False    list  列表.存放大量数据,[]表示,里面可以放各种数据类型     ...

  9. mysql关于group by的用法

    原文:https://blog.csdn.net/u014717572/article/details/80687042 先来看下表1,表名为test: 表1 执行如下SQL语句: SELECT na ...

  10. mysql日期和时间类型

    TIME 类型 TIME 类型用于只需要时间信息的值,在存储时需要 3 个字节.格式为 HH:MM:SS.HH 表示小时,MM 表示分钟,SS 表示秒. TIME 类型的取值范围为 -838:59:5 ...