暂无描述

luojia65 dce019efa4 Add a test kernel to test illegal instruction delegation (#10) 4 年之前
platform 9d4a5f9b71 Illegal instruction dispatch documents (#10) and cleanup 4 年之前
rustsbi 8f11e666d4 Fix: `init_hsm` function is not exported 4 年之前
test-kernel dce019efa4 Add a test kernel to test illegal instruction delegation (#10) 4 年之前
.gitignore 2a8cf673e7 Filter out `.idea` folder for all platforms 4 年之前
CHANGELOG.md dce019efa4 Add a test kernel to test illegal instruction delegation (#10) 4 年之前
Cargo.toml ef28118403 Test kernel; illegal exception dispatch 4 年之前
LICENSE-MIT 183f19ea5e Update licence; update readme 4 年之前
LICENSE-MULAN 183f19ea5e Update licence; update readme 4 年之前
README.md 9d4a5f9b71 Illegal instruction dispatch documents (#10) and cleanup 4 年之前

README.md

RustSBI

RISC-V Supervisor Binary Interface implementation in Rust; runs on M-mode.

crates.io Documentation License

Binary downloads

See releases.

Binaries are available for platforms which can be found on platform support page. These provided binaries are only for reference on experiments, consider writing your own RustSBI implementation on production use.

Features

  • Functional operating system runtime
  • Adapted to RISC-V SBI specification v0.2
  • Good support for unix-like operating systems
  • Written in Rust
  • Alternative to OpenSBI with most of its function
  • Supports QEMU emulator (priv. spec v1.11)
  • Backward compatible to privileged spec v1.9
  • Supports Kendryte K210 with MMU and S-Mode

Components

The RustSBI project contains three parts: the RustSBI library rustsbi, reference implementation in platform, and a simple operating system kernel to test SBI implementations in test-kernel.

The test kernel is used to test SBI functions. Boot this kernel using your platform, it will call all SBI calls and run instructions to test if underlying SBI environment is okay. if this kernel reports 'Ok' and exits normally, it means that your SBI implementation is correct.

Talks and documents

This project is originally a part of rCore Summer of Code 2020 activities, now it is capable of running rCore-Tutorial and other OS kernels on wide supported RISC-V devices.

Blog article (Chinese):

Slides (Chinese):

Notes on platform implementation

  1. RustSBI can be used as a library. Under normal circumstances, RustSBI platform can be implemented with embedded Rust's embedded-hal libraries.
  2. On both QEMU and K210 platform, we supports CLINT and PLIC peripherals. Embedded Rust's community still need more SoCs taped out to discuss on common libraries on RISC-V ecosystem. After these works are done, we may use crates then to implement QEMU, without the hal module we have now.
  3. Contributions are welcomed! We welcome to implement RustSBI for both FPGA cores and real cores. Implementations for emulators are also welcomed. Fire a pull request if you are ready!

License

This project is licensed under either of