Zephyr OSを自作RISC-Vで動かした話

Zephyr OSを自作RISC-Vで動かした話

Zephyr OSをRustで書いた自作RISC-Vエミュレータで 動かすことに成功したのでその内容をまとめています。 基本的には何か新しいことはしておらず、NuttX OSを動かした時の実装そのままで動きました。

./zephyr-logo.png

Zephyr OSのビルド


ここにまとめている手順でZephyr OSをビルドし、zephyr.elfを生成します。


Zephyr OSのターゲットハードウェア

SiFive Freedom E310 (FE310) がターゲットハードウェアです。ここにハードウェア仕様があり、自作エミュレータのメモリマップや ペリフェラルなど、この仕様書をベースに作成しました。

PWMやSPIなどはOSが起動するためには不要であるため、未実装です。GPIOやPLLはブート時にアクセスしていたため、 レジスタだけ用意している感じです。


自作エミュレータで動かしてみる


LinuxやNuttXのようなシェルはないので、地味ですが。

$ git clone https://github.com/Kurun-pan/riscv-emu.git
$ cd riscv-emu
$ cargo run --release
$ ./target/release/riscv-emu -k ./artifacts/zephyr/zephyr.elf -m SiFive_e
./zephyr.gif


See also