硬件仿真调试MCU。本文GD32F303为例子,笔者总结下事情中所碰着连接问题和一些调
试方法,抛砖引玉勾引大家自行检讨和学习,愉快的畅玩GD32MCU
① 首先为大家先容jlink的调试利器“Jlinkcmd”,它可以方便用户在非仿真的情形下,hold

内核、单步、全速、设置断点、查看内核和外设寄存器、读取flash代码等等,方便大
家拥有最高的权限查看在运行中的MCU情形,查找非IDE仿真情形下,MCU运行非常
的缘故原由。
1. 如何打开Jlinkcmd:
在jlink安装版本目录下可以打开,无安装版本可以在MDK的安装目录的“Segger”文件
下打开cmd。详细可如下图所示。
图1jlink安装版本目录图
2.MDK的安装目录
2. 如何利用Jlinkcmd:
首先利用Jlink连接好MCU,打开软件“Jlink.exe”
图3
按照提示输入相应信息connect-->?-->s-->回车(旧版只须要输入usb即可连接目标芯
片)
图4
精确的链接目标芯片后:
图5(如上图所示,选项字节里为“A55A”即为无保护状态)
Jlinkcommand常用命令简介:
mem 读内存
mem8 读8字节内存
mem16 读16字节内存
mem32 读32字节内存
w1 写8字节内存
w2 写16字节内存
w4 写32字节内存
h 停滞cpu运行的程序
setbp 设置断点
g 跳到代码段地址实行
s 单步实行(调试用)
r 复位
② 接下来向大家先容一款用户程序里无需软件配置可以抓取对应的全局变量数据,并绘制
波形的软件——“J-Scope”
1. 首先前往segger 官网下载对应的软件安装包:
https://www.segger.com/downloads/jlink/#JScope
图6
2. 打开精确安装的软件,选择创建一个新的工程,选择对应的调试接口和速率,在ELF
文本框内添加,KEIL工程下天生的.axf文件或者IAR工程下天生的.out文件。不才
个界面勾选添加想要查看的全局变量(数组可以先输入对应的序号)。末了点击红
色开始按钮,选择对应的芯片型号或者内核,既可以绘制对应变量的波形。
图7
图8
图9
图10
图11
三、连接烧录问题总结1.在MDK内利用jlink调试器无法识别设备ID
图12
缘故原由及办理办法:
1. 检讨jlink是否精确连接目标芯片,芯片引脚PA13PA14是否连接精确、虚焊,PA13
和PA14是否有接反征象。
2. 可能为mcu设置了高等读保护状态。仿真口已经熔断,MCU内部程序依然正常运行。
3. 若连接的是GD32E23x系列,须要担保jlink硬件版本v9及以上,软件版本v6.0以上版
本。如果硬件版本过低请换v9jlink,若软件版本过低,须要将图1安装版本内的对应
的文件覆盖图2MDKSegger文件夹内的文件。重新打开MDK既可以涌现新版的驱动。
4. 若以上剖断均不是,可以先利用前文所述,利用jlinkcmd连接目标芯片,查看是否连
接成功,若连接成功表示芯片是OK的,如图13所示须要将MDK工程目录下的jlink
配置删除掉,重新打开软件或者重新在此配置的左下脚点击扫描device设备。如图10
所示在跳出的unknown设备提示框下,点击“ok”后选好对应的mcu型号或者对应的内
核。若连接也不堪利可查看1和2。
图13
5. 程序里有配置rempJTAG和SWD接口,无法识别id利用SWD或者JTAG下载。
可将BOOT0拉高后复位,即可以识别id下载。(支持大部分系列)
利用外部晶振,可将晶振短接后下载。
将BOOT0拉高复位,利用isp擦除后下载。
2.仿真器配置里可以识别id,但是下载却报错。无法实现下载。
图14
缘故原由及办理办法:
1. 首先确保FlashDownload里面的Flash算法是有精确的添加,有时候在转换工程或选
择其余MCU型号会导致Flash算法里面的DeviceSize和AddressRange对应的大
小不匹配,须要删除后重新添加。
图15
2. 芯片具有读保护或者写保护。可以利用调试方法①来看当前选项字节的信息状况
mem 0x1ffff800 10 (F4xx系列为mem 0x1fffc001 10)
正常无读保护状态的值为A55A 无写保护的状态为FF(如图5所示)
若有保护可以利用ISPgdlink上位机jlink对MCU进行解锁,正常解锁后既可以下载。
3. MCU由于晶振配置跑飞(特殊E103进程里面有8M 和25M 晶振的开拓板),无法正
常下载。
可将BOOT0拉高后复位下载。(支持大部分系列)
利用外部晶振,可将晶振短接后下载。
将BOOT0拉高复位,利用isp擦除后下载。
4. MCU处在上电即进入低功耗模式,无法正常下载。办理方法可如上。
3.能正常下载,但是调试有问题:地址非精确勾引到flash的起始地址或者卡在main
之前的地址。
缘故原由及办理办法:
1. 把稳debug配置里为硬件仿真,不然会卡在时钟初始化里面。
图16
2. 检讨boot0是否接地,不然pc指针跳转的地址禁绝确。
3. 在IAP运用中,检讨对应的下载地址。
4.仿真正常,但是下载后运行不正常。
1. 检讨boot0连接办法,在IAR仿真环境下会自动跳转到下载程序的main函数。
下载后就须要担保BOOT0接地。