# RustSBI RISC-V Supervisor Binary Interface implementation in Rust; runs on M-mode. [![crates.io](https://img.shields.io/crates/v/rustsbi.svg)](https://crates.io/crates/rustsbi) [![Documentation](https://docs.rs/rustsbi/badge.svg)](https://docs.rs/rustsbi) ![License](https://img.shields.io/crates/l/rustsbi.svg) ## Binary downloads See [releases](https://github.com/luojia65/rustsbi/releases). Binaries are available for platforms which can be found on [platform support page](https://github.com/luojia65/rustsbi/tree/master/platform). ## 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 ## 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): - [rCore Operating System Lab Final Report](https://github.com/luojia65/rcore-os-blog/blob/master/source/_posts/os-report-final-luojia65.md), Aug 2020 Slides (Chinese): - [Design and Implementation of RustSBI](https://github.com/luojia65/DailySchedule/blob/master/2020-slides/RustSBI%E7%9A%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%AE%9E%E7%8E%B0.pdf), Dec 2020 - [The Rust Embedded System Development](https://github.com/luojia65/DailySchedule/blob/master/2020-slides/Rust%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91.pdf), Dec 2020 - [Operating Systems on Rust and RISC-V](https://github.com/luojia65/DailySchedule/blob/master/2020-slides/Rust%E8%AF%AD%E8%A8%80%E4%B8%8ERISC-V%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.pdf), Aug 2020 ## 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 - MIT license ([LICENSE-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)) - Mulan PSL v2 ([LICENSE-MULAN](LICENSE-MULAN) or [https://opensource.org/licenses/MulanPSL-2.0](https://opensource.org/licenses/MulanPSL-2.0))