Zhouqi Jiang 4821073b56 spec: binary: optimize `count`, `last`, `min`, `max` and `is_sorted` to O(1) for iterator `HartIds` | 6 days ago | |
---|---|---|
.github | 1 month ago | |
examples | 11 months ago | |
macros | 7 months ago | |
sbi-rt | 1 month ago | |
sbi-spec | 6 days ago | |
sbi-testing | 1 month ago | |
src | 1 month ago | |
tests | 1 month ago | |
.gitignore | 2 years ago | |
CHANGELOG.md | 1 month ago | |
Cargo.toml | 1 month ago | |
LICENSE-MIT | 2 years ago | |
LICENSE-MULAN | 1 year ago | |
README.md | 10 months ago | |
rustfmt.toml | 3 years ago |
RISC-V Supervisor Binary Interface (SBI) library in Rust; runs on M-mode or HS mode.
Most users would get RustSBI binary download from the RustSBI Prototyping System. Check out the link here to download binary package for your platform.
Boards, SoC vendors and research groups would provide dedicated RustSBI package for supported platforms. There are packages exists on awesome-rustsbi: it is a curated list of awesome things related to RustSBI, which includes some implementation projects maintained by individuals or the community.
Users on commercial boards may visit implementation specific distribution links depending on the platforms they need, or consult vendors if they provide discrete RustSBI package support.
To compile RustSBI library, you need at least stable Rust version of rustc 1.65.0
.
RustSBI is usually used as a library or dependency. If you wish to, you may build RustSBI library itself using the following command:
cargo build
The build should finish without any errors.
Building under native platform will allow development of hypervisors and emulators. To cross-build for a RISC-V platform environment, you may install the target and build onto it instead:
# If you don't have the cross compile target installed, install it first
rustup target add riscv64imac-unknown-none-elf
# Build this project as library
cargo build --target riscv64imac-unknown-none-elf
The target platform of RISC-V platform firmware is usually a bare metal target.
Under normal circumstances these targets in Rust would start with riscv??-
and end with -none-elf
.
RustSBI have extensive documents on such purposes! No matter what you are building with it, you will find some documents about RustSBI on bare-metal environments, hypervisors and emulators.
Check it out at RustSBI document main page.
Yes, you can! RustSBI strictly follows RISC-V SBI standard. All features are prepares for all programming languages, as long as they support RISC-V SBI defined calling convention.
If your kernel language supports other SBI implementations, usually it will support RustSBI in the same way.
This project is originally a part of rCore Summer of Code 2020 activities, inspired by MeowSBI and other similar projects. Now it is capable of running rCore-Tutorial and other OS kernels on wide supported RISC-V devices.
There are multiple talks related to RustSBI dated back to Aug 2020. These talks discuss from design and abstraction of RustSBI modules, to actual production and research usage scenario related to RustSBI and RISC-V bootloaders. Public slides and blog articles of these talks are available at RustSBI/slides page.
embedded-hal
libraries.This project is licensed under either of
Documents from RISC-V SBI Specification are used in this project. These documents are (C) RISC-V Foundation under Creative Commons Attribution 4.0 International License (CC-BY 4.0). The full license text is available at https://creativecommons.org/licenses/by/4.0/.