MCUXpresso IDE在Flash调试的注意事项

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 mcuxpresso ide 下使用 j-link 下载算法在 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 算法文件)。
算法源工程:https://github.com/jayheng/imxrt-tool-flash-algo/tree/master/boards/nxp_evkmimxrt595_rev.a-c/flash_algo_b0_silicon/keil_jlink
有了新 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 确认。
如果出现下载失败,需要查看一下自动生成的 jlink 的 .launch 文件里的设置,尤其是下面的 device 设置,要确保与前面更新的 jlinkdevices.xml 文件里改动的脚本代码里 name 一栏相一致。
这时候可以看到 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 调试注意事项痞子衡便介绍完毕了,掌声在哪里~~~


智能安防时代 技术应用助推视频监控市场发展
乐视品牌成弃子 企业仅仅做互联网电视会压力比较大
为什么比较器要加迟滞?比较器不外加迟滞到底行不行?
F35隐身战机发起了多次空袭行动相当成功
《头号玩家》唤醒VR市场?华为成立VR OpenLab力促产业增值
MCUXpresso IDE在Flash调试的注意事项
产业大数据平台亮相 华夏幸福发力智慧招商
基于区块链技术的娱乐生态链Seeker Chain介绍
比特币的10个基本工作原理解释
监狱重点人员监控系统解决方案,监狱管控系统搭建
PLC实例:顺序控制指令,实现搬运动作
现在有哪些行业在用沃飞长空的工业型无人机
中芯国际N+1 代芯片可望于2021年量产
世界首次用粗铜线和半导体芯片铝电极实施丝焊量产技术
FET差分式放大电路的工作原理
三星GalaxyA60上手体验评测 一款非常值得入手的中端旗舰
CES 2020:柔宇科技展示“柔性星球”全系列新品
中信网络加速边缘计算、5G智能识别等新兴技术架构的快速发展落地
安弗施新型波纹管外导体射频同轴铝电缆
新型传感器有助于在早期发现肺部肿瘤