1. 背景描述
使用NXP MIMXRT板调试代码时,有时目标板在使用IDE和调试器下载代码时会突然遇到调试连接问题。特别是对于使用带有板载默认CMSIS-DAP调试器的NXP RT EVK板的用户。甚至在尝试了很多次之后怀疑目标板坏了。调试器连接使用错误的FDCB、下载进程异常结束、错误的Flash加载程序或 Flash中的异常应用程序代码等时通常发生的问题。问题结果将类似于以下图片:
图.1
图.2
连接日志提示没有连接到芯片的调试端口;错误:Wire Ack Wait Fault线确认等待故障。下面将给出一些方法,以典型的MIMXRT1060-EVK板+MCUXpresso IDE作为测试平台,在遇到调试器问题时恢复目标板。其他平台也类似,恢复方法也可以使用。
2. MIMXRT 板卡恢复方法
主要方法是将MIMXRT板更改为串行下载模式,使内核处于已知状态,然后在IDE中或使用MCUXpresso安全配置工具(SPT)进行大规模擦除。首先,让主板进入串行下载模式:
图.3
进入串行下载模式:
1)SW7:1关、2关、3关、4开
2)关闭电源并重新接通电源,或按下“复位”按键启动目标板
2.1 IDE Mass Erase 擦除操作
在MCUXpresso IDE中,选择相关的调试器接口,然后选择“擦除Flash 操作”。这里以MIMXRT1060-EVK板载默认调试器CMSIS DAP为例:
图.4
图.5
此操作之后,当目标板再次回到内部引导时,调试器可以再次下载到Flash。
2.2 SPT Mass Erase
还可以使用NXP MCUXpresso安全配置工具在串行下载模式下进行代码下载或批量擦除,这种方法也可以恢复MIMXRT目标板,实际上,只需让内核处于已知状态即可。
SPT 工具下载地址:
https://www.nxp.com/design/software/development-software/mcuxpresso-secure-provisioning-tool:MCUXPRE...
安装SPT工具后,将其打开。
1) 创建一个目标 MIMXRT1060 工作区
图.6
2) 用USB或UART连接目标板
这里以USB接口为例。
图.7
图. 8
图.9
图.10
图.11
到目前为止,外部闪存已被擦除!在SPT中,还可以仔细检查内存,特别是FDCB区域是否被擦除,如下图所示:
图.12
用户可以返回到内部启动模式,并使用调试器再次下载代码。内部启动模式:SW7:1-关闭、2关闭、3打开、4关闭。按复位或关机再开机进入内部启动模式,然后使用调试器再次测试,结果如下:
图.13
可以看到 MIMXRT1060-EVK 调试器接口恢复正常。另外在调试时,除了SWD的时钟和数据引脚外,最好将 Reset引脚接上,不接复位引脚有可能调试会弹出如下错误。
图 14
3. 总结
当 Flash闪存包含异常的应用程序(访问Flash不存在、Flash损坏、时钟配置错误等)时,它将导致板最终处于未知状态,然后调试器无法控制内核。但是,当将内核置于串行下载模式时,它将使内核处于已知状态,这样,调试器将能够控制内核。因此,当遇到MIMXRT板中的调试器问题时,请尝试在串行下载模式下批量擦除外部 Flash,然后将板调试器恢复到正常状态。