本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:HonestQiao
我日常的工作环境使用的是macOS系统或者Linux系统,万不得已才使用Windows。
GD32官方提供了Keil MDK-ARM和IAR两款工具的支持,但是没有提供对ARM-GCC的支持配置文件。而Keil MDK-ARM和IAR,又绑死在了Windows系统,这个真是一个悲伤的故事呀!
经过查阅资料,请教大佬,一番学习研究之后,顺利搞定了macOS环境中的开遍烧调。处理过程,Linux环境同样适用。
学习研究过程中,主要参考了三位大佬的如下文章,深表感谢:
- 【GD32F310开发板试用】MAC开发&调试环境搭建
- 1-VSCode搭建GD32开发环境
- 【GD32F427开发板试用】RT-THREAD标准版 移植使用
下面为搭建的步骤:
- 下载官方提供的开发库:
- 地址:https://aijishu.com/a/1060000…
- 开发板源码套件:GD32F4xx_Demo_Suites,并解压,具体目录如下:
-
-
- 其中我们需要的是:
- GD32F4xx_Firmware_Library为GD32F4xx标准固件库。适用于GD32F4xx系列MCU,与Cortex-M微控制器软件接口标准(CMSIS)兼容。固件库包括程序、数据结构和宏定义,覆盖所有集成外设的特征,并包括了全部相关驱动和示例程序。
- GD32427V_START_Demo_Suites为GD32F427V_START开发板套件演示代码
- 其中我们需要的是:
-
-
-
- 开发环境的源码库配置,是按照 GD32F4xx_Demo_Suites 的结构进行配置的,在自己的环境中,可以根据实际需要修改。
-
-
下载我已经打包好的模板工程:
- 地址:https://gitee.com/honestqiao/…
- 下载后,将该模板工程目录放置到 01_GPIO_Running_LED 同级目录
-
- 说明:
- 该工程的基础文件,来自 01_GPIO_Running_LED
- 支持文件,放置在 support_files 中
- toMakefile.py:用于生成Makefile文件
- Makefile.template:Makefile模版
- startup_gd32f4xx.s:从RTT中提取并根据GD32F427V修改
- GD32F427VK_FLASH.ld:参考RTT中并根据GD32F427V修改
- GD32F4xx.svd:从GD32F4xx的Keil5 Pack中提取并修改
- dot_vscode:vscode配置文件,本项目根目录中.vscode为该目录拷贝改名过去的
- 说明:
-
-
- 如果是自己的工程,则将 support_files 目录拷贝过去,将 dot_vscode 拷贝为.vscode即可
-
-
pyocd 环境检查:
- 安装pycode:
pip3 install pyocd
- 安装GD32F427VK支持包:
pyocd pack find gd32f427v
- 安装pycode:
-
-
- 从Keil工程中的工程属性可以得知,GD32F427V_START为GD32F427VK
- 安装支持包:
pyocd pack install GD32F427VK
-
-
- 检查设备连接
- 将设备的GD-Link口,与电脑连接
- 检查是否识别:
pyocd list
- 检查设备连接
-
- 修改pack包:
- 默认的pack包,提供的svd文件,有一点点小问题,导致在flash或者debug的时候,会出现如下的问题:
- 修改pack包:
-
-
-
- 在github和google寻找过该问题,目前无解:
- Exception in thread load-svd when flash app.bin to target. #1181
- Pyocd flash error for GD32F350G8 - Memory transfer fault @ 0x08000000-0x0800001f #1396
- 在github和google寻找过该问题,目前无解:
-
-
-
-
- 不过该问题,并不会影响实际的flash和debug,但是看着就不爽,经过研究,使用如下的方法解决:
- 找到对应目录:
find /usr -name "cmsis-pack-manager"
- 然后处理:
- # 进入GD32F4xx_DFP目录 cd /path/to/cmsis-pack-manager/GigaDevice/GD32F4xx_DFP # 查看当前的pack文件,后面的命令,请使用此时看到的 ls *.pack # 修改为备份 mv 3.0.3.pack 3.0.3.pack.bak # 解压 unzip 3.0.3.pack.bak # 查看首行 head -1 SVD/GD32F4xx.svd | hexdump | head -1 # 如果显示:0000000 20 20 3c 开头的信息,则需要使用sed处理;关键是20 20 # 如果显示:0000000 3c 开头的信息,则不需要使用sed处理 # 使用sed处理20 20 # macOS sed -i “” ‘1s/^ *//gp’ SVD/GD32F4xx.svd # Linux sed -i ‘1s/^ *//gp’ SVD/GD32F4xx.svd # 查看处理结果 head -1 SVD/GD32F4xx.svd | hexdump | head -1 # 应返回:0000000 3c 开头的信息 # 打包 zip -r 3.0.3.pack Device Flash GigaDevice.GD32F4xx_DFP.pdsc SVD # 删除不用的文件 rm -rf Device Flash GigaDevice.GD32F4xx_DFP.pdsc SVD
- 找到对应目录:
- 不过该问题,并不会影响实际的flash和debug,但是看着就不爽,经过研究,使用如下的方法解决:
-
-
arm gcc 环境检查:
- 安装arm gcc:下载地址:https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
- 检查安装情况:
/usr/local/bin/arm-none-eabi-gdb -v
,如果安装在其他路径,请更换为实际的路径。
- 使用VSCode打开工程配置arm gcc路径:
- support_files/Makefile.template:
-
- vscode配置:.vscode/launch.json、.vscode/tasks.json
- 开始进行开发、编译、烧录、调试:
- 了解该环境系统的任务命令:
从菜单 - 终端 -运行任务,或者从命令面板中执行:
- 了解该环境系统的任务命令:
命令列表说明:
-
-
- _makebuildfolder: 创建编译目录
- env:设置环境
- clean: 清理
- create_Makefile: 生成Makefile文件
- make: 编译
- Build:自动执行_makebuildfolder、env、make
- flash:烧录
-
-
- 生成Makefile文件:
首次打开工程,需要调用 create_Makefile 来生成Makefile文件;
如果增减了文件,也需要调用一次;
其他时候,则无需调用。
具体调用结果如下:
- 生成Makefile文件:
-
- 编译代码:
通常,只需要调用 Build 任务即可。
执行后,会生成elf文件:
- 编译代码:
-
- 烧录elf文件:
调用flash命令即可,执行结果如下:
- 烧录elf文件:
-
- 调试:
先从左则面板中,进入扩展,安装cortex-debug:
- 调试:
再到代码中合适的位置,先打上断点,然后从左则面板,启动调试:
启动后,将会在main的入口处停住,点击右上角的调试操作面板中的||>,继续运行,将会在合适的断点处停留。
经过上述步骤,现在就可以在macOS/Linux系统中,愉快的进行开发、编译、烧录、调试了。