1 目标
用 Rust 编写一个 RISC-V 的功能精确 ISS,这个 ISS 要能够运行 FreeRTOS。
2 项目名称
RRV-ISS (Rust RISC-V Instruction Set Simulator)。
3 关键点
根据指令牵扯的 module 和对流程的影响,选择下面的关键指令:
- add:Shifts, Arithmetic, Logical, Compare Set
- beq: Branches, Jump & Link
- lb, sb: Loads, Stores
- ecall, csr: CSR, Environment
- fence: Synch
4 实现步骤
在具备计算机体系结构和 RISC-V 指令集架构相关知识后,可以通过下面几个大的步骤来实现 RISC-V 的功能精确 ISS。
- 准备开发环境:Rust开发环境、RISC-V GNU toolchain
- 设计模拟器架构
- 执行一条 add 指令
- 执行 branch 和 jump & link 指令
- 执行 load/store 指令
- 执行 ecall/ebreak/csr 指令
- 执行一段程序,并正常退出
- 与 Spike 的 trace 文件对比
- 运行 RISC-V 官方的测试
- 添加 timer 并处理 timer 中断
- 添加 uart
- 运行 FreeRTOS
采用不严格的 TDD 来开发,开发过程中单元测试和集成测试要同步进行。