由于穷,本着最大限度利用手头已有资源的原子,虽然报名了课程,但并没有购买RV-STAR开发板,而是购买了Sipeed Longan Nano最小系统板。但是也是由于是最小系统板,从调试到现在,都需要自己搭配调试器或串口工具来进行,虽然造成了一定麻烦,却也是学习(踩坑)的好机会。
以下将以调试器为顺序,简单叙述使用感受及过程中踩过的坑
0x01 Sipeed RV-Debugger
这个调试器是之前买 Lichee Tang 的时候搭配购买的。由于使用的也是Sipeed家的最小系统板,所以最先使用的也是这个调试器。
手里的这款rv debugger使用FT2232D芯片,自带一路串口及一路JTAG接口,需要安装驱动。驱动下载地址为https://ftdichip.com/products/ft2232d/。
(1)NucleiStudio开发
使用过程参考《NucleiStudio的快速上手》中5.1节安装配置。由于NucleiStudio已经默认集成了所需的所有环境及配置,完全做到了开箱即用。芯来有心了。
(2)PlatformIO开发
由于本人不是嵌入式工程师,而日常工作中需要使用VSCODE进行工作,为了不影响本机的vscode,故此处使用了LonganIDE,下载地址见https://dl.sipeed.com/shareURL/LONGAN/Nano/Tools
此IDE是基于vscode 和 PlatformIO的一键安装开发环境,可以安装在独立文件夹中;相较于直接通过扩展管理器安装,LonganIDE中PlatformIO文件位于安装目录中而非通过VSCODE扩展管理器安装的默认路径User目录,对于系统盘空间不足的用户,可以节约1GB的系统盘空间。
使用过程中,除了由于网络原因安装不畅,创建工程不畅外,一旦工程完成创建,使用体验也十分流畅。
但是使用RV Debugger需要进行额外操作,即使用Zadig替换驱动,此处可以参考sipeed的文档及PlatformIO论坛里的这个帖子。
进入工程后,修改platformio.ini文件,新增或修改以下配置:
upload_protocol = sipeed-rv-debugger
debug_tool = sipeed-rv-debugger
使用感受:自带JTAG及串口,开发及调试方便;体积小巧,价格便宜,不带铁壳的Lite款价格仅为十多元人民币。
不足:由于该款调试器并未引出3.3V电源,板子需要另外通过自带的USB Type-C接口供电,略显麻烦。
0x02 J-Link
由于之前有一些STM32开发经历,对J-Link颇有好感,在看到文档中同时给出了J-Link教程后,十分高兴与感动,于是在体验完RV Debugger后也使用J-Link尝试了一番。
但是,由于手里的J-link版本是V9,官方驱动下,无法支持对risc-v的调试。
在准备放弃的时候,偶然看了本论坛的《芯来科技RV-STAR开箱体验01-开发环境搭建》。才知道V9版本也可以使用,使用方法与RV Debugger类似,同样是替换了驱动,然后使用OpenOCD进行调试。
(1)NucleiStudio
配置方法为复制自带的openocd配置,修改Debugger中Config options即可
修改为:-f "nuclei_sdk/SoC/gd32vf103/Board/gd32vf103c_longan_nano/openocd_jlink.cfg"
openocd_jlink.cfg文件提取自PlatformIO工程目录,为了方便大家使用,这个文件我以附件形式上传了。下载:openocd_jlink
若采用上图配置,下载后将文件放至【工程目录nuclei_sdkSoCgd32vf103Boardgd32vf103c_longan_nano】后即可。
(2) PlatformIO
此处配置同上文中RV Debugger部分一样。若已经能够使用RV Debugger,此处仅需要修改platformio.ini文件,新增或修改以下配置即可。
upload_protocol = jlink
debug_tool = jlink
具体使用参考sipeed的这篇文档
重要说明:在使用zadig替换驱动后,将无法正常使用JLink工具,如果您同时需要调试ARM板子,请不要使用上述操作。但是根据阿莫BBS上的帖子,V10及以上的调试器可以正常使用。
使用感受:可以满足日常调试下载使用。但是由于我的这个(非官方)调试器不带串口,调试时需要使用额外的串口工具,略显不便。
补充:使用V11版调试器
(1)NucleiStudio
参考 5.2. 使用J-Link调试运行项目 配置Debug Configuration并连线,运行成功
(2) PlatformIO
PlatformIO中运行失败。根据输出第一行可以看出,PIO采用了OpenOCD的方式进行调试,如需使用JLINK,似乎需要替换驱动,操作同上文V9版本。故不推荐此方案,理由同上文。
0x03 Serial
虽然串口不能算调试器,但是在没有调试器的情况下,仅凭一个串口仍然能够应付下载程序及print调试法,这里也一并讨论。
(1)NucleiStudio
未尝试
(2)PlatformIO
修改platformio.ini文件upload_protocol = serial即可
上传时需要开发板按住 BOOT 键,再按 RESET 键重启开发板后再松开 BOOT 键,以进入下载模式。
使用感受:相较于使用调试器,使用串口进行下载及调试较为麻烦,仅适合应急使用
0x04 总结
通过PlatformIO的提示信息可以看出,支持的上传工具除了上文提到的3中,还有 altera-usb-blaster, gd-link, rv-link, um232h,虽然这些工具有些也有,但是目前上述的两种调试方式+一种下载方式已经基本满足个人需要,剩下的暂时就没有继续尝试了。
总的来说,使用NucleiStudio+RV Debugger已经做到了开箱即用,使用体检很好,比较建议大家使用。
使用PlatformIO进行开发,虽然VSCode在启动速度等一些方面要强于NucleiStudio使用的Eclipse,尽管工程实际开发中并不会受到影响,但是由于配置并未做到开箱即用,且过程中不可控因素导致安装及新建工程能否成功很大程度上取决于运气,所以并不建议“尝鲜”使用。
以上仅为初步体验,可能存在不正确的地方,如有不妥,欢迎大家指正。