#sbi #risc-v #machine

无std rustsbi-macros

RustSBI的proc-macro,Rust中的RISC-V SBI实现库

3个版本

0.0.2 2024年5月14日
0.0.1 2024年5月7日
0.0.0 2023年12月29日

#5 in #sbi

每月 24 次下载

MulanPSL-2.0 OR MIT

33KB
575

RustSBI

RISC-V 管理器二进制接口 (SBI) 库,用Rust编写;在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项目本身存在错误,请发起一个问题或拉取请求来让我们知道!

本项目受以下任一许可证的许可:

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

依赖关系

~265–710KB
~17K SLoC