项目说明
Quard Star RISC-V64 是一个基于 rCore-Tutorial 设计的 C 语言 RISC-V64 SMP 重实现。七个普通 hart 运行自写的 C 内核,一个 FreeRTOS hart 运行在受限域中;我编写 OpenSBI domain 的 DTS 策略和访问探针,由固件完成 PMP 资源配置,再用 QEMU 日志与双向异常结果验证预期边界。

目标机器QEMU quard-star · 8 RISC-V64 harts
域划分7-hart SMP kernel · 1 FreeRTOS trusted hart
验收环境QEMU · TAP · 本地确定性协议对端
启动时怎么分工
QEMU reset
8 harts→OpenSBI
domain + PMP→普通内核
harts 0-6→FreeRTOS
trusted hart 7→VirtIO / TAP
本地验收
8 harts→OpenSBI
domain + PMP→普通内核
harts 0-6→FreeRTOS
trusted hart 7→VirtIO / TAP
本地验收
hart 7 不加入普通内核的 allocator、scheduler、locks、interrupt routing 或 network stack。普通域和 trusted 域通过 OpenSBI domain 与 PMP 看到不同的内存和设备;测试会检查双向拒绝访问和 trusted scheduler 的标记。
仓库里有什么
普通内核Sv39、每 hart 状态、调度、迁移、trap、timer、syscall 和同步原语。启动与隔离OpenSBI HSM、TIME、IPI、domain 配置和 PMP 边界。存储VirtIO MMIO/virtqueue、block、FatFs 和带 generation 的文件句柄。网络VirtIO net、ARP、IPv4、ICMP、UDP、TCP、loopback 和 sockets。可信运行时hart 7 的 FreeRTOS S-mode scheduler、trusted RAM、UART2 和 SBI timer tick。测试输出serial markers、QEMU/TAP smoke、host test、日志和性能报告。
先跑一次
1 | git clone --recurse-submodules \ |
成功时,kernel.log、trusted.log、qemu.log、qemu.err 和 m5-peer.stats 会保存在 out/m8。通过标记是 QS:TEST_PASS:m8-smoke;出现 QS:TEST_FAIL 时,后续输出不算通过。
这能说明什么
- 在 QEMU/TAP 中可以复现 SMP、存储、网络、应用协议、trusted scheduling 和 PMP 双向拒绝访问。
- 仓库里的 QEMU demo 由通过的 M8 输出生成,并附有日志和媒体哈希。
- 当前安全、时序和性能结论只适用于 QEMU 模型;真实板卡上的中断、内存、设备、固件和性能还要重新测。
它适合用来学习系统结构和 QEMU 测试,不是对真实 RISC-V 硬件的性能或安全认证。