第3章 CH32V307下载与调试
第3章 CH32V307下载与调试
本章主要讲解如何通过WCH-Link以及WCHISPTool对CH32V307下载程序,以及如何通过MRS与WCH-Link对CH32V307进行仿真调试。
参考例程见example_code/03_download_debug_demo
3.1 CH32V307下载
CH32V307可以通过MRS和WCH-Link直接下载程序,也通过内置Boot下载程序。
CH32V307通过配置BOOT0和BOOT1引脚电平状态来选择不同启动模式,如下表所示:
BOOT0 | BOOT1 | 启动模式 |
---|---|---|
0 | X | 从程序闪存存储器启动(Flash) |
1 | 0 | 从系统存储器启动(Boot) |
1 | 1 | 从内部SRAM启动 |
用户通过设置BOOT0和BOOT1的引脚电平状态来选择复位后的启动模式。系统复位或者电源复位都会导致BOOT0和BOOT1引脚的电平状态被重新锁存。
3.1.1 使用WCH-Link下载程序
CH32V307使用WCH-Link下载程序的步骤如下:
步骤1:首先参考第2章WCH-Link介绍,确认WCH-Link处于RISC-V模式(空闲时蓝色指示灯不亮)
步骤2:将WCH-Link与PC、CH32V307开发板连接
步骤3:打开03_dewnload_debug_demo工程,点击MRS菜单栏下载按钮即可下载程序。
注意事项及常见问题:
1、新的工程第一次下载时需要配置下载选项,通过点击Download按钮右侧的倒三角,调出下载配置选项页面。
按照下图设置配置选项:
2、若点击下载时提示Warning:Please select a project first.
此时MRS未指定任何工程,需要使用鼠标点击想要下载或调试的工程名称或其中的任意文件即可。
3、若点击下载时提示Warning:Target file “obj\xxx.hex” doesn't exist. Please check.
此时可能是工程中obj文件夹被删除,点击编译按钮重新编译后即可生成obj文件即可;
也可能是工程重新命名后,编译生成的obj目录下的目标文件名称已更改,而下载配置中的Target File目标文件还未更改,重新选择下载配置中的Target File目标文件即可。
4、若点击下载提示 Read-Protect StatusCurrentlyEnable Unknown error。
此时MCU的Flash开启了读保护,在下载配置选项页面解除读保护即可。
3.1.2 使用WCHISPTool下载程序
CH32V307还可以使用WCHISPTool工具通过芯片的内置Boot下载程序,此时需要将BOOT0引脚接VCC,BOOT1引脚接GND,将MCU的启动方式切换至从系统存储器启动(Boot)启动,下载完成后运行程序时,还需将启动模式切换成从程序闪存存储器启动(Flash)启动。
WCHISPTool下载地址:http://www.wch.cn/downloads/WCHISPTool_Setup_exe.html
CH32V307支持USB和串口两种下载方式。USB引脚为PA11(DM)、PA12(DP)或PB6(DM)、PB7(DP);串口引脚为PA9(TX)、PA10(RX)。下载步骤如下:
步骤1:BOOT0接VCC,BOOT1接GND,通过串口或USB连接PC;
步骤2:打开WCHISPTool工具,选择相应的下载方式,勾选配置选项,选择下载目标程序,点击下载;
步骤3:下载完成后,BOOT0接GND,重新上电,运行程序。
WCHISPTool下载界面如下:
3.2 CH32V307调试
通过MRS编译器配合WCH-Link可对CH32V307进行仿真调试,包括断点调试、单步调试、内核通用寄存器查看、外设寄存器查看、全局变量修改调试等功能。
3.2.1 配置Debug调试参数
新建的CH32V307工程编译通过后,默认会自动配置好Debug相关参数,不需要手动配置,通过点击菜单栏Debug按钮右侧的倒三角弹出下拉框,点击Debug Configurations进入Debug参数配置页面。
Debug参数配置页面如下图所示:
默认在GDB OpenOCD Debugging栏下会有对应工程名称的Debug参数配置选项卡,点击该选项卡即可进入该工程的Debug参数配置页面。若没有,双击GDB OpenOCD Debugging就会自动新建一个。
通常情况下,Debug的参数会自动配置好。若不小心更改了一些参数导致无法Debug,可以右击GDB OpenOCD Debugging栏下对应工程的选项卡,点击delete删除,然后双击GDB OpenOCD Debugging栏新建一个即可。
3.2.2 调试启动与退出
(1)启动仿真调试
工程编译无误后,确保WCH-Link和CH32V307评估板正确连接,点击MRS菜单栏的Debug按钮,即可启动仿真。
点击Debug按钮后,MRS进入如下图所示的调试仿真页面。
(2)退出仿真调试
进入仿真调试页面后,需要退出时,直接点击快捷菜单栏终止按钮(terminate)即可。
3.2.3 Debug界面常用调试按钮说明
进入Debug界面后,常用按钮说明如下:
- 屏蔽所有断点按钮。选中该按钮后,执行过程中所有断点处都不会暂停;
- 复位重启按钮。复位MCU,重新开始执行程序;
- 全速运行按钮。遇到断点或手动暂停时才会停下;
- 暂停按钮。将程序挂起,暂停运行,只有当程序全速运行时该按钮才会有效;
- 终止按钮。退出Debug调试
- 单步执行按钮,遇到函数时,会进入函数体继续单步执行;
- 单步执行按钮,遇到函数时,不会进行函数体,该函数也不当作一行程序单步执行;
- 单步返回按钮,单步执行至函数体时,点击该按钮返回。
- 指令集单步模式,进入汇编指令调试。
3.2.4 添加调试断点
所谓断点,就是进入调试全速运行模式时,运行至该断点处会自动暂停,需要再次点击运行才会继续执行。
目前MRS对断点的数量没有限制,但过多的断点会影响调试的速度。
Debug参数调试配置中Startup栏下默认有一个断点,在CH32V307启动文件的handle_reset处,默认进入debug后,从该处开始执行调试。
如需手动添加断点,双击代码行号的左侧,生成一个红色圆点,代表在该行代码处添加了一个断点。
如需查看程序中的所有断点设置,可通过信息栏Breakpoints窗口查看。
3.2.5 变量的监控与动态修改
进入Debug后,可以实时查看全局变量和局部变量,也可以直接修改变量值。
(1)添加watch,实时监控变量
- 选中变量,右击弹出菜单栏
- 点击选中 Add Watch Expression
- 弹出的确认框中点击ok确认
经过如上步骤,可将变量添加至watch,实时查看变量值。也可在Expressions窗口中手动添加需监控的变量。
(3)动态修改变量
CH32V307在Debug过程中,支持动态修改变量值。将变量添加至Watch后,直接在Expressions窗口中,双击变量的Value值修改即可。
3.2.6 查看内核和外设寄存器
Debug模式下的信息栏中:
- 点击选择Registers窗口可,查看调试过程中的内核通用寄存器的值
- 点击选择Peripherals窗口,可查看CH32V307的外设寄存器的值
注意事项:
若点击Peripherals窗口,查看不到详细的外设寄存器参数时,需要在Debug 参数配置中的 SVD Path手动添加CH32V307xxx.svd文件。
${eclipse_home}template\wizard\WCH\RISC-V\CH32V307\NoneOS\CH32V307xx.svd