我主力用机是mac+VSCODE+PlatformIO 开发ESP芯片的,最近要转开发GD32 系列的方案,在网上找了半天都是GD32+SPL库的教程,也没有GD embeded builder在mac环境下怎么顺利开发的资料,也没有在mac环境下用HAL库的资料,所以才有下面的笔记。
0.运行环境:
Macos 13.6.9 (22G830)
vscode 版本: 1.92.2 (Universal)
ARM GCC 12.2
GD32E230(我这里用的是GD32E230C8T6)
DAP-LINK
1. 编译工具链
1.1Arm GCC
ARM GCC:(12.2以后版本会有 LOAD segment with RWX permissions 警告)
Arm GNU Toolchain Downloads – Arm Developer
具体可以参考这里:【GD32F310开发板试用】MAC开发&调试环境搭建 - 极术社区 - 连接开发者与智能计算生态
注意的是12.2之后的安装路径跟老版有差异,需要自己手动改一下名字在黏贴复制调整一下。修改好之后如下图:
按照上面链接中的那样用终端查一下version 有输出版本号就OK
1.2Pyocd- debug and flash的工具
下载工具使用的是pyocd
在终端中输入以下代码安装pyocd:
pip3 install pyocd
或者
pip install -U pyocd
(如果未安装python3的同学请自行安装即可)
安装完毕后检查pyocd版本:
pyocd --version
出现版本好即安装成功。
安装好以后就要添加自己芯片的pyocd的支持包 ,运行这个命令
pyocd pack find gd32e230
然后用pyocd pack install gd32e230 安装支持包
1.3 Vscode仿真插件 Cortex-Debug
在VSCode搜索并安装扩展Cortex-Debug
2.GD Embeded Builder
2.1 配置后自动生成代码(GD32E230)
2.2打包输出自动生成的代码
下载后就是这个GD32E230 HAL库的代码
2.3下载GD32E23x Firmware Library
到兆易创新GigaDevice-资料下载兆易创新GD32 MCU
找到自己板的对应的Firmware Library和 addON
完事就有下面三个文件夹
3.工程文件改造
3.1GD Embeded builder 源代码改造
- 在/GD32E230_源代码 目录下建立个Docs文件夹,用来存放用不到的文件。把gdc 和cfg文件放进去。
- 将/GD32E23x_Firmware_Library_V2.1.0/Utilities文件夹拷贝到/ GD32E230_源代码 目录下
3.2加入 makefile模版相关内容
将makefile附件里面的放进工作目录里面
3.3自动生成makefile
进入VSCODE,打开工作目录后,就可以看到文件了。之后就在VSCODE里面操作的多了。
!!!注意事项!!!
/firmware/cmsis/gcc_startup/startup_gd32e23x.S这个文件的名字要重命名为
/firmware/cmsis/gcc_startup/startup_gd32e23x.s
没错,就是大写S扩展名改为小写s,不然makefile 里面的 ASM路径会抓不到,也会ld阶段会报错。
修改makefile模版信息:
- 项目名称-按自己的项目名称修改就好,后配置debug的时候要用到的,不要太复杂。
- 修改CPU的结构 这里E230用的M23.
- 修改FPU 和 浮点运算设置,这里用的GD32E230 所以注释掉
- 修改MCU的型号
然后打开VScode的zsh终端,然后运行CreateMakefile.py
完事就一堆输出,还有一个Makefile文件
3.4make 然后。。。。报错。。。
提示没选好设备。指向的文件是/firmware/cmsis/inc/gd32e23x.h。只要在 这个文件内加个 #define 信息就好
3.5再make 然后。。。还是warning。。。
这是因为用了ARM GCC 12.2的原因,加了个什么机制的。具体可以看这个d
https://www.cnblogs.com/milton/p/16756523.htmlhttps://www.cnblogs.com/milton/p/16756523.html
解决方案如下:
打开/ldscripts/gd32e23x_flash.ld文件,注释掉这两段代码
3.6再make 完美输出bin
4.配置debug的那些事
4.1准备/.vscode里面的文件
用vscode在项目目录内新建一个/.vscode 文件夹,在里面一共需要6个文件
4个json是用来调整vscode的设置的。
cortex开头的两个json不用管,用模版默认就行
tasks.json是用来设置Build Flash等快捷命令的
launch.json是用来设置debug相关设置的
pack文件就是对应的AddOn里面的pack文件
svd文件是讲 pack文件用解压软件解压缩包出来然后拷贝过来,或者导入keli后再导出来。
把pack文件解压后得到以下的文件夹,把SVD文件夹里面的svd文件拖过去/.vscode文件夹里面就行。
4.2修改launch.json信息
launch.json是给vscode用的,主要是给debug用的。要改动的地方见标注的,主要是改device ,targetID 和svdFile。
device TargetID用 pyocd list --targets 命令来确认一下
然后就可以debug了
5.配置烧录的那点事
5.1准备/.vscode的tasks.json
tasks.json是用来自己定义一些快捷命令的。直接用模版的tasks.json就好。已经准备了 create_makefile ,build ,build_flash等命令。
按SHIFT+command+P 调出 Tasks:Run Task,回车
上下选择对应的命令就行。
5.2修改tasks.json信息
tasks.json模版的唯一需要改动的地方是flash 这个的一个参数,我已经标注了。根据自己的芯片型号来改动就行,用 pyocd list --targets 来查看就行
6.编译上传
因为我们已经在tasks.json里面设置好了相关的参数。只要代码没问题,调通了以后。按SHIFT+command+P 调出 Tasks:Run Task,选flash或者build_flash执行。然后就上传好了。
当然我的模版只是一个还不能点灯的模版,用来测试环境是否OK。接下来就要点灯和hello world 了。当然,这里也是个大坑。