RustSBI是RISC-V下SBI标准的实现,旨在为裸机平台、虚拟化和模拟器软件提供良好的SBI接口支持。它有机结合了Rust嵌入式生态与RISC-V系统软件,加快开发速度的同时,保证Rust语言具备的良好安全性和运行性能。本次0.3.0版本主要包括增加了实例化的SBI接口支持及相关的构造器结构,可以在stable Rust编译,去除了对堆内存和全局变量的依赖,完善了相关文档,以及若干的小修复。0.3.0版本更新将为Rust编写的RISC-V虚拟化软件和RISC-V模拟器提供良好的支持,并进一步完善裸机RISC-V开发的实用性,可以启动Linux等在内的成熟操作系统和zCore等在内的科研操作系统。
随着RustSBI 0.3.0正式版的发布,RustSBI的生态链项目趋于成熟,正在酝酿的“RustSBI原型设计系统”也在活跃开发中。内核运行工具sbi-rt、常数与结构包sbi-spec和规范测试集sbi-testing都已完成定型、发布预览版,并进入实际项目的依赖选项中。“RustSBI原型设计系统”并非专注于原型设计,而是提供一种快速开发的解决方案,开发完成后,它将允许厂家在最短的时间内适配SBI接口到自己的RISC-V主板和平台,并且直接获得蓬莱TEE、@dram的软件模拟虚拟化以及Raven固件调试器等高级功能。与此同时,贡献者和用户群体也反馈了对RustSBI及其新版本的评价。
活跃的社区贡献者@YdrMaster认为,RustSBI软件是社区力量在RISC-V SBI生态中的表现。“RustSBI帮助我探索‘内核之下(M态)’和‘内核之前(bootloader)’;相比OpenSBI,它的实现更简洁、干净,构建方式更现代,能提供更好的开发体验和操作空间”,YdrMaster说,“它除了具备所有Rust的优势之外,还具有库 + 实现的抽象,不必将所有实现塞进一个仓库,对一个硬件也有针对不同需求的不同实现。如果需要一个新实现,可以只重做关心的部分,复用其它部分。另外,它的运行速度快,在连续的内核测试时十分明显。”
长期贡献Oreboot项目的Daniel Maslowski说,RustSBI简化了完整引导程序的开发工作。“RustSBI是Rust生态中的SBI实现,它有助于记住RISC-V中(的SBI服务)需要什么,并且已经定义了所有的常量和结构”,丹尼尔说,“Rust是它特长的一方面,(在引导程序开发中)我不需要额外的组件或者代码库。这样,对于相当多的SoC,我们可以为固件提供单个的初始化阶段,只要它能够放入SRAM中,就像我为JH7100(128K)做得一样。”
UltraOS团队的@LoanCold认为,RustSBI就它为RISC-V SBI生态所做的贡献来说,它可以继续蓬勃发展下去,给开发者更多的选择空间。“我所参与的UltraOS团队用Rust实现撰写的操作系统,使用了RustSBI项目。从项目来说,更好的开发者支持以及更强大的K210开发板支持,是我受益的最大部分”,LoanCold说,“我们团队也自身更改过RustSBI以实现更好的功能,这是开源或者进一步开源带来的好处,或者说RustSBI较为完备的注释带来的好处。它同时使得我们能够更好地支持K210平台的开发,这是OpenSBI所不能做到的。未来的RustSBI可以做到垂直整合,吸引稳定的使用者,完善平台支持和自动化测试,来保障系统级别的应用长期稳定运行。”
“今年相比过去的两年,RustSBI生态和用户在进一步扩大。除了科研和教学界,我们乐于见到更多产业界的公司贡献到RustSBI生态中”,洛佳说,“BL808的官方Rust支持库就是一个好的开始。大小核支持、虚拟化和模拟器支持以及安全特性,这些都是RustSBI擅长的部分。无论用户选择创新的全栈Rust实现还是兼顾U-Boot、UEFI或者EDK II等传统软件的实现,RustSBI都可以良好地支持和配合产业软件的发展。在我们应用于模拟器的性能测试中,RustSBI体现出非凡的性能,部分性能指标达到了竞争对手的20至30倍。我们希望将RustSBI卓越的特点分享给所有的引导程序软件,无论是C或者Rust都可以——生态的参与者能够一起合作,共同提高引导程序产业的安全和稳定性。”
本次更新的主要贡献者有@duskmoon314,@OrangeCMS,@YdrMaster和@luojia65。RustSBI通过独立的包支持D1芯片的各个主板,鉴于RustSBI的star数已经超过所有竞争对手的总和,未来RustSBI团队希望积极和厂商沟通,得到更多芯片的支持。