目录
- 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置
- 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟
- 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置
- 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析
- 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明
硬件部分
- CH32V208WBU6 评估板
- WCH-LinkE 或 WCH-Link
硬件环境与Windows下相同, 不详细介绍
软件部分
沁恒已经开源WCH-Link的协议, 因此这部分的选项将会很丰富, 这里还是以沁恒官方的定制版 RISC-V Embedded GCC 和 OpenOCD 为例进行说明.
下载
从 http://mounriver.com/download 下载最新的工具链. 当前版本是 MRS_Toolchain_Linux_X64_V170.tar.xz, 对于 CH32V208, V1.60版本也能支持. 压缩包中包含 RISC-V Embedded GCC 和 OpenOCD.
配置
解压工具链,
sudo tar -xvf MRS_Toolchain_Linux_X64_V170.tar.xz
在解压后的目录下有一个README, 这个文件比较重要. 因为沁恒每次出新版本都可能有一些变动, 导致前一个版本的 cfg 或者命令行无法使用, 这个 README 中会列举当前版本可用的烧录和debug命令, 需要留意.
将工具链移动到合适的位置, 并修改owner为root避免误修改
sudo mkdir -p /opt/gcc-riscv/
sudo mv "MRS_Toolchain_Linux_x64_V1.70/RISC-V Embedded GCC" /opt/gcc-riscv/riscv-wch-embedded-gcc-v1.70
sudo chown -R root:root /opt/gcc-riscv/riscv-wch-embedded-gcc-v1.70
sudo mkdir -p /opt/openocd/
sudo mv MRS_Toolchain_Linux_x64_V1.70/OpenOCD /opt/openocd/wch-openocd-v1.70
sudo chown -R root:root /opt/openocd/wch-openocd-v1.70
额外的动态链接库, 在 beforeinstall/start.sh 里是直接复制到 /usr/lib, 稳妥起见, 还是单独建一个目录放进去
sudo mkdir -p /usr/lib/wch/
sudo cp -P beforeinstall/lib* /usr/lib/wch/
sudo ldconfig
配置设备权限
根据 start.sh 中执行的命令, 需要将两个规则文件复制到 /etc/udev/rules.d.
先检查一下 /etc/udev/ 下是否已经存在相关的配置, 如果有, 需要和这两个规则整合一下, 如果没有, 直接复制然后更新就可以了
sudo cp beforeinstall/50-wch.rules /etc/udev/rules.d
sudo cp beforeinstall/60-openocd.rules /etc/udev/rules.d
# Reload rules
sudo udevadm control --reload-rules
验证
执行这两个命令应该能看到正确的输出, 如果有报错, 需要先排查问题
~$ /opt/gcc-riscv/riscv-wch-embedded-gcc-v1.70/bin/riscv-none-embed-gcc --version
riscv-none-embed-gcc (xPack GNU RISC-V Embedded GCC, 64-bit) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
~$ /opt/openocd/wch-openocd-v1.70/bin/openocd --version
Open On-Chip Debugger 0.11.0+dev-02415-gfad123a16-dirty (2023-02-22-15:09)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
运行示例项目
基于 CH32V20x 的参考例程 https://www.wch.cn/downloads/CH32V20xEVT_ZIP.html, 调整结构并增加 Makefile, 已经提交至 GitHub, 可以直接导出进行编译和烧录.
项目地址: https://github.com/IOsetting/ch32v208-template
从 GitHub 导出项目
git clone https://github.com/IOsetting/ch32v208-template.git
根据自己的环境, 调整 Makefile 中的路径信息, 其它内容可以保持默认
##### Toolchains #######
GCC_TOOCHAIN ?= /opt/gcc-riscv/riscv-wch-embedded-gcc-v1.70/bin
OPENOCD_PATH ?= /opt/openocd/wch-openocd-v1.70/bin
执行编译
make clean
make
如果CH32V208评估板已经通过 WCH-Link 连接上PC, 可以执行下面的命令进行烧录
make flash
沁恒V1.60 的 openocd 不支持 CH32V208, 烧录不报错, 但是不运行, 要用 V1.70 版本才行.
GDB Debug
打开终端, 用沁恒定制的 openocd 启动 GDB Server, 注意要连上 WCH-Link, 不然 Server 会报错退出.
/opt/openocd/wch-openocd-v1.70/bin$ ./openocd -f wch-riscv.cfg
Open On-Chip Debugger 0.11.0+dev-02415-gfad123a16-dirty (2023-02-22-15:09)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : only one transport option; autoselect 'sdi'
Warn : Transport "sdi" was already selected
Ready for Remote Connections
Info : Listening on port 6666 for tcl connections
Inf