特權層二進制接口
此條目過於依賴第一手來源。 (2021年6月18日) |
特權層二進制接口是RISC-V架構下引導程序環境的規範[1]。它提供了特權層的運行環境,使得特權層軟件能使用環境調用指令,來執行平台相關的操作。典型的的特權層接口應用有:一、類似於Unix的操作系統中,機器級和特權級的訪問接口;二、監視特權級和虛擬特權級中,作為虛擬化環境的調用接口。
開發者 | RISC-V Unix工作組 |
---|---|
首次發布 | 2018年5月26日 |
當前版本 | 1.0.0(2022年3月23日) |
預覽版本 | 1.0-rc3(2022年3月16日) |
源代碼庫 | |
平台 | RISC-V |
許可協議 | CC-BY-4.0 |
網站 | GitHub |
功能模塊
編輯特權層接口規範[2]定義了以下的模塊。
- 基礎模塊:包含探測支持的SBI功能、得到SBI版本和得到機器版本等部分;
- 時鐘中斷模塊:設置下一個時鐘中斷的發生時間;
- 跨核軟中斷模塊:發送跨處理核的軟件中斷;
- 遠程柵欄模塊:跨處理核發送柵欄指令,包括指令柵欄、內存映射柵欄和虛擬機柵欄指令等;
- 核狀態模塊:啟動、停止和暫停一個處理核,以及讀取處理核的當前狀態;
- 復位模塊:重啟或關閉系統。
其中,基礎模塊是必須要求實現的模塊,其它模塊都是可選實現的模塊。
舊擴展模塊
編輯當特權層接口規範支持陳舊擴展時,包含以下的模塊。
- 舊擴展模塊:包含控制台輸入輸出等。
舊擴展模塊的大多數功能,都在新的功能模塊中有替代選項。如果可能,儘量使用分別列出的新版功能模塊。
預留模塊部分
編輯這些模塊包括實驗性模塊、製造商定義模塊和固件定義模塊。
特權層接口規範為製造商預留了定義功能模塊的空間,通常上,這些空間可以與mvendorid寄存器的內容對應。 每個特權層接口實現編號,都可以擁有自己的固件定義模塊,這部分實現根據不同的具體固件而不同。
使用預留模塊時需要注意:並非所有的SBI實現、製造商都提供此類模塊和它的函數。操作系統軟件需要結合特定的特權層接口實現,編寫預留模塊的支持部分。
軟件實現
編輯目前流行的特權層接口實現軟件實現有以下幾種。
參考文獻
編輯- ^ RISC-V Community. RISC-V SBI 的GitHub仓库. [2021-06-04]. (原始內容存檔於2021-03-09).
- ^ RISC-V Community. RISC-V SBI 规范正文. [2021-06-04]. (原始內容存檔於2021-03-06).
- ^ OpenSBI GitHub. [2021-06-04]. (原始內容存檔於2021-07-20).
- ^ RustSBI GitHub.
- ^ Diosix GitHub. [2021-06-04]. (原始內容存檔於2020-11-11).
- ^ Coffer GitHub. [2022-04-01]. (原始內容存檔於2022-04-01).