NXP i.MXRT10xx 开发板程序跑飞、下载失败、连接CPU失败 - [已解决]



问题描述

在使用NXP RT10x0系列的童鞋,会经常遇到在某次下载SpiFlash代码后,再次Debug就连不上,提示下方:

在这里插入图片描述
这时IAR无论如何也连接不上板子了,通Jflash连接,也会提示DAP Register Failed, 初次遇到会误认为硬件坏掉了。。

问题解决

解决方法有两种:

方法1、通过 清空Memory(需更改BootMode)

1、更改BootMode为Serial启动,这里我用的RT1060,所以将1060开发板的SW17更改为Serial 模式:
SW7 to “1-OFF, 2-OFF, 3-OFF, 4-ON”.:

在这里插入图片描述

2、通过IAR打开一个NXP SDK工程,并切换Debug模式,然后清空Memory
这里随便选择一个Led_Blinky的工程,点击Erase Memory

在这里插入图片描述
注意要选择Debug Configuration
在这里插入图片描述

3、Erase后,将开发板SW7拨回正常启动(Internal Boot)
SW7 to “1-OFF, 2-OFF, 3-ON, 4-OFF”.:
在这里插入图片描述

最后就发现IAR可以正常连接调试了:
在这里插入图片描述

BootMode如下
在这里插入图片描述

方法2、通过MCUBootUtility烧写/下载任一程序,如LedBlinky:

  1. 下载MCUBootUtility: https://github.com/JayHeng/NXP-MCUBootUtility/releases
  2. 将EVK board SW7改为Serial :

在这里插入图片描述
3. 下载后在NXP-MCUBootUtility/Bin中打开NXP-MCUBootUtility.exe ,然后根据使用的硬件,选择MCU Device、Boot DeviceConfiguration、BootType、
在这里插入图片描述

4.点击Connect to ROM/Reset Device连接,连接后选中Borwse打开编译好的Hex/bin (如打开文件里包含测试用的LedBlinky固件)最后点击上方All-in One Action烧写程序到单片机
在这里插入图片描述

具体使用可参见https://github.com/JayHeng/NXP-MCUBootUtility

根本原因

原因也有多种:

  • 一种是由于Jlink来不及在程序跑飞前连接MCU

在 Flash-XIP代码跑飞后,Jlink在Reset后Code会立即运行,所以无法进行连接(跑飞的原因有多种,如硬件配置、野指针、初始化失败、代码bug等)

  • 另一种是由于写入的程序FCDB和BootHeader有误,导致Bootloader无法正确引导启动

这种情况需要检查下BootHeader的Macro是否开启:
在这里插入图片描述
将XIP_BOOT_HEADER_ENABLE设为0,即不需要生成包含i.MXRT加载启动文件头的image;
如果为1,那么生成的可执行image文件会包含i.MXRT加载启动文件头,生成的image也可叫做Bootable image,即能被BootROM正确加载启动的image

一般XIP(eXecute In Place,如flash)中的image,都要定义:
XIP_EXTERNAL_FLASH=1

XIP_BOOT_HEADER_ENABLE=1

这样BootROM才能在flash中加载application到RAM/XIP执行


博主热门文章推荐:

一篇读懂系列:

LoRa Mesh系列:

网络安全系列:

嵌入式开发系列:

AI / 机器学习系列:


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HowieXue

求打赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值