qemu-system-armでvexpress-a9を動かす

QEMU-2.3でqemu-system-armのvexpress-a9ボードを動かしてみます。

ルートファイルシステムはBuildroot-2015.02で作成します。

Debian jessie上でやりました。

 

1 QEMU-2.3のビルドとインストール

ディスプレイの表示にSDL2を使おうと思います。

QEMUのビルドに必要なパッケージとSDL2パッケージをインストールします。

sudo apt-get install gcc g++ autoconf automake libtool
sudo apt-get install libsdl2-dev

QEMUをダウンロードします。

wget http://wiki.qemu-project.org/download/qemu-2.3.0.tar.bz2
tar jxf qemu-2.3.0.tar.bz2
cd qemu-2.3.0

configureでSDL2の参照を有効にします。-enable-sdlのみだとSDL1.2が参照されるようなので、–with-sdlabi=2.0でSDL2を参照します。

./configure --enable-sdl --with-sdlabi=2.0 --prefix=${HOME} 

ビルドします。全アーキテクチャのバイナリを生成する為、そこそこ時間がかかります(core-i3なマシンで20分くらい掛かりました)。

make all install -j4

2 Buildroot-2015.02のビルド

Buildrootをダウンロードします。

wget http://buildroot.uclibc.org/downloads/buildroot-2015.02.tar.gz
tar zxf buildroot-2015.02.tar.gz
cd buildroot-2015.02

defconfigを確認してみます。

ls configs
<snip>
at91sam9260eknf_defconfig            qemu_arm_nuri_defconfig
at91sam9261ek_defconfig              qemu_arm_versatile_defconfig
at91sam9263ek_defconfig              qemu_arm_vexpress_defconfig
<snip>

qemu-system-armにvexpress-a9というボードがあります。

qemu-system-arm -M ? | grep vexpress
vexpress-a15         ARM Versatile Express for Cortex-A15
vexpress-a9          ARM Versatile Express for Cortex-A9

Cortex-A9コアは最近のスマホで使われており(最近はarmv8コアが主流かもしれませんが)、動かしてみるのも楽しそうです。

 

Buildrootのqemu_arm_vexpress_defconfigを使用します。make xxx_defconfigでconfigs配下のdefconfigを使用できます。

make qemu_arm_vexpress_defconfig

ビルドします(ツールチェインとパッケージ群をネットワーク経由で取得する為、ネットワーク速度依存な部分が大きいですが、core-i3なマシンで30分くらい掛かりました)。

make -j4

ルートファイルシステムのイメージが作成されます。

$ ls output/images/
rootfs.ext2  zImage

3 vexpressボードの起動

ルートファイルシステムをSDカードとして読み込みます。

qemu-system-arm -M vexpress --kernel output/images/zImage \
  -sd output/images/rootfs.ext2 -serial stdio \
  -append "root=/dev/mmcblk0 rw"

起動するとシリアル、ディスプレイ、QEMU用プロンプト(デバイス追加等の操作)のウィンドウが表示されます。

グラフィック関係のパッケージが全然含まれていない為、ディスプレイはペンギン画像とカーネルログが表示される程度です。シリアルからログインできます。

 

https://dl-web.dropbox.com/s/dbyjimb0fl6mz5a/qemu-system-arm-vexpress-a9.png