7个不稳定版本

0.3.0-rc12024年6月16日
0.2.0 2022年4月2日
0.1.3 2021年8月23日
0.0.0 2021年3月3日

#81 in 操作系统

Download history 676/week @ 2024-04-18 392/week @ 2024-04-25 414/week @ 2024-05-02 507/week @ 2024-05-09 381/week @ 2024-05-16 503/week @ 2024-05-23 567/week @ 2024-05-30 652/week @ 2024-06-06 918/week @ 2024-06-13 435/week @ 2024-06-20 442/week @ 2024-06-27 330/week @ 2024-07-04 489/week @ 2024-07-11 761/week @ 2024-07-18 774/week @ 2024-07-25 497/week @ 2024-08-01

2,597 每月下载量

MPL-2.0 许可证

395KB
2K SLoC

这个包提供了一种安全的纯Rust实现,用于在S模式软件中(如操作系统内核)使用RISC-V监督二进制接口(SBI)。此包实现了SBI规范的v2.0-rc5版本,并旨在随着规范新版本的发布而保持更新。

重要安全提示

由于此包旨在由S模式软件使用,因此假设您是在S模式下,在M模式下运行符合规范的SBI实现(或者在VS模式下是S模式)的S模式下执行提供的函数,并考虑将执行范围之外的任何其他操作模式,这可能会在这些环境中引起内存安全问题。使用此包时,请将其视为隐含协议。

SBI扩展支持

扩展实现状态图例

✅ - 已完全实现

🚧 - 部分实现

❌ - 未实现

标准SBI扩展

SBI扩展实现状态

遗产 ✅

函数 扩展ID 实现
设置定时器 0
控制台putchar 1
控制台getchar 2
清除IPI 3
发送IPI 4
远程 FENCE.I 5
远程 SFENCE.VMA 6
带有ASID的远程 SFENCE.VMA 7
关机 8

基础 ✅

函数 函数ID 实现
获取SBI规范版本 0
获取SBI实现ID 1
获取SBI实现版本 2
探测SBI扩展 3
获取机器厂商ID 4
获取机器架构ID 5
获取机器实现ID 6

定时器 ✅

函数 函数ID 实现
设置定时器 0

处理器间中断(IPI) ✅

函数 函数ID 实现
发送IPI 0

RFENCE ✅

函数 函数ID 实现
远程 FENCE.I 0
远程 SFENCE.VMA 1
带有ASID的远程 SFENCE.VMA 2
带有VMID的远程 HFENCE.GVMA 3
远程 HFENCE.GVMA 4
带有ASID的远程 HFENCE.VVMA 5
远程 HFENCE.VVMA 6

Hart状态管理 ✅

函数 函数ID 实现
Hart启动 0
Hart停止 1
获取hart状态 2
Hart挂起 3

系统复位 ✅

函数 函数ID 实现
系统复位 0

性能监控单元 ✅

函数 函数ID 实现
获取计数器数量 0
获取计数器信息 1
配置匹配计数器 2
启动计数器 3
停止计数器 4
读取固件计数器 5

调试控制台 ✅

函数 函数ID 实现
控制台写入 0
控制台读取 1
控制台写入字节 2

系统挂起 ✅

函数 函数ID 实现
系统挂起 0

协作处理器性能控制 ✅

函数 函数ID 实现
探测CPPC寄存器 0
读取CPPC寄存器 1
读取CPPC寄存器高位 2
写入CPPC寄存器 3

嵌套加速扩展 ❌

函数 函数ID 实现
探测嵌套加速功能 0
设置嵌套加速共享内存 1
同步共享内存CSRs 2
同步共享内存HFENCEs 3
同步共享内存并模拟SRET 4

偷取时间会计 ❌

函数 函数ID 实现
设置偷取时间共享内存地址 0

实验性、供应商特定和固件特定扩展

实验性、供应商特定和固件特定的SBI扩展作为可选crate功能提供。

目前支持的非标准SBI扩展是

实验性

目前没有支持的实验性SBI扩展。

供应商特定

目前没有支持的供应商特定SBI扩展。

固件特定

目前没有支持的固件特定SBI扩展。

许可

sbi 使用Mozilla公共许可证2.0授权

无运行时依赖