@Vengineerの戯言 : Twitter SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
RISC-Vの薄い本、「OpenSBIとLinuxを調べる」は、BOOTHにて、200円でダウンロード販売しています。
はじめに
RISC-Vが盛り上がっているけど、ハードウェアであるCPUコアだけじゃ、コンピュータって動かないですよね。 Armでは、Linuxが動く前に、U-Bootが動いていて、U-Bootの前に、Arm Trusted Firmware (BL31 <= BL2)が動いていて、Arm Trusted Firmwareの前に BootROMが動いている感じ。 ちなみに、BootROMは、Linux が動くCortex-Aシリーズのコアではなく、Cortex-Mシリーズのようなマイコンが動くプログラムになっていることが多いです。
そこで、下記のようなツイートをしたら、情報を得ることができました。
SPARC
— Vengineer@ (@Vengineer) 2021年4月28日
PowerPC
Arm Cortex-A
とやってきたので
次はRISC-Vですかね
とはいっても、
U-BootとLinuxは Arm Cortex-Aと同じなので、
Arm Trusted Firmware的なものって、RISC-Vには無いのでしょうか
RISC-VでArm Trusted Firmware に相当するもの
どこかで行われたプレゼンテーション資料も教えてもらいました。こちらには上記のドキュメントやソースコードにはない絵での説明があるのでわかりやすいと思います。
- An Introduction to RISC-V Boot Flow
- RISC-V SBI vs ARM PSCI, Comparison between SBI v0.2 and PSCI v1.1
Linux
Linux v5.12 にも既に、SBIの実装はありました。
sbi.h sbi.c kernel/cpu_ops_sbi.c
const struct cpu_operations cpu_ops_sbi = { .name = "sbi", .cpu_prepare = sbi_cpu_prepare, .cpu_start = sbi_cpu_start, #ifdef CONFIG_HOTPLUG_CPU .cpu_disable = sbi_cpu_disable, .cpu_stop = sbi_cpu_stop, .cpu_is_stopped = sbi_cpu_is_stopped, #endif };
この部分のコミットは、Western Digitalの中の人ですね。
おわりに
RISC-VでもArm Trusted Firmwareっぽい、OpenSBIなるものを知りました。このOpenSBIは、RISC-V SBI specification の実装例のようなので、仕様を知りたいのなら、こちらを読み込む必要があるようです。現時点のバージョンは、v0.3 が始まった感じです。
P.S
RISC-V SBI specification に関しては、Western DigitalのAtish PatraさんとAnup Patelさんのおふたりが活動されているっぽいです。 RISC-V Supervisor Binary Interface Specificationには、Palmer Dabbeltさん(当時、SiFive => 現在、Google)のお名前もありますが、現在はあまり活動されていないですね。と思ったら、Linuxではまだまだ活躍中のようでした。