Rust+RV32M1:运行闪烁小灯示例

在 VEGA-Lite 织女星开发板的 RV32M1 微控制器上,烧录并运行一个 Rust 语言编写的闪烁小灯程序。

I. 使用代码

直接编译并运行的代码是 rv32m1-rust/rv32m1_ri5cy-example 项目。间接调用了以下函数库:

以上均为博主原创编写的代码,请转载时注意开源许可协议,保留署名。

II. 预备

  1. 按照《Rust+RV32M1:开发环境设置》准备开发环境。
  2. 按照《织女星开发板快速入门指南》的指引更改引导配置,要求 RV32M1 从 RI5CY 核启动。(请参见 OpenISA 中国通过 open-isa-cn/vega-lite 项目提供的文档)
  3. 启动 OpenOCD 连接到开发板,并全程保持后台运行。

III. 操作步骤

编译

请在 rv32m1-rust/rv32m1_ri5cy-pac 仓库的 Release 页面,下载 v0.1.3 版本的代码。(也可以直接 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 调试命令。

发表评论

电子邮件地址不会被公开。 必填项已用*标注