痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项。
痞子衡前段时间写过一篇小文《为i.MXRT设计更新Segger J-Link Flash下载算法文件》,介绍了痞子衡在github上的开源i.MXRT下载算法项目,这个项目收集了几乎所有i.MXRT型号的J-Link flash下载算法源工程,基于这个源工程可以很轻松修改生成不同flash的算法文件用于各大IDE以及J-Flash。今天痞子衡就来介绍一下如何使用新生成的flash算法文件配合J-Link调试器在MCUXpresso IDE下XIP调试(基于i.MXRT500)。
1、准备测试环境
首先需要准备好测试环境,包含必要的软件和硬件,痞子衡的环境如下:
其中集成开发环境和软件开发包需要有如下版本对应关系,因为MCUXpresso IDE是恩智浦基于GCC和Eclipse而设计的免费IDE,而且主要是为恩智浦MCU设计的,所以跟恩智浦MCU SDK包有一定的捆绑关系。
2、新生成flash算法
我们测试的板卡是MIMXRT595-EVK (Rev.C1),这个板卡默认是在FlexSPI0上连接的八线Flash(MX25UM51345),J-Link驱动里如果支持i.MXRT500的话默认flash算法也是这个八线flash,为了测试新生成的flash算法,我们将板卡rework一下,FlexSPI0连接到四线Flash(IS25WP064)。
我们现在需要为这个四线Flash(IS25WP064)做一个新flash算法,打开痞子衡的github开源项目如下源工程,确保工程添加的is25wp064相关的源文件,然后编译生成新的MIMXRT5XX_FLEXSPI.FLM(即flash算法文件)。
有了新flash算法文件,将其放到 \SEGGER\JLink_V672b\Devices\NXP\iMXRT5xx 路径下,为了跟默认flash算法区分开来,可以将其重新命名为MIMXRT5XX_FLEXSPI_IS25WP064.FLM,顺便更新JLinkDevices.xml文件。
将板卡供电,连上Jlink调试器,使用JlinkCommander的loadbin命令试一下新flash算法是否有效,在确保新flash算法没问题时再进入IDE调试。
3、进入MCUXpresso IDE调试
3.1 导入SDK及打开示例工程
打开MCUXpresso IDE,默认Installed SDKs界面框里没有RT500,我们直接将下载好的SDK_2.8.0_EVK-MIMXRT595_PRC.zip包拖到Installed SDKs界面框中即可。
这时候Installed SDKs界面框里可以看到RT500,选中它然后继续操作来导入example,我们就选demo_apps下的hello_world例程,编译这个工程确保没问题。
3.2 更新J-Link Server路径
在安装MCUXpresso IDE时会同时安装一个默认Jlink驱动(一般路径在C:\Program Files (x86)\SEGGER\JLink),这个驱动版本不一定新,MCUXpresso会默认调用这个驱动,但很多时候我们都是手动安装新Jlink驱动来使用的(痞子衡装在了C:\tools_mcu\SEGGER\JLink_V672b),前面我们新生成的flash算法也是放在手动安装的Jlink驱动目录下的,因此我们需要在MCUXpresso里重设J-Link Server路径,指向手动安装的Jlink驱动。
3.3 借助J-Link在线调试
看起来一切就绪了,让我们开始在flash调试吧,点击Debug按钮,会看到MCUXpresso弹出了调试器类型选择,并且识别到了我们连接的J-Link,点击OK确认。
这时候可以看到MCUXpresso调用了J-Link驱动完成了代码烧写(这时候去读flash,里面的内容是烧录正确的),但是界面并没有停在main函数里,并且没法单步调试,这是为什么?
3.4 满足MCUXpresso调试流程
然后痞子衡去咨询了MCUXpresso IDE研发团队,得知它默认的调试流程跟一般的通用IDE(Keil,IAR)不太一样,一般的IDE可以直接引导App启动来调试,但MCUXpresso IDE不主动引导App,而是复位后让App自然启动,然后尝试Attach上去接管调试,所以根据这个流程,我们需要做两点必要的改动:
- 更新flash_config头(将hyper flash配置改为QSPI Flash配置),需要与板卡连接的flash相匹配
- 设置ISP模式为从Flash启动,保证reset之后ROM能引导App从Flash正常启动
改动完之后,我们终于可以愉快地单步调试了。
至此,MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)的更多相关文章
- 痞子衡嵌入式:轻松为i.MXRT设计更新Segger J-Link Flash下载算法文件
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件. 想要在Flash中调试,基本是离不开Flash下载算法的,毕 ...
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(4)- 联合调试(vspd, sscom, PyCharm2018.2)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之联合调试. 软件开发离不开调试,调试手段分两种:一是黑盒调试,即直接从输入/输出角度测试软件功能是 ...
- 痞子衡嵌入式:在i.MXRT启动头FDCB里调整Flash工作频率也需同步设Dummy Cycle
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是Flash工作频率与Dummy Cycle的联系. 上一篇文章 <从头开始认识i.MXRT启动头FDCB里的lookupTable ...
- 痞子衡嵌入式:揭秘i.MXRTxxx系列上串行NOR Flash双程序可交替启动设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT500/600上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1170上串行NOR Fla ...
- 痞子衡嵌入式:揭秘i.MXRT1060,1010上串行NOR Flash冗余程序启动设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1060,1010上串行NOR Flash冗余程序启动设计. 工业产品设计里经常会有冗余程序/备份程序设计的需求,因为在工业 ...
- 痞子衡嵌入式:MCUXpresso IDE下在线调试时使用不同复位策略的现象总结
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结. 本篇实际上是<IAR在线调试时设不同复位类型可能会导致i.M ...
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.1)- 玩转板载OpenSDA,Freelink调试器
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK上板载调试器的用法. 本文是i.MXRT硬件那些事系列第二篇,第一篇痞子衡给大家整体介绍了i.M ...
- 痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加C++源文件进SDK工程编译的方法. 最近有客户反映在MCUXpresso IDE下的SDK工程里添加 ...
- 痞子衡嵌入式:MCUXpresso IDE下SDK工程导入与workspace管理机制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程导入与workspace管理机制. MCUXpresso IDE是恩智浦软件团队倾注很大心血研发 ...
随机推荐
- 前端同学经常忽视的一个 JavaScript 面试题
题目 function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = funct ...
- 朋友HDU - 5963 (思维题) 三种方法
传送门 题目描述 输入 输出 样例输入 Sample Input 样例输出 Boys win! Girls win! Girls win! Boys win! Girls win! Boys win! ...
- MySQL常规操作
数据库的相关概念 一.数据库的好处 1.可以持久化数据到本地 2.结构化查询 二.数据库的常见概念 ★ 1.DB:数据库,存储数据的容器 2.DBMS:数据库管理系统,又称为数据库软件或数据库产品,用 ...
- HashMap等集合初始化时应制定初始化大小
阿里巴巴开发规范中,推荐用户在初始化HashMap时,应指定集合初始值大小. 一.原因 这个不用多想,肯定是效率问题,那为什么会造成效率问题呢? 当我们new一个HashMap没有对其容量进行初始化的 ...
- day62 作业
熟练使用无名有名分组 urls.py url(r'^edit/(\d+)/',views.edit_user,name='edit'), views.py def edit_user(request, ...
- 一篇文章掌握 Python 内置 zip() 的全部内容
一篇文章掌握 Python 内置 zip() 的全部内容 zip() 是 Python 中最好用的内置类型之一,它可以接收多个可迭代对象参数,再返回一个迭代器,可以把不同可迭代对象的元素组合起来. 我 ...
- 如何在Linux环境下用虚拟机跑Windows!
文章目录 #0x0 Windows #0x1 安装虚拟机 #0x10 下载: #0x11 安装: #0x2 安装虚拟机windows #0x20 下载镜像 #0x21 安装镜像 #0x3 使用Wind ...
- sql 增加修改表格属性字段
1.修改字段默认值 alter table 表名 drop constraint 约束名字 ------注解:删除表的字段的原有约束 alter table 表名 add constraint 约束名 ...
- CTFHub_技能树_文件上传
文件上传 无限制 直接上传一句话后门,使用蚁剑连接: 获得flag: 前端验证 尝试直接上传后门,发现被拦截,经过判断为Javascript前端验证: 这里可以使用Firefox浏览器插件禁用页面js ...
- iOS应用千万级架构:性能优化与卡顿监控
CPU和GPU 在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器) 对象的创建和销毁.对象属性的调整.布局计算.文本的计算和排版 ...