Skip to content

a. G233 User Manual

本文档是参与专业阶段测评的用户手册。

专业阶段的测评围绕着 G233 虚拟开发板展开,你需要按照 G233 Board Datasheet 的硬件参数,完成下面实验给出任务,从而帮助你更好的掌握 QEMU 建模,理解 QEMU 模拟器的工作原理。

温馨提示

关于硬件建模的部分,你可以尝试使用 Rust 实现,如果想要挑战一下自我,可以尝试用 Rust 模拟客户机指令,但这部分不做强制要求。

环境搭建

第一步,需要安装 QEMU 开发环境,请参考导学阶段的Step0: 搭建 QEMU 开发环境

另外需要安装 RISC-V 的交叉编译工具链:下载地址,尽量选择最新的版本,要求安装 riscv64-unknown-elf- 类型。

Note

如果你想尝试使用 Rust 开发,请自行安装 Rust 工具链,version >= 1.85

第二步,需要 fork QEMU 源码到你的 Github 账户下面,仓库地址:learning-qemu-2025

Note

fork 时注意选择 fork 所有分支, 另外推荐使用 SSH 访问远程仓库。

第三步需要 clone 仓库的指定分支到本地:

git clone -b learning-qemu-2025 git@github.com:<your-name>/qemu.git

最后一步,配置编译选项:

cd qemu
./configure --target-list=riscv64-softmmu \
            --extra-cflags="-O0 -g3" \
            --cross-prefix-riscv64=riscv64-unknown-elf-

如果使用 Rust 开发,需要追加编译选项 --enable-rust

执行时,如果看到以下输出,证明交叉编译工具链配置成功:

  ...
  Cross compilers
    riscv64                         : riscv64-unknown-elf-gcc
  ...

测评验收

所有实验的测题源码,均放在仓库根目录路径: tests/gevico/tcg/ 。一共有五个测题。

本地运行测题的方式:

make check-gevico-tcg

全部测题通过的情况下,你会看到如下输出:

  BUILD   riscv64-softmmu guest-tests
  RUN     riscv64-softmmu guest-tests
  TEST      1/5   test-board-g233 on riscv64
  TEST      2/5   test-insn-dma on riscv64
  TEST      3/5   test-insn-sort on riscv64
  TEST      4/5   test-insn-crush on riscv64
  TEST      5/5   test-insn-expand on riscv64

如果你想运行某个测例,比如 test-board-g233,可以使用如下命令:

make -C build/tests/gevico/tcg/riscv64-softmmu/  run-board-g233

Note

当你使用 make -C 指定了路径以后,你可以通过输入 run- 和 tab 键来查看可以运行的测题

如果你想调试某个测例,比如 test-board-g233,可以使用如下命令启用 QEMU 的远程调试功能:

make -C build/tests/gevico/tcg/riscv64-softmmu gdbstub-board-g233

同理,你也可以通过 gdbstub- 和 tab 键来查看可以远程调试的测例。

然后需要你本地另起一个终端,使用 riscv-elf-gdb 加载被调试客户机二进制程序,进行远程调试。

Note

你需要熟读 G233 Board Datasheet 和测题的源码,来理解每个实验的测试意图,这会极大地方便你调试,提高开发效率。

评分显示到训练营专业阶段排行榜,需要通过 opencamp 测评仓库实现。

你需要将你的远程 qemu 仓库和 learning-qemu-2025 分支添加为 opencamp 测评仓库的 submodule 来实现。

具体操作详见 opencamp 测评仓库 README。