序 – 起因
某天在群里看到有人发 sipeed2022_spring_competition 的活动宣传图,如下:
矽速2022春季AIoT挑战赛~~矽速(Sipeed)2022春季AIoT挑战赛,万元大奖等你来拿 ~~
赛题信息:https://github.com/sipeed/sipeed2022_spring_competition
转发比赛信息到1000人以上相关技术QQ群,500人专业微信群,或专业论坛,
即可到矽速官方店领取 BL702 JTAG+UART 调试小板一块~
(截图给客服,仅限第一次转发到该群有效, sipeed.taobao.com)
重点是可以白嫖一块 BL702 JTAG+UART 调试小板 ,对于电子行业的用户来说这是无法拒绝的诱惑;而且还是调试工具。
于是白嫖了这块 Sipeed RV debugger plus JTAG+UART BL702 调试器(有需要的朋友,也可以去白嫖),在他们官方的店铺看到了 Sipeed Longan Nano RISC-V GD32VF103CBT6 单片机 带壳开发板,没忍住,于是就有这篇 linux 下制作 rv-link 的调试器的文章。
准备–初步了解
sipeed 官网关于Longan nano开发板的相关信息、 RV-LINK 介绍信息和 PIO 插件信息。如下:
资源 | 连接 | 详情 |
---|---|---|
Longan nano wiki | https://wiki.sipeed.com/hardware/zh/longan/Nano/Longan_nano.html | Longan Nano是基于兆易创新(GigaDevice)的GD32VF103CBT6(RISC-V架构)芯片设计的极简开发板。开发板将芯片所有IO引出,设计小巧精致,板载Type-C、LCD、SD卡、JTAG等接口,方便广大学生、工程师、极客爱好者们接触学习最新一代的 RISC-V处理器。 |
GD32VF103CBT6 ,基于芯来科技.的Bumblebee内核 | http://dl.sipeed.com/LONGAN/Nano/DOC/ | 支持 RV32IMAC 指令集及ECLIC 快速中断功能。内核功耗仅传统 Cortex-M3 的1/3. |
Longan nano 开发工具 | https://dl.sipeed.com/LONGAN/Nano/Tools/ | 注:Windows 平台 |
Longan nano 相关手册 | https://dl.sipeed.com/shareURL/LONGAN/Nano/DOC | 有中英文版本 |
Longan nano 引脚图和规格书 | https://dl.sipeed.com/shareURL/LONGAN/Nano/Spec | 相关引脚信息 |
HDK 屏幕资料 | https://dl.sipeed.com/shareURL/LONGAN/Nano/HDK | 0.96 inch 80*160 IPS LCD |
Blink 闪灯程序 | https://wiki.sipeed.com/soft/longan/zh/get_started/blink.html | 在 vscode 使用 pio 插件开发,使用 jlink/sipeed-rv-debugger 工具调试,使用 gd32-dfu (仅供 windows)上位机下载调试,使用 zadig 替换驱动信息。 |
RV-LINK 原始仓库(几年没更新了) | https://gitee.com/zoomdy/RV-LINK | 用 RISC-V 开发板实现的 RISC-V 仿真器。与其它仿真器不同的是:RV-LINK 通过 USB 串口直接与 GDB 交互,不需要 OpenOCD 之类的中介。 |
rv-link 第三方仓库(进行了大量功能新增和优化) | https://github.com/michahoiting/rv-link | This project aims to improve the original RV-LINK firmware with the following features: Support for a newly designed hardware board with specific features, called RVL-Probe Support for JTAG over SPI + DMA; Additional diagnostics of the JTAG interface; Support for a second USB to serial adapter; A CAN bus logger; Easy updating of the RV-Link firmware; Support of running RV-Link on other host platforms (e.g. Linux PC+FT323 / Raspberry Pi); Additional mon commands; Additional NVM configurable items. |
vscode 的 pio(PlatformIO) 插件 | https://platformio.org/platformio-ide | 打开 VSCode -> 点击左侧扩展 -> 搜索 PlatformIO -> 点击安装插件 -> 等待安装完成 -> 重启 VSCODE |
gd32-dfu-utils | https://github.com/riscv-mcu/gd32-dfu-utils | Dfu-utils GD32 fork. Dfu-util - Device Firmware Upgrade Utilities |
gd32-dfu-utils AUR 包 | https://aur.archlinux.org/packages/gd32-dfu-utils | AUR 的 gd32-dfu-utils 包,做了处理避免和 dfu-utils 包冲突 |
rv-link-udev-git AUR 包 | https://aur.archlinux.org/packages/rv-link-udev-git | AUR 的 rv-link 的 udev 文件(驱动文件) |
RV-Debugger-BL702 | https://github.com/sipeed/RV-Debugger-BL702 | RV-Debugger-BL702 源码,RV-Debugger-BL702 is an opensource project that implement a JTAG+UART debugger with BL702C-A0. |
python-bflb-mcu-tool | https://aur.archlinux.org/packages/python-bflb-mcu-tool | BOUFFALOLAB MCU TOOL |
python-bflb-iot-tool | https://aur.archlinux.org/packages/python-bflb-iot-tool | BOUFFALOLAB IOT TOOL |
python-bflb-crypto-plus | https://aur.archlinux.org/packages/python-bflb-crypto-plus | PyCryptoPlus is an extension to the Python Crypto module (www.pycrypto.org). |
Bouffalo Lab Dev Cube For Ubuntu | https://dev.bouffalolab.com/media/upload/download/BouffaloLabDevCube-1.6.8-linux-x86.tar.gz | Dev Cube是博流提供的芯片集成开发工具,包含IOT程序下载、MCU程序下载和RF性能测试三大功能。工具提供程序固件启动时的时钟,电源,Flash参数等配置,并可根据用户需求对程序进行加密和签名,生成应用程序启动信息文件。工具还可烧写用户资源文件,分区表文件以及 EFUSE配置文件等。工具可对Flash进行擦、改、写 |
bflb-mcu-tool | https://pypi.org/project/bflb-mcu-tool | BOUFFALOLAB MCU TOOL |
根据上面相关信息,大致有点了解后,应该知道如何安装 git
、 vscode
和 pio
插件 。以下默认已经安装。
编译 RV-LINK – 踩踩坑
- RV-LINK 原始仓库进行编译
- 克隆
RV-LINK
源码
git clone https://gitee.com/zoomdy/RV-LINK.git
- 运行
vscode
,左侧找到pio
,单击后,选择打开本地工程
,选择上面RV-LINK
所在位置 - 左下角单击
编译图标[✔]
,不出意外的话会有如下报错:
KeyError: "Invalid board option 'build.ldscript'":
File "~/.platformio/penv/lib/site-packages/platformio/builder/main.py", line 179:
env.SConscript(item, exports="env")
File "~/.platformio/packages/tool-scons/scons-local-4.3.0/SCons/Script/SConscript.py", line 597:
return _SConscript(self.fs, *files, **subst_kw)
File "~/.platformio/packages/tool-scons/scons-local-4.3.0/SCons/Script/SConscript.py", line 285:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "~/RV-LINK-master/RV-LINK-master/build.py", line 65:
LDSCRIPT_PATH = join(PROJ_DIR, "src", "link", "gd32vf103c-start", "RISCV", "gcc", board.get("build.ldscript"))
File "~/.platformio/penv/lib/site-packages/platformio/platform/board.py", line 46:
raise KeyError("