在 VEGA-Lite 织女星开发板的 RV32M1 微控制器上,烧录并运行一个 Rust 语言编写的闪烁小灯程序。
I. 使用代码
直接编译并运行的代码是 rv32m1-rust/rv32m1_ri5cy-example 项目。
间接调用了 rv32m1-rust/rv32m1_ri5cy-pac 函数库(GitHub 页面, crates.io 页面)。这是一个适用于 RV32M1 微控制器的 RI5CY 核的“总线资源库(PAC)”。
以上均为博主原创编写的代码,请转载时注意开源许可协议,保留署名。
II. 预备
- 按照《Rust+RV32M1:开发环境设置》准备开发环境。
- 按照《织女星开发板快速入门指南》的指引更改引导配置,要求 RV32M1 从 RI5CY 核启动。(请参见 OpenISA 中国通过 open-isa-cn/vega-lite 项目提供的文档)
- 启动 OpenOCD 连接到开发板,并全程保持后台运行。
III. 操作步骤
编译
请在 rv32m1-rust/rv32m1_ri5cy-pac 仓库的 Release 页面,下载 v0.1.2
版本的代码。(也可以直接 git 拉取对应名称的 tag)
与一般 Rust 代码库一样,使用 cargo build
命令编译调试版本,或 cargo build --release
编译正式版本。
产出物会放置在 target/riscv32imc-unknown-none-elf/debug/rv32m1_ri5cy-example
,是一个 ELF 文件。
运行
请首先确保(1)OpenOCD 已启动并正常连接到了开发板,(2)开发板已经配置为从 RI5CY (RISC-V大核)启动。
使用 GDB 启动调试,并连接到 OpenOCD 所提供的远程目标:
C:\Vega\Toolchain\riscv32-unknown-elf-gcc\bin\riscv32-unknown-elf-gdb.exe target\riscv32imc-unknown-none-elf\debug\rv32m1_ri5cy-example --eval-command="target remote localhost:3333"
使用以下命令烧录并运行程序:
`load
continue`
应当产生的运行结果
此时也可以使用所有的 GDB 调试命令。