logo
0
0
WeChat Login
github-classroom[bot]<66690702+github-classroom[bot]@users.noreply.github.com>
Initial commit

QEMU 训练营 2026 — 实验仓库

English | 中文

本仓库是 QEMU 训练营 2026 专业阶段的实验仓库,涵盖四个实验方向,均基于 RISC-V 架构。

在线讲义

方向实验手册硬件手册 / 编程指南
CPUCPU 实验手册CPU Datasheet
SoCSoC 实验手册G233 SoC 硬件手册
GPGPUGPU 实验手册GPU 硬件手册
RustRust 实验手册Rust 编程指南

完整讲义网站:https://qemu.gevico.online/

实验方向

方向测试框架测试位置评分
CPUTCG 测题tests/gevico/tcg/10 题 x 10 分 = 100 分
SoCQTesttests/gevico/qtest/10 题 x 10 分 = 100 分
GPGPUQTest (QOS)tests/qtest/gpgpu-test.c17 题 -> 100 分
RustQTest + 单元测试tests/gevico/qtest/ + rust/hw/i2c/10 题 x 10 分 = 100 分

快速开始

第一步:安装依赖

# Ubuntu 24.04 sudo sed -i 's/^Types: deb$/Types: deb deb-src/' /etc/apt/sources.list.d/ubuntu.sources sudo apt-get update sudo apt-get build-dep -y qemu # 安装 RISC-V 裸机交叉编译器(CPU 实验必需) sudo mkdir -p /opt/riscv wget -q https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.09.28/riscv64-elf-ubuntu-24.04-gcc-nightly-2025.09.28-nightly.tar.xz -O riscv-toolchain.tar.xz sudo tar -xJf riscv-toolchain.tar.xz -C /opt/riscv --strip-components=1 sudo chown -R $USER:$USER /opt/riscv export PATH="/opt/riscv/bin:$PATH" echo 'export PATH="/opt/riscv/bin:$PATH"' >> ~/.bashrc riscv64-unknown-elf-gcc --version # 安装 Rust 工具链(Rust 实验及构建必需) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y . "$HOME/.cargo/env" cargo install bindgen-cli

第二步:配置

make -f Makefile.camp configure

第三步:编译

make -f Makefile.camp build

第四步:运行测试

# 运行指定方向的实验测试 make -f Makefile.camp test-cpu make -f Makefile.camp test-soc make -f Makefile.camp test-gpgpu make -f Makefile.camp test-rust # 运行所有实验测试 make -f Makefile.camp test

第五步:提交代码

git add . git commit -m "feat: implement ..." git push origin main

推送到 main 后,CI 会自动编译、运行测试、计算得分并上传到排行榜平台。得分为 0 时不会上传。

实验详情

CPU 实验(TCG 测题)

为 G233 虚拟机实现自定义 RISC-V 指令。测试通过 semihosting 裸机程序验证指令行为。

  • 虚拟机:g233hw/riscv/g233.c
  • 测试:tests/gevico/tcg/riscv64/test-insn-*.c
  • 运行:make -f Makefile.camp test-cpu
  • 文档:实验手册 | CPU Datasheet

SoC 实验(QTest 测题)

为 G233 SoC 实现外设设备模型(GPIO、PWM、WDT、SPI、Flash)。测试通过 QTest 的 MMIO 读写验证寄存器行为和中断连接。

  • 外设地址:GPIO(0x10012000)、PWM(0x10015000)、WDT(0x10010000)、SPI(0x10018000
  • 测试:tests/gevico/qtest/test-*.c
  • 运行:make -f Makefile.camp test-soc
  • 文档:实验手册 | G233 SoC 硬件手册

GPGPU 实验(QTest 测题)

实现 PCIe GPGPU 设备,包含 SIMT 执行引擎、DMA 和低精度浮点支持。测试验证设备寄存器、显存、内核执行和 FP8/FP4 转换。

  • 设备:hw/gpgpu/(PCI 设备 gpgpu
  • 测试:tests/qtest/gpgpu-test.c(17 个子测试)
  • 运行:make -f Makefile.camp test-gpgpu
  • 文档:实验手册 | GPU 硬件手册

Rust 实验(QTest + 单元测试)

使用 Rust 为 G233 SoC 实现 I2C 总线、GPIO I2C 控制器和 SPI 控制器。单元测试验证 Rust 核心逻辑;QTest 测试验证设备寄存器行为和外设通信(I2C 连接 AT24C02 EEPROM,SPI 连接 AT25 EEPROM)。

  • I2C 总线:rust/hw/i2c/src/lib.rs(3 道单元测试)
  • GPIO I2C 控制器:基地址 0x10013000,连接 AT24C02 EEPROM(地址 0x50
  • SPI 控制器:基地址 0x10019000,连接 AT25 EEPROM
  • 测试:tests/gevico/qtest/test-i2c-*.ctests/gevico/qtest/test-spi-rust-*.c
  • 运行:make -f Makefile.camp test-rust
  • 文档:实验手册 | Rust 编程指南

Make 命令一览

make -f Makefile.camp help # 查看所有命令 make -f Makefile.camp configure # 配置 QEMU make -f Makefile.camp build # 编译 QEMU make -f Makefile.camp test-cpu # CPU 实验测试 make -f Makefile.camp test-soc # SoC 实验测试 make -f Makefile.camp test-gpgpu # GPGPU 实验测试 make -f Makefile.camp test-rust # Rust 实验测试 make -f Makefile.camp test # 所有测试 make -f Makefile.camp clean # 清理构建 make -f Makefile.camp distclean # 删除构建目录

评分规则

  • 测试失败不会导致 CI 报错,只会降低得分。
  • 得分为 0 时不会上传到排行榜平台。
  • 每次推送到 main 都会触发完整的 CI 流程。