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


Table of Contents

 

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

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

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

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

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

wget jxf qemu-2.3.0.tar.bz2cd 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 zxf buildroot-2015.02.tar.gzcd buildroot-2015.02

defconfigを確認してみます。

ls configs<snip>at91sam9260eknf_defconfig qemu_arm_nuri_defconfigat91sam9261ek_defconfig qemu_arm_versatile_defconfigat91sam9263ek_defconfig qemu_arm_vexpress_defconfig<snip>

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

qemu-system-arm -M ? | grep vexpressvexpress-a15 ARM Versatile Express for Cortex-A15vexpress-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

Android | Linux | SDL - Narrow Escape