Skip to content

Linuxを動かす (シミュレーション) ​

本章ではLinuxをCPUで動かします。

執筆中!!!(概要だけ書いてます)

RISC-VとOS ​

RISC-Vに対応しているOSとして、Linuxや学習向けの小さなOSであるxv6が挙げられる。 本章ではLinuxをCPUで動かす。 Linuxを起動するには、次の拡張が必要である。 また、OSのようなソフトウェアを動かすことができる標準的なRISC-Vの拡張のセットはRISC-V profilesとして管理されている。(例えばRVA23)

OSが起動する手順を確認する ​

ROMに格納されたローダがプログラムを展開、最低限の準備をする。 展開されたプログラムがOSを起動する準備をし、OSのエントリーポイントにジャンプ。 OSが起動する。

図

CPUはM-modeで起動し、一般的なOSはS-modeで動作します。 M-modeとS-modeの間の操作を抽象化するインターフェースとしてSBI(Supervisor Binary Interface)が定義されています。 SBIの実装としてOpenSBIがあります。

デバイスツリー ​

どのCPUでも動く汎用なOSを起動するとき、今使っているCPUの構成が分からないと困ります。 CPUがどのようなデバイスと接続されていて、どのようなメモリマップかなどを記述する方式に、DTS(Device Tree Source)があります。 DTSは次のように記述されます。

DTSの例

それぞれのフィールドの簡単な説明

作成しているCPU向けのDTSを記述します。

ちょっとした説明

DTSはデバイスツリーコンパイラによってバイナリ形式(dtb)にコンパイルすることができます。 dtbを読み込んでパースして、そのデバイスに合わせた処理を行うことで、メモリマップや構成をソフトウェアにハードコードする必要が無くなり、CPUの構成が変わってもソフトウェアに変更が必要なくなります。

Linuxのビルド ​

buildroot OpenSBI ぬん!

Linuxの実行 ​

わお!