QEMU上でNuttXというリアルタイムOSを動かすまでの手順について紹介します。
NuttXとは
NuttX とは、POSIXライクなインターフェイスを持つリアルタイムOSです。
小さなLinux(Tiny Linux)のようなOSです。
ドローンのプロジェクトやSonyのオーディオ製品123などに使われています。
準備
READMEを参考にしました。
2020年1月時点での手順です。WSL+Ubuntu 18.04上で確認しました。
ビルドなどで足りないパッケージがあれば、必要に応じてapt install
などで追加してください。
QEMUのインストール
$ git clone https://github.com/qemu/qemu
$ cd qemu/
$ ./configure --target-list=riscv32-softmmu
$ make
$ sudo make install
NuttXのソースコード取得
$ mkdir nuttx
$ cd nuttx/
$ git clone https://bitbucket.org/nuttx/nuttx.git
$ git clone https://bitbucket.org/nuttx/apps.git
kconfig-frontends のインストール
$ git clone https://bitbucket.org/nuttx/tools.git
$ cd tools/kconfig-frontends/
$ ./configure
$ make
$ sudo make install
$ sudo /sbin/ldconfig
toolchainのビルド
時間がかかります
$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
$ cd riscv-gnu-toolchain/
$ ./configure --prefix=/opt/riscv --enable-multilib
$ sudo make
$ export PATH=$PATH:/opt/riscv/bin
NuttXのビルド
nuttxやappsをgit cloneしたディレクトリから、
$ cd nuttx/
$ ./tools/configure.sh hifive1-revb:nsh
$ make menuconfig
$ make
make menuconfig
では『FE310 Chip Selection』で『FE310 QEMU』を選んでSave。
起動と終了
起動
$ qemu-system-riscv32 -nographic -machine sifive_e -kernel ./nuttx
終了
Ctrl+aのあとにx
-
https://openiotelcna2017.sched.com/event/9OOs/developing-audio-products-with-cortex-m3nuttxc11-masayuki-ishikawa-sony ↩
-
https://elciotna18.sched.com/event/DYML/smp-and-networking-support-on-nuttxlc823450-masayuki-ishikawa-koichi-okamoto-sony-video-sound-products-inc ↩
-
https://osseu19.sched.com/event/UtJ0/nuttx-for-embedded-linux-developers-masayuki-ishikawa-sony ↩