痞子衡主导的"学术"项目 《RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计》 v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个超级下载算法,目前反馈还可以,但这个超级下载算法远未到成熟状态,痞子衡正在策划 v2.0 版本。

  超级下载算法 RT-UFL v1.0 版本主要针对 Segger J-Link 调试器,开发测试也都是在 J-Link Commander 和 J-Flash 软件下进行的,但其实它也适用各大常用 IDE,今天我们就来聊聊它在 IAR EW for Arm 下的使用:

一、准备测试环境

  首先需要准备好测试环境,包含必要的软件和硬件,痞子衡的环境如下:

  • 集成开发环境: IAR EW for Arm v8.50.6,点此下载
  • 软件开发包: SDK_2.10.0_EVKB-IMXRT1050(Toolchain需包含IAR),点此下载
  • 软件驱动: J-Link driver v6.86f,点此下载
  • 硬件工具: J-Link Plus调试器
  • 硬件开发板: MIMXRT1050-EVKB (Rev.A1)

  上述软件环境里,IAR 版本与 SDK 软件包版本之间没有明确依赖关系,但 J-Link 软件驱动版本与 IAR 版本之间有一些关联,具体在下面 2.2 节里会提及。

  J-Link 软件驱动不是一定限制在 v6.86f,只是超级下载算法 v1.0 是在这个版本下详细测试的,其他 J-Link 版本也可能适合,具体需要进一步测试。

二、在IAR EW for Arm下使用步骤

2.1 将超级下载算法包打进J-Link驱动

  第一步其实跟 IAR 无关,因为是基于 J-Link 的超级下载算法,所以要给 J-Link 软件驱动先打个更新包,具体参照 《超级下载算法RT-UFL v1.0发布,附J-Link下安装教程》 一文。

  • Note: IAR 安装过程中会顺便在 \IAR Systems\Embedded Workbench 8.50.6\arm\bin\ 路径下安装一个默认的 J-Link 驱动(版本不可控,应该是跟 IAR 版本匹配的),但为了避免不可预见的问题发生,最好自己手动安装一个明确的 J-Link 驱动版本来使用(痞子衡安装在了 C:\tools_mcu\SEGGER\JLink_V686f)。

2.2 为IAR指定包含超级下载算法的J-Link驱动

  在默认情况下,所有 IAR 工程都统一使用 IAR 安装目录下自带的 J-Link 软件驱动及其下载算法(假定 App 工程选项设置里仿真器选择的是 J-Link,且不用 IAR 下载算法),但是我们为了超级下载算法额外安装了一个指定版本的 J-Link 软件驱动(v6.86f),因此我们需要指定 IAR 去使用包含超级下载算法的 J-Link 驱动,这里不是在 App 工程选项里设置,而是需要借助 JLinkDLLUpdater.exe 工具。

  在我们额外安装的包含超级下载算法的 C:\tools_mcu\SEGGER\JLink_V686f 目录下,有一个名为 JLinkDLLUpdater.exe 的小工具,双击这个工具,便可看到其搜索到了当前 PC 环境下安装的 IDE 列表,有我们正在使用的 IAR v8.50.6,勾选上 IAR 便能完成 J-Link 驱动的指定。

  其实痞子衡当前 PC 上安装了两个版本的 IAR,分别是 v8.50.6 和 v9.10.2,不过 J-Link v6.86f 版本下的 JLinkDLLUpdater.exe 仅识别出了 IAR v8.50.6,这意味着,如果你安装的是 IAR v9.10.2,可能无法去指定使用 额外安装的 J-Link v6.86f 版本驱动。后来痞子衡安装了最新的 J-Link v7.56b,它下面的 JLinkDLLUpdater.exe 能将两个版本的 IAR 都识别出,这就是文章前面提及的 J-Link 驱动版本与 IAR 版本的关联限制。

2.3 使用IAR打开一个SDK工程

  现在我们需要一个 IAR 工程,这里我们直接打开 \SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky 工程,注意将工程切换到 flexspi_nor build,即代码 XIP 执行版本。

2.4 确保板卡处于Flash启动模式且SDK工程能够XIP

  然后将板卡供上电,确保板卡处于 NOR Flash 启动模式(Boot Mode 以及 Boot Cfg 要设置正确),然后再检查一下 IAR 工程里的 Flash 启动头是否与板卡上的实际 Flash 型号相匹配。

  • Note:要想在 IDE 设置的 Hardware Reset 复位类型下实现在 Flash 调试,上述条件必须要满足,但如果改为 Software/Core Reset 类型,则板卡启动模式以及工程里 Flash 启动头并不影响调试。

2.5 在SDK工程设置里使用J-Link下载算法

  IAR 支持非常多种类的硬件仿真器,这里我们首先需要在工程选项 Debugger/ Setup 下的 Driver 下拉菜单里选择 J-Link/J-Trace,表明目标板卡上连接的是 J-Link 型硬件仿真器。

  然后就来到了全文中最关键的设置了,工程选项 Debugger/ Download 下的 Use flash loader(s) 这个选项默认是勾选的,即代表不管外面连接的是哪种硬件仿真器,统一使用 IAR 目录下自带的 .out 下载算法,但是我们一定要将这个勾选给去掉,因为我们要用指定的 J-Link 软件驱动下的超级下载算法。

  • Note: IAR 安装目录 \IAR Systems\Embedded Workbench 8.50.6\arm\config\flashloader\NXP 下自带的 .out 格式下载算法同时适用 CMSIS-DAP 型和 J-Link 型硬件仿真器,因此哪怕连接的是 J-Link 仿真器,也可以有两种不同类型下载算法选择,这点上 IAR 与上一篇介绍的 MCUXpresso IDE 算法使用设计不太一样。

