GDB-调试-GD32VF103-RISCV-架构芯片
简述
本文将介绍如何使用 riscv-none-gcc 工具链编译调试当前较为热门的 risc-v 架构 gd32vf103 MCU 。
阅读本文需要准备以下两点:
- 一块 GD32VF103 芯片开发板,板载 GD-LINK 仿真器(或者其他支持调试 risc-v 的仿真器):gd32vf103 是由国内32位通用 MCU 产品供应商兆易创新(GigaDevice)携手芯来科技(Nuclei)推出的全球首款基于 RISC-V 内核的 GD32V 系列通用 MCU 。
- 下载工程源码:点击下载源码 (可以在 gd32vf103 上运行 rt-thread 物联网操作系统的工程)
- 装有 Linux 系统的电脑。//(附加点…2333)
下面开始正题:
下载源码并编译
在电脑命令行窗口输入如下命令,下载代码工程:
git clone https://github.com/balanceTWK/GD32VF103C-START.git
这里有两种编译方法:
1. scons 编译
scons 是一套由 Python 语言编写的开源构建系统.使用 scons 之前,你需要安装它.
ubuntu 下的安装命令如下:
sudo apt install scons
安装完毕后在 GD32VF103C-START 目录下命令行输入 scons 执行编译,得到 *.elf 文件:
scons
编译完成可以看到目录下有了一个 rt-thread.elf 文件.
2. make 编译
细心的朋友应该注意到下载下来的源码目录下有一个 Makefile 文件.事实上,这个 Makefile 文件是由 scons --target=makefile
命令提前生成的.
在命令行输入如下命令执行编译也可以得到 *.elf 文件:
make
使用 gdb 调试
- 将开发板连上电脑.
- 在工程目录下输入如下命令使得 openocd 程序与 gdlink 仿真器进行连接:
sudo ./openocd-gdlink/0.10.0-13/bin/openocd -f ./openocd-gdlink/openocd_gdlink.cfg
- 再开一个终端窗口,输入如下三个命令
启动 riscv-none-embed-gdb 程序
sudo ./riscv-none-gcc/8.2.0-2.2-20190521-0004/bin/riscv-none-embed-gdb ./rtthread.elf
连接上 openocd 提供的 gdb server.
target remote : 3333
加载 rtthread.elf 到目标芯片
load
- 调试命令如下:
在 main.c 文件的 20 行设置断点:
b main.c:20
打印当前运行的 c 代码:
l
运行程序直到遇到下一个断点:
c
另外你还可以再另外开一个命令行窗口,执行脚本 run.sh
,这个脚本打开 python 串口模块的终端,用于查看开发板的串口打印情况.如下图所示:
GDB 的调试命令有很多,本文只演示了几个常用的命令.不过这里还有一个讲 GDB 调试的中文手册,感兴趣的朋友可以下载下来看看.点击下载<GDB完全中文手册.pdf>