😺

NuttX: ARM64 向けにビルドして QEMU で動かす

2022/10/09に公開約1,800字

はじめに

NuttXでサポートされているRM64ターゲットはQEMU + Arm Cortex-A5だけの様子なので、ビルドしてQEMUで動かす方法を自分のメモ兼ねてまとめてみました。

1. セットアップ

ツールチェーンのインストール

$ sudo apt install kconfig-frontends
$ wget https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar.xz
xz -d gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar.xz
$ sudo mkdir -p /opt/arm/linaro-toolchain
$ sudo tar xf gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar -C /opt/arm/linaro-toolchain
$ export PATH=$PATH:/opt/arm/linaro-toolchain/gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf/bin

QEMUインストール

$ sudo apt install qemu-system-arm qemu-efi-aarch64 qemu-utils

ソースコードのクローン

git clone https://github.com/apache/incubator-nuttx.git nuttx
git clone https://github.com/apache/incubator-nuttx-apps.git apps
cd nuttx

2. ビルド

シングルコア

$ ./tools/configure.sh -l qemu-armv8a:nsh
$ make

SMP (マルチコア)

$ ./tools/configure.sh -l qemu-armv8a:nsh_smp
$ make

CPUコアをデフォルトのcortex-a53から別のものに変える

$ make menuconfig

でCPUコアを別のものに変更する

別の仕向で再ビルドする場合

一度クリーンしておく

$ make distclean

(自分用のメモ)defconfigファイルを自動生成

普段利用するだけの人はこの作業は全くもって不要です。

$ /tools/refresh.sh --silent qemu-armv8a:nsh

3. 実行

$ qemu-system-aarch64 -cpu cortex-a53 -nographic \
     -machine virt,virtualization=on,gic-version=3 \
     -net none -chardev stdio,id=con,mux=on -serial chardev:con \
     -mon chardev=con,mode=readline -kernel ./nuttx
$ qemu-system-aarch64 -cpu cortex-a53 -smp 4 -nographic \
     -machine virt,virtualization=on,gic-version=3 \
     -net none -chardev stdio,id=con,mux=on -serial chardev:con \
     -mon chardev=con,mode=readline -kernel ./nuttx

4. 参考文献

https://github.com/apache/incubator-nuttx/tree/master/boards/arm64/qemu/qemu-a53

Discussion

ログインするとコメントできます