痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用
痞子衡主导的"学术"项目 《RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计》 v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个超级下载算法,目前反馈还可以,但这个超级下载算法远未到成熟状态,痞子衡正在策划 v2.0 版本。
- RT-UFL v1.0下载地址: https://github.com/JayHeng/RT-UFL/archive/refs/tags/v1.0.zip
超级下载算法 RT-UFL v1.0 版本主要针对 Segger J-Link 调试器,开发测试也都是在 J-Link Commander 和 J-Flash 软件下进行的,但其实它也适用各大常用 IDE,今天我们就来聊聊它在 Keil MDK 下的使用:
一、准备测试环境
首先需要准备好测试环境,包含必要的软件和硬件,痞子衡的环境如下:
上述软件环境里,J-Link 软件驱动、Keil 版本、SDK 软件包版本之间没有明确依赖关系。J-Link 软件驱动也不是一定限制在 v6.86f,只是超级下载算法 v1.0 是在这个版本下详细测试的,其他 J-Link 版本也可能适合,具体需要进一步测试。
二、在Keil MDK下使用步骤
2.1 将超级下载算法包打进J-Link驱动
第一步其实跟 Keil 无关,因为是基于 J-Link 的超级下载算法,所以要给 J-Link 软件驱动先打个更新包,具体参照 《超级下载算法RT-UFL v1.0发布,附J-Link下安装教程》 一文。
- Note: Keil 安装过程中会顺便在 \Keil_v5\ARM\Segger\ 路径下安装一个默认的 J-Link 驱动(版本不可控,应该是跟 Keil 版本匹配的),但为了避免不可预见的问题发生,最好自己手动安装一个明确的 J-Link 驱动版本来使用(痞子衡安装在了 C:\tools_mcu\SEGGER\JLink_V686f)。
2.2 为Keil指定包含超级下载算法的J-Link驱动
在默认情况下,所有 Keil 工程都统一使用 Keil 安装目录下自带的 J-Link 软件驱动(假定 App 工程选项设置里仿真器选择的是 J-Link),但是我们为了超级下载算法额外安装了一个指定版本的 J-Link 软件驱动(v6.86f),因此我们需要指定 Keil 去使用包含超级下载算法的 J-Link 驱动,这里不是在 App 工程选项里设置,而是需要借助 JLinkDLLUpdater.exe 工具。
在我们额外安装的包含超级下载算法的 C:\tools_mcu\SEGGER\JLink_V686f 目录下,有一个名为 JLinkDLLUpdater.exe 的小工具,双击这个工具,便可看到其搜索到了当前 PC 环境下安装的 IDE 列表,有我们正在使用的 Keil MDK,勾选上 Keil 便能完成 J-Link 驱动的指定。
2.3 使用Keil打开一个SDK工程
现在我们需要一个 Keil 工程,这里我们直接打开 \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 要设置正确),然后再检查一下 Keil 工程里的 Flash 启动头是否与板卡上的实际 Flash 型号相匹配。
- Note:要想在 IDE 设置的 Hardware Reset 复位类型下实现在 Flash 调试,上述条件必须要满足,但如果改为 Software/Core Reset 类型,则板卡启动模式以及工程里 Flash 启动头并不影响调试。
2.5 在SDK工程设置里使用J-Link下载算法
Keil 支持非常多种类的硬件仿真器,这里我们首先需要在工程选项 Debug 下的 Use 下拉菜单里选择 J-LINK / J-TRACE Cortex,表明目标板卡上连接的是 J-Link 型硬件仿真器。选定后点击 Settings 可以识别到当前 J-Link 仿真器序列号(如果仿真器连接上 PC 的话),并且检查下 dll 版本是不是打了超级下载算法的 J-Link 驱动版本(v6.86f)。
然后就来到了全文中最关键的设置了,工程选项 Utilities 下的 Use Target Driver for Flash Programming 选项保持勾选,但是需要将 Update Target before Debugging 这个勾选给去掉(该选项表面意思是仅当镜像文件自上一次下载后发生变化才启动新一次下载,但实测下来还有隐含功能,勾选上则一定会用 Keil 自身下载算法,不勾选则会使用 J-Link 驱动里的算法),因为我们要用指定的 J-Link 软件驱动下的超级下载算法。
- Note: Keil 安装目录 \Keil_v5\ARM\Flash 下(或者 Pack Installer 安装的 DFP 包目录下)自带的 .FLM 格式下载算法同时适用 CMSIS-DAP 型和 J-Link 型硬件仿真器,因此哪怕连接的是 J-Link 仿真器,也可以有两种不同类型下载算法选择,这点上 Keil 与之前介绍的 MCUXpresso IDE 算法使用设计不太一样。
2.6 选择合适的超级下载算法进行在线下载调试
还差最后一步就可以愉快地在 Flash 调试了,前一步我们在工程选项里设置完之后,再次打开工程选项时会弹出 J-Link device 选择窗口,这时候是让你选择合适的下载算法,选择完之后会在工程目录下(\SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky\mdk)生成一个 JLinkSettings.ini 文件,用文本编辑器打开这个 .ini 文件,检查 Override 为 1,然后设置 Device 的值为超级下载算法代号就可以啦。本次测试我们需要的是 MIMXRT1050_UFL_L1 算法。
- Note: 超级下载算法具体代号详见 C:\tools_mcu\SEGGER\JLink_V686f\JLinkDevices.xml 文件,代号后缀 _L0 适用 QSPI 和 Octal Flash,代号后缀 _L1/L2 适用 Hyper Flash。
现在我们将 J-Link 仿真器连接上板卡,点击 Keil 菜单栏 Start/Stop Debug Session 按钮(蓝圈标出的按钮)进行下载调试就可以了。注意不能使用 Download 按钮(红圈标出的按钮)去下载,因为 Download 按钮永远调用的是 Keil 自带下载算法。
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用的更多相关文章
- 痞子衡嵌入式:系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败问题. 我们知道,i.MXRT1xxx家族早期型号(RT1050/ ...
- 痞子衡嵌入式:FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是FlexSPI复位方式不当会导致i.MXRT系列下OTFAD加密启动失败问题. 本篇是<系统时钟配置不当会导致i.MXRT1xxx ...
- 痞子衡嵌入式:第一本Git命令教程(0)- 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家讲的是Git命令汇编,共12篇文章,循序渐进地介绍Git操作的完整过程. 在开始Git课程之前,需要先跟大家普及2个重要概念(四度空间.四种状 ...
- 痞子衡嵌入式:超级下载算法RT-UFL v1.0在恩智浦MCUXpresso IDE下的使用
痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...
- 痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用
痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...
- 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用
痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...
- 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM内核下
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(1)之执行在不同CM内核下. 文接上篇 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计&g ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU硬件那些事(2.3)- 串行NOR Flash下载算法(J-Link工具篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是J-Link工具下i.MXRT的串行NOR Flash下载算法设计. 在i.MXRT硬件那些事系列之<在串行NOR Flash X ...
- 痞子衡嵌入式:超级下载算法RT-UFL v1.0发布,附J-Link下安装教程
痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> 历时 8 个月终于迎来了 v1.0 版发布,因为是第一个正式版,为了保证质 ...
随机推荐
- 了解mysql concat()函数
concat(arg1,arg2,....):将形参对应字段的值组合成一个字符串 假设:现在有一张学生表(test_user) 将这三个字段组合成一个字符串作为第四个字段 select test_us ...
- VUE005. 在data中使用 / 改变data,或在data中调用method函数
使用三方UI库时经常会遇到在data中写入方法的场景,如Element-UI的级联选择器(动态加载part)需要在data中写入lazyLoad. 但后端总会给出意想不到的需求: 通过接口调取一串数据 ...
- vue页面跳转以及传参和取参
vue中this.$router.push()路由传值和获取的两种常见方法 1.路由传值 this.$router.push() (1) 想要导航到不同的URL,使用router.push()方法 ...
- 用Java实现红黑树
红黑树是众多"平衡的"搜索树模式中的一种,在最坏情况下,它相关操作的时间复杂度为O(log n). 1.红黑树的属性 红黑树是一种二分查找树,与普通的二分查找树不同的一点是,红黑树 ...
- https://www.cnblogs.com/spec-dog/p/11161744.html
转自:https://www.cnblogs.com/spec-dog/p/11161744.html 在软件项目研发管理过程中,是否经常出现这样的场景:开发人员不知道什么时候转测:项目经理拿个Exc ...
- 学习PHP中的国际化日期格式化操作
对于国际化功能来说,日期相关的格式化操作也是一块重头戏,毕竟不同的时区,不同的国家对于日期的表示方式都会有些不同.今天我们主要来学习的就是国际化地表示日期相关的信息内容. 日期格式化 首先就是最直接的 ...
- 【PHP数据结构】链表的相关逻辑操作
链表的操作相对顺序表(数组)来说就复杂了许多.因为 PHP 确实已经为我们解决了很多数组操作上的问题,所以我们可以很方便的操作数组,也就不用为数组定义很多的逻辑操作.比如在 C 中,数组是有长度限制的 ...
- Python中类-带括号与不带括号的区别
类不带括号我们叫赋值,带括号我们叫实例化. 什么是赋值? a=7 b=a id(7) 140726814208448 id(a) 140726814208448 id(b) 1407268142084 ...
- 『GoLang』string及其相关操作
目录 1. 字符串简介 2. 字符串的拼接 3. 有关 string 的常用处理 3.1 strings 包 3.1.1 判断两个 utf-8 编码字符串是否相同 3.1.2 判断字符串 str 是否 ...
- 【大咖直播】Elastic 企业搜索实战工作坊(第一期)
借助 App Search 提供的内置功能,您可轻松打造卓越的搜索体验.直观的相关度调整以及开箱即用的搜索分析,不仅可以优化所提供的内容,其提供的 API 还可帮助您将位于各处的所有内容源关联在一起. ...