#risc-v #processor #run #debugging #linux #emulator

riscv_emu_rust

用Rust编写的RISC-V模拟器

2个不稳定版本

使用旧的Rust 2015

0.2.0 2020年5月22日
0.1.0 2020年5月6日

#314WebAssembly

MIT 许可证

185KB
5K SLoC

riscv-rust

Build Status Crate npm version

riscv-rust 是一个用 Rust 编写的 RISC-V 处理器模拟器项目。

演示

您可以在浏览器中的模拟器上运行 Linux 或 xv6。 在线演示在此

屏幕截图

animation

文档

功能

  • 模拟 RISC-V 处理器和外围设备
  • 稳定,就像 Linuxxv6-riscv 在它上面运行一样
  • 本地可运行
  • 也可以在浏览器中使用 WebAssembly 运行
  • 调试器

指令/功能支持状态

  • RV32/64I
  • RV32/64M
  • RV32/64F (部分)
  • RV32/64D (部分)
  • RV32/64Q
  • RV32/64A (部分)
  • RV64C/32C (部分)
  • RV32/64Zifencei (部分)
  • RV32/64Zicsr (部分)
  • CSR (部分)
  • SV32/39
  • SV48
  • 特权指令 (部分)
  • PMP

等等...

如何将 riscv-rust 导入您的 Rust 项目

此模块在 crates.io 发布。将以下行添加到您的 Rust 项目的 Cargo.toml 中。

[dependencies]
riscv_emu_rust = "0.1.0"

有关示例代码,请参阅 cli/src/main.rs

如何构建核心库

$ git clone https://github.com/takahirox/riscv-rust.git
$ cd riscv-rust
$ cargo build --release

如何将 Linux 或 xv6 作为 CLI 应用程序运行

$ cd riscv-rust/cli
# Run Linux
$ cargo run --release ../resources/linux/bbl -f ../resources/linux/busybear.bin -d ../resources/linux/dtb.dtb
# Run xv6
$ cargo run --release ../resources/xv6/kernel -f ../resources/xv6/fs.img

如何构建 WebAssembly 并在浏览器中运行

先决条件

$ cd riscv-rust/wasm
$ bash build.sh
# boot local server and access riscv-rust/wasm/web/index.html

如何安装 WebAssembly npm 包

$ npm install riscv_emu_rust_wasm

如何运行 riscv-tests

先决条件

$ cd riscv-rust/cli
$ cargo run $path_to_riscv_tets/isa/rv32ui-p-add -n

Linux RISC-V 端口

Linux RISC-V 端口

xv6-riscv

xv6-riscv 是由 MIT 在当前 C 语言中重写的 UNIX V6(xv6)的 RISC-V 端口。

规格

无运行时依赖项