#sbi #risc-v #operating-system

no-std rustsbi

用Rust编写的RISC-V的最小SBI实现库

26个版本

0.4.0-alpha.32024年5月14日
0.4.0-alpha.12024年2月10日
0.3.2 2023年2月26日
0.3.0 2022年11月3日
0.0.2 2020年10月20日

77 in 嵌入式开发

Download history 86/week @ 2024-05-04 94/week @ 2024-05-11 15/week @ 2024-05-18 13/week @ 2024-05-25 8/week @ 2024-06-01 9/week @ 2024-06-08 8/week @ 2024-06-15 8/week @ 2024-06-22 28/week @ 2024-07-06 1/week @ 2024-07-20 129/week @ 2024-07-27 1/week @ 2024-08-03 10/week @ 2024-08-10

141 每月下载量

MulanPSL-2.0 OR MIT

270KB
3K SLoC

RustSBI

Rust中的RISC-V监控器二进制接口(SBI)库;在M模式或HS模式下运行。

crates.io Documentation License

二进制下载

大多数用户会从RustSBI原型系统获取RustSBI的二进制下载。请查看此处下载您平台上的二进制包。

板卡、SoC供应商和研究组将为支持的平台提供专门的RustSBI包。在awesome-rustsbi上存在一些包:这是一个关于RustSBI的精选列表,包括一些个人或社区维护的实现项目。

商业板用户可以访问特定于实现的分发链接,具体取决于他们需要的平台,或者如果供应商提供离散的RustSBI包支持,则可以咨询供应商。

最低支持的Rust版本

要编译RustSBI库,您至少需要Rust的稳定版本 rustc 1.65.0

构建此项目

RustSBI通常用作库或依赖项。如果您愿意,可以使用以下命令自行构建RustSBI库

cargo build

构建应无错误完成。

在本地平台上构建将允许开发虚拟机和仿真器。要为RISC-V平台环境交叉构建,您可以在该平台上安装目标并构建

# 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

RISC-V平台固件的平台通常是裸机目标。在正常情况下,这些目标在Rust中通常以 riscv??- 开头,以 -none-elf 结尾。

功能

  • 丰富的功能且可扩展的操作系统运行时
  • 支持机器、虚拟机和仿真器的兼容性
  • 支持并与RISC-V SBI规范v2.0批准版本一起开发
  • 用Rust编写,在稳定的Rust下构建
  • 能够与其他固件生态系统项目一起开发
  • 适用于您选择的操作系统内核模型

常见问题解答

  1. 我该如何构建RustSBI实现?

RustSBI在这方面有广泛的文档!无论您用它来构建什么,您都会找到一些关于RustSBI在裸机环境、虚拟机和仿真器上的文档。

请访问RustSBI文档主页查看。

  1. 我能在基于C的内核上使用RustSBI吗?

是的,您可以!RustSBI严格遵循RISC-V SBI标准。所有功能都为所有编程语言做好准备,只要它们支持RISC-V SBI定义的调用约定。

如果您的内核语言支持其他SBI实现,通常它将以相同的方式支持RustSBI。

演讲和文档

该项目最初是2020年rCore夏季代码活动的一部分,受到MeowSBI和其他类似项目的启发。现在它能够在广泛支持的RISC-V设备上运行rCore-Tutorial和其他操作系统内核。

从2020年8月起,有多个与RustSBI相关的演讲。这些演讲讨论了从RustSBI模块的设计和抽象到与RustSBI和RISC-V引导加载程序相关的实际生产和研究用例。这些演讲的公开幻灯片和博客文章可在RustSBI/slides页面找到。

平台实现注意事项

  1. RustSBI应作为库使用。在正常情况下,可以使用嵌入式Rust的embedded-hal库来实现RustSBI平台。
  2. 欢迎贡献!我们欢迎为FPGA核心和真实核心实现和测试RustSBI。也欢迎仿真器的实现。如果您准备好了,开始您自己的二进制项目并在其中使用RustSBI!
  3. 如果RustSBI项目中本身存在错误,请发起一个issue或pull request来让我们知道!

该项目受以下任一许可协议的许可

本项目使用RISC-V SBI规范中的文档。这些文档由RISC-V Foundation根据Creative Commons Attribution 4.0国际许可协议(CC-BY 4.0)版权所有。完整许可文本可在https://creativecommons.org/licenses/by/4.0/找到。

依赖关系

~230–700KB
~17K SLoC