2.6 选择合适的超级下载算法进行在线下载调试

  还差最后一步就可以愉快地在 Flash 调试了,我们将 J-Link 仿真器连接上板卡,点击 IAR 菜单栏 Download and Debug 按钮进行调试,发现竟然报错了,似乎有下载过程,但无法单步跑。这其实是可以理解的,因为我们还没有选择合适的超级下载算法,至少在 IAR 工程选项里没有显式的去选。

  其实 IAR 工程设置里并没有给我们主动选择 J-Link 下载算法的机会,它自己偷偷通过工程选项里的 General Options/Target 下的 Device 设置,根据 MIMXRT1052xxx6B 值到 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 文件中做了匹配,自动选择了第一个匹配到的 MIMXRT1050_UFL_L0 算法,但其实本次测试我们需要的是 MIMXRT1050_UFL_L1 算法。

  • Note: 超级下载算法具体代号详见 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 文件,代号后缀 _L0 适用 QSPI 和 Octal Flash,代号后缀 _L1/L2 适用 Hyper Flash。

  如何解决选择具体超级下载算法的问题?当然根据情况动态调整 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 文件内容是可行的。比如可以将 MIMXRT1050_UFL_L1 算法 <device> 描述块移到 MIMXRT1050_UFL_L0 算法 <device> 描述块上面,或者保持它们的位置不变,但临时将 MIMXRT1050_UFL_L0 算法 <device> 描述块里 Aliases 表达式里的 MIMXRT1052xxx6B 值去掉。但是这种方法太不友好了,有没有更便捷的方式?

  既然痞子衡这么问了,那肯定是有啦,当在 IAR 里用 J-Link 调试过一次,无论成功与否,都会在工程目录下(\SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky\iar\settings)生成一个 xxProject_flexspi_nor_debug.jlink 文件,用文本编辑器打开这个 .jlink 文件,将 Override 改为 1,然后设置 Device 的值为超级下载算法代号就可以啦。现在看看你是不是可以正常下载调试了。

Override = 1
Device="MIMXRT1050_UFL_L1"

欢迎订阅

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

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

痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用的更多相关文章

  1. 痞子衡嵌入式:探析开启CRC完整性校验的IAR工程生成.out和.bin文件先后顺序

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是开启CRC完整性校验的IAR工程生成.out和.bin文件先后顺序问题. 痞子衡之前写了一篇 <在IAR开发环境下为工程开启CRC ...

  2. 痞子衡嵌入式:实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形(无缓存)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是实抓Flash信号波形来看i.MXRT的FlexSPI外设下AHB读访问情形. 上一篇文章 <i.MXRT中FlexSPI外设对A ...

  3. 痞子衡嵌入式:Keil在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致(J-Link/DAPLink)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是Keil在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致. 本篇是 <IAR EWARM复位类型>.<M ...

  4. 痞子衡嵌入式:第一本Git命令教程(0)- 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家讲的是Git命令汇编,共12篇文章,循序渐进地介绍Git操作的完整过程. 在开始Git课程之前,需要先跟大家普及2个重要概念(四度空间.四种状 ...

  5. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在恩智浦MCUXpresso IDE下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  6. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  7. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  8. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM内核下

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(1)之执行在不同CM内核下. 文接上篇 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计&g ...

  9. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...

随机推荐

  1. adb 常用命令大全(2)- 基础命令

    adb 基本语法 adb [-d|-e|-s <serialNumber>] <command> 命令行参数 -d:指定当前唯一通过 USB 连接的 Android 设备为命令 ...

  2. 性能测试必备命令(4)- pstree

    性能测试必备的 Linux 命令系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1819490.html 介绍 显示进程树 语法格式 ps ...

  3. java版gRPC实战之三:服务端流

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. 处理burp log 小脚本

    burp 日志保存 保存的日志格式为 将日志中的数据包 每个数据包保存到一个单独的txt里面 然后可以控制目录放进不同的目录中 #coding=utf-8 import re import os de ...

  5. 昭山欢node资料学习笔记

    以前学过一片node工作没有用,忘了,趁这个春节在整理一片 第一章 快速塔建一个局哉网服务器 const http = require("http");var server = h ...

  6. 安装Centos7,出现无法联网的问题-----解决办法

    安装Centos7,出现无法联网的问题-----解决办法 我安装的是centos7的版本 在我照着centos7安装教程-CentOS-PHP中文网这个教程安装完后 我发现我的centOS无法联网,在 ...

  7. PHP中DirectIO直操作文件扩展的使用

    关于 PHP 的文件操作,我们也将是通过一系列的文章来进行学习.今天我们先学习的是一个很少人使用过,甚至很多人根本不知道的扩展,它与我们日常的文件操作有些许的不同.不过这些差别并不是我们肉眼所能直观看 ...

  8. 限制只有VIP会员才能下载Ecshop文章页的附件

    以官方2.7.2默认模板为基础来讲述一下"如何在文章详情页限制只有VIP会员才能下载相关附件"这里假设VIP会员的等级ID为2首先修改 article.php 文件打开 /arti ...

  9. AVS 端能力之音频播放模块

    功能简介 音频播放 音频流播放 URL文件播放 播放控制 播放 暂停 继续 停止 其它功能(AVS服务器端实现) 支持播放列表 支持上一首下一首切换 支持电台 事件指令集 AudioPlayer 端能 ...

  10. 我在学习Blazor当中踩的巨坑!Blazor WebAssembly调试

    最近嘛,看看Blazor已经蛮成熟的.顺便想在自家的框架里使用这个东西,毕竟我还是很念旧的,而且Blazor的技术栈也不麻烦.然后呢,在调试这一关我可是踩了大坑. 我的VS是2019,很早以前装的.然 ...