为 VEGA-Lite 织女星 或 VEGAboard 开发板准备 Rust 语言开发环境。
本文使用 Windows 10 (64位) 1903 版本,多数过程也可以在 macOS 和 Linux 环境下套用。
I. 安装工具链
准备
需要 OpenISA(中国) 站点的 下载页面 提供的以下软件包:
Toolchain_Windows.zip |
sha256: d7560e1fa9bdfa2aadf64caa9f9eacf5f6157761af07f285663f026b4c8de408 |
不需要 ARM 或 RISC-V 的 SDK 。
安装
工具链包含两个压缩包,按以下结构解压到 C:\Vega\Toolchain
(或任意)目录:
C:\Vega
└─Toolchain
├─openocd
│ ├─bin
│ └─drivers
└─riscv32-unknown-elf-gcc
├─bin
├─include
├─lib
├─libexec
├─riscv32-unknown-elf
└─share
II. 准备硬件调试器
必须使用一种硬件调试器开发 RV32M1 的 RISC-V 核心,可以选择:
- 外部 J-Link 调试器(VEGA-Lite 织女星和 VEGAboard 均可)
- 板载 FreeLink 调试器(仅适用于 VEGA-Lite 织女星)
使用 VEGA-Lite 织女星的板载 FreeLink
请参考《怎样才能用板载调试器来调试织女星开发板的RISC-V核》《织女星开发板调试器升级为Jlink固件》两篇文章的指导。
注意这里需要跳线连接 J17 与 J8/J9/J10/J12 的若干引脚。一般来说需要:
- 准备一块 JTAG 转接板,必须支持 1.27mm 10P 转 2.54mm (淘宝很多)
- 使用 1.27mm 10P 排线将 J17 连接到转接板
- 再小心地使用 2.54mm 杜邦线,按照连接关系连接到开发板
这样做繁琐易错,并且反复插拔很不方便。所以我设计了一个转接小板,用于扣在 J8/J9/J10/J12 之上,将其整体转换为一个 1.27mm 10P 的接口。这样就可以仅用一条排线与 J17 进行方便的连接。效果如图:
这个转接板在 GitHub 开源,请访问 shamiao/vega-lite_riscv_jtag_conn_board 项目。
使用外部的 J-Link 调试器
需要使用 J-Link V9 或以上版本的硬件。只需要执行《织女星开发板调试器升级为Jlink固件》 中“升级Jlink驱动”一节,替换为 WinUSB 驱动即可。
注意可能需要转接板来连接 J-Link 和开发板的调试接口。
J-Link V10 或以上版本虽然通过官方工具链支持 RISC-V 架构调试,但似乎尚未支持 RV32M1 微控制器(截至文章编写时)。所以目前必须使用 WinUSB 驱动配合 OpenOCD 开源工具链。也正因为如此,我们不必安装 J-Link 的官方驱动程序。
III. 安装 Rust 语言环境
安装 Rust 工具链
需要按照 Rust 官方推荐的方案,使用 rustup 进行安装。请参见 Rust 官网《安装》页面的指导。
配置交叉编译
Rust 工具链是高度可配置的,增加一个交叉编译目标不需要额外安装一整套工具链(像 GCC 一样)。使用以下命令为 Rust 工具链添加适用于 RV32M1 的交叉编译目标:
rustup target add riscv32imc-unknown-none-elf
IV. 检查
开发板连接
运行以下命令:
C:\Vega\Toolchain\openocd\bin\openocd.exe -f C:\Vega\rv32m1_sdk_riscv\boards\rv32m1_vega\rv32m1_ri5cy.cfg
OpenOCD 给出以下输出后保持运行,代表调试器与开发板的连接良好:
Info : Listening on port 3333 for gdb connections
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Rust工具链
运行以下命令:
rustup show
会得到类似如下的输出:
Default host: x86_64-pc-windows-msvc
rustup home: C:\Users\alice\.rustup
installed targets for active toolchain
--------------------------------------
riscv32imc-unknown-none-elf
x86_64-pc-windows-msvc
active toolchain
----------------
stable-x86_64-pc-windows-msvc (default)
rustc 1.38.0 (625451e37 2019-09-23)
请检查 installed targets
中确实包含 riscv32imc-unknown-none-elf
目标。
注:Rust 每 6 周固定更新一个版本,但新版的向下兼容性一直高度完善。推荐简单的使用最新版本,无需和本系列文章编写时采用的版本一致。
Open On-Chip Debugger 0.10.0+dev-00433-g849f49ca (2019-01-04-07:48)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
embedded:startup.tcl:60: Error: Can’t find D:\Vega\rv32m1_sdk_riscv\boards\rv32m1_vega\rv32m1_ri5cy.cfg
in procedure ‘script’
at file “embedded:startup.tcl”, line 60
博主好,前文说安装toolchain不需要装SDK,那这个命令C:\Vega\Toolchain\openocd\bin\openocd.exe -f C:\Vega\rv32m1_sdk_riscv\boards\rv32m1_vega\rv32m1_ri5cy.cfg的SDK是怎么来的呀,我按照教程操作会输出上面的错误信息