2 unstable releases
Uses old Rust 2015
|0.2.0||May 22, 2020|
|0.1.0||May 6, 2020|
#563 in WebAssembly
riscv-rust is a RISC-V processor emulator project written in Rust.
You can run Linux or xv6 on the emulator in your browser. Online demo is here
- Emulate RISC-V processor and peripheral devices
- Stable as Linux and xv6-riscv run on it
- Runnable locally
- Also runnable in browser with WebAssembly
Instructions/Features support status
- RV32/64F (partially)
- RV32/64D (partially)
- RV32/64A (partially)
- RV64C/32C (partially)
- RV32/64Zifencei (partially)
- RV32/64Zicsr (partially)
- CSR (partially)
- Privileged instructions (partially)
How to import into your Rust project
This module is released at crates.io. Add the following line into Cargo.toml of your Rust project.
[dependencies] riscv_emu_rust = "0.1.0"
Refer to cli/src/main.rs as sample code.
How to build core library
$ git clone https://github.com/takahirox/riscv-rust.git $ cd riscv-rust $ cargo build --release
How to run Linux or xv6 as CLI application
$ 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
How to build WebAssembly and run in the browser
- Install wasm-bindgen client
$ cd riscv-rust/wasm $ bash build.sh # boot local server and access riscv-rust/wasm/web/index.html
How to install WebAssembly npm package
$ npm install riscv_emu_rust_wasm
How to run riscv-tests
- Install riscv-gnu-toolchain
- Install riscv-tests
$ cd riscv-rust/cli $ cargo run $path_to_riscv_tets/isa/rv32ui-p-add -n
Linux RISC-V port
xv6-riscv is the RISC-V port of xv6 which is UNIX V6 rewritten by MIT for x86 in the current C language.