目录

 1   概 要

 2   适用环境

 3   问题描述

 4   总 结


 1   概 要

在24年中旬,我开启了个人第一个项目,一款J-Link mini烧写器(原文链接:《为了学Cadence,我做了一个J-Link mini》),经过多次迭代后,已上架小店进行售卖;

在提供技术支持时,发现一些常见的配置错误导致调试失败的问题,遂通过本期内容做一下整理,希望能给刚接触MCU的小伙伴们带来帮助。


 2   适用环境

· Keil版本:MDK V5.36.0.0;

· J-Flash版本:V6.98C、V8.34;


 3   问题描述

默认调试工作流为:Keil + J-Link调试器进行程序的下载和debug,以下为问题列举:

  调试器设置问题

现象描述:当点击load下载程序时,弹窗“No ULINK2/ME Device found”,有时也可能会报DAP或者ST LINK设备未找到,现象如下:

    调试器设备未找到    

这大概率是由于调试器类型设置错误引起的,需要根据使用的调试器进行配置,例如这里使用的是J-Link,那么就需要将调试器修改为对应类型,解决如下:

操作步骤:①、点击魔法棒,打开配置窗口;②、点击“Debug”栏;③、选择当前使用的调试器类型;设置完成后,一定要点击OK,否则不会保存配置。

  无法识别MCU问题

现象描述:调试器配置正常,但点击load下载程序时,弹窗“No Cortex-M Device found in JTAG chain.”或者弹窗“No Cortex-M Device found in SWD chain.”,这就是未能识别到目标芯片,现象如下:

    未能识别目标芯片    

这大概率是因为调试接口的配置错误引起的,Arm内核MCU调试接口无外乎两种,即JTAG和SWD,对于JTAG接口一般有至少7根数据线,分别是VCC-3.3V、GND、TCK(时钟)、TMS(模式选择)、TDI(数据输入)、TDO(数据输出)、TRST(复位),对于SWD接口一般只需要四根数据线,分别是VCC-3.3V、GND、SWDIO(双向数据线)、SWCLK(时钟);解决如下:

操作步骤:①、点击“Setting”,打开调试器配置窗口;②、根据目标板上的接口,修改接口配置,例如此处使用的是SWD接口;③、点击“确定”进行保存;④、重新打开配置窗口,就可以看到已经识别到目标芯片。

  Flash烧写失败问题

现象描述:如果调试器配置正确,也能正常识别到目标芯片,但是点击load下载程序时,弹窗“Error:Flash Download failed - “Cortex-M4””,这就是flash烧写失败,现象如下:

    Flash烧写失败    

这个问题大概率是由芯片型号配置错误或Flash烧写算法未配置造成的,所以要先检查芯片型号,再检查Flash编程算法是否配置;解决如下:

操作步骤:①、点击魔法棒,打开配置窗口;②、此处为芯片型号,可以看见目标芯片本身应该是STM32F103VE,但错误设置为GD32F303RC;③、重新选择芯片型号;操作完成后,点击OK保存。

如果经过上述的操作,依然弹窗“Error:Flash Download failed - “Cortex-M4””,那么接着检查Flash编程算法是否正常,解决如下:

操作步骤:①、打开调试器配置窗口;②、切换到Flash Download窗口;③、检查此处Flash编程算法是否正常,如果是空白或信号不对,则需要进行修改;④、当Flash编程算法异常,则点击Add,打开配置窗口;⑤、根据芯片的型号选择对应的Flash编程算法文件,这个算法文件是安装芯片包时自动加载的;全部操作完毕后,点击确定保存。

如果上述的所有配置均正常,但还是失败,那么问题可能就不是Keil配置或J-Link烧写器问题,大概率是目标板存在问题,检查J-Link与目标板的连接线是否松动、目标芯片供电是否正常、晶振是否正常、是否存在虚焊,尤其是自己手工焊接的情况下更容易出现这种低级问题。


 4   总 结

以上这些都是小问题,只是容易被忽略,从而造成各种“诡异”的失败;

遇到错误提示时一定不要慌张,冷静思考可能是哪里出现了问题,整理好排查思路,逐步确认,就可以有效解决;

嵌入式就是这样,遭遇失败是常态,一次成功是少数。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