All Projects → rustsbi → rustsbi

rustsbi / rustsbi

Licence: other
RISC-V Supervisor Binary Interface (RISC-V SBI) implementation in Rust; runs on M-mode; good support for embedded Rust ecosystem

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to rustsbi

rustsbi-qemu
QEMU platform SBI support implementation, using RustSBI
Stars: ✭ 39 (-89.23%)
Mutual labels:  sbi, rustsbi, sbi-specification
hero-sdk
⛔ DEPRECATED ⛔ HERO Software Development Kit
Stars: ✭ 21 (-94.2%)
Mutual labels:  riscv
bxcan
bxCAN peripheral driver for STM32 chips
Stars: ✭ 22 (-93.92%)
Mutual labels:  rust-embedded
T13x
An Extended Version of the T0x multithreaded cores, with a custom general purpose parametrized SIMD/MIMD vector coprocessor and support for 3-5 way superscalar execution. The core is pin-to-pin compatible with the RISCY cores from PULP
Stars: ✭ 28 (-92.27%)
Mutual labels:  riscv
mdepx
MDEPX — A BSD-style RTOS
Stars: ✭ 17 (-95.3%)
Mutual labels:  riscv
cheribsd
FreeBSD adapted for CHERI-RISC-V and Arm Morello.
Stars: ✭ 95 (-73.76%)
Mutual labels:  riscv
rv32emu
RISC-V RV32I[MAC] emulator with ELF support
Stars: ✭ 61 (-83.15%)
Mutual labels:  riscv
rocc-software
C/Assembly macros for talking with Rocket Custom Coprocessors (RoCCs)
Stars: ✭ 46 (-87.29%)
Mutual labels:  riscv
RISC-V-TLM
RISC-V SystemC-TLM simulator
Stars: ✭ 125 (-65.47%)
Mutual labels:  riscv
novusk
A kernel written in Rust
Stars: ✭ 61 (-83.15%)
Mutual labels:  riscv
arv
ARV: Asynchronous RISC-V Go High-level Functional Model
Stars: ✭ 18 (-95.03%)
Mutual labels:  riscv
Fuxi
Fuxi (伏羲) is a 32-bit pipelined RISC-V processor written in Chisel3.
Stars: ✭ 68 (-81.22%)
Mutual labels:  riscv
ara
The PULP Ara is a 64-bit Vector Unit, compatible with the RISC-V Vector Extension Version 0.10, working as a coprocessor to CORE-V's CVA6 core
Stars: ✭ 116 (-67.96%)
Mutual labels:  riscv
GeeOS
The Gee (寂) Operating System, written in YuLang.
Stars: ✭ 22 (-93.92%)
Mutual labels:  riscv
interp
Interpreter experiment. Testing dispatch methods: Switching, Direct/Indirect Threaded Code, Tail-Calls and Inlining
Stars: ✭ 32 (-91.16%)
Mutual labels:  riscv
RiscvSpecFormal
The RiscvSpecKami package provides SiFive's RISC-V processor model. Built using Coq, this processor model can be used for simulation, model checking, and semantics analysis. The RISC-V processor model can be output as Verilog and simulated/synthesized using standard Verilog tools.
Stars: ✭ 69 (-80.94%)
Mutual labels:  riscv
riscv-contest-2018
RISCV SoftCPU Contest 2018
Stars: ✭ 14 (-96.13%)
Mutual labels:  riscv
bx-docker
Tutorial on how to build Docker Images for the IAR Build Tools on Linux hosts. The IAR Build Tools on Linux are available for Arm, RISC-V and Renesas (RH850, RL78 and RX).
Stars: ✭ 28 (-92.27%)
Mutual labels:  riscv
stm32wb55
Implementation of bluetooth-hci for STM32WB5x wireless SoC
Stars: ✭ 18 (-95.03%)
Mutual labels:  rust-embedded
YatCPU-docs
Documentatin for YatCPU
Stars: ✭ 15 (-95.86%)
Mutual labels:  riscv

RustSBI

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

crates.io Documentation License

Build this project

RustSBI is usually used as a library or dependency. If you wish to, you may build RustSBI library itself using the following command:

# 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 build should finish without any errors.

If you see any error like invalid register a0: unknown register, it's likely that you cross built this project into platforms other than RISC-V. RustSBI adapts to RISC-V SBI interface, so you may cross build this project into any bare metal RISC-V platform targets instead.

The target platform of RustSBI is usually a bare metal target. Under normal circumstances these targets in Rust would start with riscv??- and end with -none-elf. If a non bare metal target is built to, it would throw build error in riscv dependency crate or RustSBI library itself.

Minimum supported Rust version

To compile this project, you may need at least nightly Rust version of rustc 1.59.0-nightly (c5ecc1570 2021-12-15).

Binary downloads

RustSBI is provided with separate library and binary projects, this is the repository for RustSBI library. For specific platforms, you may visit implementation specific projects depending on the platforms you need. Chip, system and platform vendors should provide RustSBI implementation for dedicated platform as a part of platform software support package.

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. You may find binary downloads for useful platforms on awesone-rustsbi.

Features

  • Functional and extensible operating system runtime
  • Fully support to RISC-V SBI specification v0.3
  • Adapted for operating system kernel models on your choice
  • Written in Rust
  • Competitive to OpenSBI with most of its function
  • Bundled with a test framework for SBI implementations
  • Empower support, compatibility for different platforms

Frequently asked questions

  1. Can I use RustSBI on C based kernels?

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.

Talks and documents

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 discusses 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.

Notes on platform implementation

  1. RustSBI should be used as a library. Under normal circumstances, RustSBI platform can be implemented with embedded Rust's embedded-hal libraries.
  2. Contributions are welcomed! We welcome to implement and test RustSBI for both FPGA cores and real cores. Implementations for emulators are also welcomed. If you are ready, start your own binary project and use RustSBI in it!
  3. If there is a bug in RustSBI project itself, fire an issue or pull request to let us know!

License & Copyright

This project is licensed under either of

Documents from RISC-V SBI Specification are used in this project. These documents are (C) RISC-V Founcation 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/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].