本章将详细介绍 RustSBI 核心库的架构设计与功能模块。
RustSBI 核心库通常用于开发 SBI 生态的系统软件。若需要寻找 RustSBI 提供的 SBI 固件以供下载、安装到真实硬件主板或模拟器,请参阅第三章 RustSBI Prototyper 项目。
RustSBI 核心库采用分层设计理念,将核心功能与机器态实现解耦,通过多个功能模块化的 Rust 包(crate)为 RISC-V SBI 生态提供支持。其模块化架构适用于内核开发、安全固件设计、虚拟化方案及模拟器等不同场景,并不仅限于机器态 RISC-V 固件。它主要包含以下核心组件:
该包通过特型(trait)机制抽象 SBI 扩展功能,并提供宏编程支持。开发者在构建裸机固件时,只需为平台结构体实现相应的 SBI 扩展 trait,再通过 #[derive(RustSBI)]
宏即可自动生成从异常处理到 SBI 调用的分发逻辑,显著降低 SBI 底层开发的复杂程度。针对虚拟化场景,支持为虚拟机单独实现扩展或通过 Forward
机制透传宿主机扩展。对于非 RISC-V 架构的模拟器,可利用宿主平台特性跨架构地提供 SBI 运行环境。
sbi-rt
内核态最小运行环境
为操作系统内核、虚拟化监控程序等特权级软件提供符合人体工程学的 SBI 接口封装。通过类型安全的 Rust 函数替代易出错的裸常量操作和内联汇编。通过 sbi-rt
,开发者可直接调用标准化的 SBI 服务接口。该模块有效提升系统软件开发效率,同时保障代码的可靠性与可维护性。
sbi-spec
规范基础设施
作为 RustSBI 生态的基石,提供完整的 SBI 规范常量体系(EID/FID)、标准数据结构定义及严格的静态类型校验。通过编译期检查机制预防常量误用和数据结构错位,确保实现与 RISC-V 国际标准的严格一致性。
sbi-testing
自动化测试框架
专为裸机环境设计的 SBI 合规性测试解决方案。该框架预置标准化测试流程,支持快速构建符合 SBI 规范的测试内核,通过自动化测试用例执行生成合规性报告,显著降低测试套件的重复开发成本。
需要特别说明的是,RustSBI 核心库聚焦于跨平台抽象层和开发工具链,不包含具体硬件平台的机器态实现。如需获取可直接部署的 RISC-V SBI 固件,请参阅第三章提供的硬件适配方案。