大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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 v11.2.0_4120,点此下载
  • 软件开发包: SDK_2.8.0_EVK-MIMXRT595_PRC(Toolchain需包含MCUXpresso IDE),点此下载
  • 软件驱动: J-Link driver v6.72b,点此下载
  • 硬件工具: J-Link Plus调试器
  • 硬件开发板: MIMXRT595-EVK (Rev.C1)

  其中集成开发环境和软件开发包需要有如下版本对应关系,因为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上去接管调试,所以根据这个流程,我们需要做两点必要的改动:

  1. 更新flash_config头(将hyper flash配置改为QSPI Flash配置),需要与板卡连接的flash相匹配
  2. 设置ISP模式为从Flash启动,保证reset之后ROM能引导App从Flash正常启动

  改动完之后,我们终于可以愉快地单步调试了。

  至此,MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

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

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

痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)的更多相关文章

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

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是为i.MXRT设计更新Segger J-Link Flash下载算法文件. 想要在Flash中调试,基本是离不开Flash下载算法的,毕 ...

  2. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(4)- 联合调试(vspd, sscom, PyCharm2018.2)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之联合调试. 软件开发离不开调试,调试手段分两种:一是黑盒调试,即直接从输入/输出角度测试软件功能是 ...

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

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

  4. 痞子衡嵌入式:揭秘i.MXRTxxx系列上串行NOR Flash双程序可交替启动设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT500/600上串行NOR Flash双程序可交替启动设计. 在上一篇文章 <i.MXRT1170上串行NOR Fla ...

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

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

  6. 痞子衡嵌入式:MCUXpresso IDE下在线调试时使用不同复位策略的现象总结

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下在线调试时使用不同复位策略的现象总结. 本篇实际上是<IAR在线调试时设不同复位类型可能会导致i.M ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.1)- 玩转板载OpenSDA,Freelink调试器

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK上板载调试器的用法. 本文是i.MXRT硬件那些事系列第二篇,第一篇痞子衡给大家整体介绍了i.M ...

  8. 痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加C++源文件进SDK工程编译的方法. 最近有客户反映在MCUXpresso IDE下的SDK工程里添加 ...

  9. 痞子衡嵌入式:MCUXpresso IDE下SDK工程导入与workspace管理机制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程导入与workspace管理机制. MCUXpresso IDE是恩智浦软件团队倾注很大心血研发 ...

随机推荐

  1. Tomcat启动流程简析

    Tomcat是一款我们平时开发过程中最常用到的Servlet容器.本系列博客会记录Tomcat的整体架构.主要组件.IO线程模型.请求在Tomcat内部的流转过程以及一些Tomcat调优的相关知识. ...

  2. 每日一题 - 剑指 Offer 31. 栈的压入、弹出序列

    题目信息 时间: 2019-06-25 题目链接:Leetcode tag:栈 难易程度:中等 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入 ...

  3. html中绝对路径和相对路径的区别?比较相对路径和绝对路径的优缺点

    绝对路径和相对路径的区别? 1. 绝对路径:就是你的文件或目录在硬盘上的真正的路径例如“bg.jpg”这个图片是存放在硬盘的“E:\img”目录下,那么 “bg.jpg”这个图片的绝对路径就是“E:\ ...

  4. github检索小技巧

    GitHub筛选项目 首先打开主页 没有github账户的小伙伴先注册再登录 (其实不登录也可以下载项目) 登录状态的搜索框 未登录状态下的搜索框 点击搜索框输入内容 根据自己需要,输入关键字搜索 明 ...

  5. 如何白嫖微软Azure12个月及避坑指南

    Azure是微软提供的一个云服务平台.是全球除了AWS外最大的云服务提供商.Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务.这里的Azure是Azure国际不是 ...

  6. web 基础(二) HTML5

    web 基础(二) HTML5 一.HTML5 HTML5 是最新的 HTML 标准.是专门为承载丰富的 web 内容而设计的,并且无需额外插件.它拥有新的语义.图形以及多媒体元素.并提供的新元素和新 ...

  7. php批量 下载图片

    <?php set_time_limit(0); $file = fopen("index.csv",'r');$temp = [];$i=0;$firstsku='';wh ...

  8. session + cookie 实现登录功能

    前端部分代码实现 <div id="mainCp"> <div class="postForm"> <p> <labe ...

  9. 读《大话设计模式》——应用工厂模式的"商场收银系统"(WinForm)

    要做的是一个商场收银软件,营业员根据客户购买商品单价和数量,向客户收费.两个文本框,输入单价和数量,再用个列表框来记录商品的合计,最终用一个按钮来算出总额就可以了,还需要一个重置按钮来重新开始. 核心 ...

  10. Flask 基础组件(七):蓝图

    1 蓝图资源 蓝图有自己的目录,它的所有资源都在其目录下.蓝图的资源目录是由创建Blueprint对象时传入的模块名”__name__”所在的位置决定的.同时,我们可以指定蓝图自己的模板目录和静态目录 ...