一、序言
近期从创易栈中很荣幸获得了一块GD32VF103C-START 开发板,是基于RISC-V内核的32位通用微控制器,从这个网站我初步了解了这个芯片的特性,大家可以上网看看,内核是使用芯来科技Bumblebee内核(RV32IMAC),指令集是开源的,不用许可,这个和arm是有区别的,因此,我认为可以降低成本了,毕竟没有了arm的许可费用。
https://www.riscv-mcu.com/index.php?na=quickstart&app=quickstart&ac=index&u=GD32VF103
GD32VF103C-START 学习板使用 GD32VF103CBT6 作为主控制器,你看名字很像stm32的命令规则,这样带来了学习的亲切感,可以快速入门~~。学习板使用 Mini USB 接口提供 5V 电源。提供包括扩展引脚在内的及 Reset, Boot, Wakeup key, LED, GDLink, Ardunio 等外设资源。
GD32VF103CBT6有128K的flash,封装是LQFP48数据手册上有的,上gd32官网下载即可。
二、资料准备
工欲善其事必先利其器,有了开发板就要有开发工具、开发资料,对于gd32v主要从gd32、芯来科技的两个官网中去寻找。
另外还有一个网站也是不错的https://www.riscv-mcu.com/,有入门教程,可以参考的。
gd32官网中,提供了很多数据手册,用户手册、例程等资料,其中也给出了很多IDE的链接,比如SES,这个是segger公司开发的编译器,据芯来科技的文档,需要集成编译工具的,具体没测试;另外还有IAR的编译器,但是不免费的,IAR已经和gd32达成了合作伙伴关系了。PlatformIO是可以集成到vscode的,网上也有教程,我就不折腾了。
我这里以芯来科技https://www.nucleisys.com/的NucleiStudio_IDE_202008来进行测试。修改版本如下。
1、Nuclei Studio IDE
头几天还是2019版本,我是8.5中的奖,当天下载是老版本的,今天下载已经2020了,两个版本是有区别的,下文细讲。
直接下载Nuclei Studio IDE即可,是基于eclipse的gcc开发平台,芯来科技对gcc根据自己的平台进行了封装。
工具链都是免费开源的,其中在github中有存档的叫riscv-none-embed-gcc,而且想必芯来科技也是基于这个进行封装的,在IDE中,两个编译器的工具名字是不太一样的。https://xpack.github.io/riscv-none-embed-gcc/
2、安装IDE
很多基于Eclipse的IDE都是直接解压即可,无需安装,里面包含了gcc、build、openocd工具,方便的同时也带来了另外一个问题是工程设置中需要手动添加各工具链的路径,否则无法编译的。解压好后如下所示。
Nuclei Studio就是所需要的开发环境了。
3、下载例程
(1)可以到gd32下载
(2)可以到https://www.riscv-mcu.com/的入门教程中提到的链接中下载,有ses例程和Nuclei Studio 例程。
三、工程创建
官网教程中有两种方式创建工程,一种是导入现有的工程,比如官网的例程,另一种是手动创建。
1、工程导入
针对官网的例程,我们使用的是existing projects into workspace选项,
next后,点击浏览按钮
然后定位到eclipse的目录即可导入,详细可以参考https://www.riscv-mcu.com/入门文档。
2、工程设置和编译
导入的工程需要额外的设置,因为例程很有可能不是和当前的IDE匹配的。
(1)芯来科技的toolchain中,已经重命名了工具链,如划线所示。而原本的名字是riscv-none-embed-gcc,那么编译就会出现找不到gcc而编译失败。
另外这个选项也会更新makefile文件。不要手动修改makefile文件,因为eclipse编译会以工程设置为准,即便改了也无济于事。
(2)gcc交叉编译器等路径设置,其实openocd是开源的调试软件,类似于jlink,英文:Open On-Chip Debugger,另外IDE也是可以设置jlink的路径的。
(3)Ld文件设置,类似于keil的分散脚本文件,被linker所调用。修改如下,最右侧双击修改即可,文件选择的是工程目录下的ld文件
(4)编译,最后就是编译了,生了elf文件。顺带提一下,ELF格式在非Windows平台上使用得比较多,在 Windows平台基本上没见过,通常使用的elf文件,全称:Executable and Linking Format,这个使用stm32开发的工程师应该比较熟悉,看名字就是知道需要linker才能生成可执行文件的。
四、下载运行
这里遇到了一点坑吧~顺便记录下。
通过上述方式导入的工程,是没有下载所需的openocd_gdlink.cfg文件的,因此,我在https://www.rvmcu.com/quickstart-quickstart-index-u-Nuclei_Studio.html看到原文如下:
注意:如果用户是参考《使用Nuclei Studio快速开发GD32VF103》的方法,工程中没有生成GD_Link的配置文件,需要增加此步骤的操作,https://github.com/riscvmcu/GD32VF103_Demo_Suites 下载“openocd_gdlink.cfg”文件到本地,按照如图7-4 的方法进行操作。那么就下载了openocd_gdlink.cfg放到我的目录中:GD32VF103_Firmware_LibraryRISCVenv_Eclipseopenocd_gdlink.cfg
然后如下操作:
代码语言:javascript复制set arch riscv:rv32
set remotetimeout 250
这两个语句一定要加!否则回出现如下错误:
代码语言:javascript复制Error in final launch sequence
Failed to execute MI command:
-target-select remote localhost:3333
Error message from debugger back end:
bfd requires xlen 8, but target has xlen 4
Failed to execute MI command:
-target-select remote localhost:3333
Error message from debugger back end:
bfd requires xlen 8, but target has xlen 4
bfd requires xlen 8, but target has xlen 4
然后点击run,就开始运行了
运行结果如下:LED等就闪烁了,频率是1Hz,和代码基本一致。
五、总结
这个评测写了3天,从熟悉单片机到IDE到下载,遇到了一点小坑,不过好在解决了,其实很多内核与外设都没有熟悉,毕竟是riscv内核,与arm的是有区别的,而且openocd的使用也是有待学习的。
整个开发环境都是免费的,包括下载工具,就是开发资料太少了。
另外,NucleiStudio编译器的升级,带来了两点变化,首先是编译器名字换了,其次,添加了所谓的sdk,那么具体使用就需要参考官方文档了,网上的资料都是老的版本的编译器使用方法。
六、参考链接
芯来科技:https://www.nucleisys.com/
Gd32:http://www.gd32mcu.com/
论坛:https://www.rvmcu.com/
21ic论坛:https://bbs.21ic.com/icview-2860682-1-1.html?ordertype=1,https://bbs.21ic.com/icview-2864430-1-1.html
Github
仓库:https://github.com/riscv-mcu/Nuclei-Studio_IDE-Project-Package,https://github.com/riscv-mcu/GD32VF103_Demo_Suites