RISC-V MCU中文社区

JLink、RV Debugger及串口下载使用体验及踩坑

发表于 GD32VF103 MCU 2021-03-12 16:30:47
2
14721
4

由于穷,本着最大限度利用手头已有资源的原子,虽然报名了课程,但并没有购买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,尽管工程实际开发中并不会受到影响,但是由于配置并未做到开箱即用,且过程中不可控因素导致安装及新建工程能否成功很大程度上取决于运气,所以并不建议“尝鲜”使用。

以上仅为初步体验,可能存在不正确的地方,如有不妥,欢迎大家指正。


喜欢4
用户评论 (2)
  • 2022-03-28 16:32:47 1#

    请问Sipeed RV-Debugger的驱动linux下应该下哪一个呀?处理器架构中没有riscv这一项

  • 2022-03-16 22:19:41 2#

    提供的openocd_jlink运行之后报错咋办

    Open On-Chip Debugger 0.11.0+dev-01889-geee887d60 (2022-01-13-23:33) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : J-Link V11 compiled Nov 12 2020 10:07:08 Info : Hardware version: 11.00 Info : VTarget = 3.290 V Info : clock speed 1000 kHz Info : JTAG tap: riscv.cpu tap/device found: 0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co Ltd), part: 0xe200, ver: 0x1) Warn : JTAG tap: riscv.cpu UNEXPECTED: 0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co Ltd), part: 0xe200, ver: 0x1) Error: JTAG tap: riscv.cpu expected 1 of 1: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1) Error: Trying to use configured scan chain anyway... Warn : Bypassing JTAG setup events due to errors Info : [riscv.cpu] Found 0 triggers halted at 0x0 due to debug interrupt Info : Examined RISCV core; XLEN=32, misa=0x40001105 Info : starting gdb server for riscv.cpu on 3333 Info : Listening on port 3333 for gdb connections Started by GNU MCU Eclipse Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : accepting 'gdb' connection on tcp/3333 Info : device id = 0x00000000 Warn : Cannot identify target as a gd32vf103 family. Error: auto_probe failed Error: Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'. Error: attempted 'gdb' connection rejected

Flagplus

Flagplus 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板