Pylone Blog

SBC6000X エミュレータ

先日発売いたしました、組込みLinux開発用CPUボード SBC6000XQEMU でサポートしましたので公開します。

ベースにした QEMU のバージョンは 0.15.1 です。

SBC6000X エミュレータ
qemu-sbc6000x-0.15.1-pylone1.tar.bz2
ソースコード
0.15.1-pylone1ダウンロード4.6MB

概要

ARM926 は本家 QEMU でサポートされているため、同コア の SoC を搭載したプラットフォームがいくつかサポートされています。 しかし、同コアを使用した SBC6000X のマイクロプロセッサである AT91SAM9261 は今のところサポートされていません。

そこで、Linux の起動に必要となる周辺デバイスのエミュレーションを追加しました。

現状

SBC6000X 用 Linux が起動できる必要最小限のエミュレーションを目標にしたため、実機を完全にエミュレート出来るまでに至っていません。

クイックスタート

ホスト OS として Debian GNU/Linux Squeeze を例に説明します。

SBC6000X 用の Buildroot を用いたビルド にて環境一式が整っていることを前提とします (以降、SBC6000X 用 Buildroot のディレクトリを ~/buildroot-sbc6000x とします)。

現時点では、NAND デバイスをまだエミュレートできないため、ここでは、rootfs に NFS を使用します。 以下の設定を追加し、反映します (以降、NFS として export するディレクトリを /opt/sbc6000x とします)。

# vi /etc/exports
/opt/sbc6000x    127.0.0.1(rw,sync,subtree_check,no_root_squash,insecure)
# exportfs -a

次に、QEMU をビルドするためのライブラリ (開発版パッケージ) をインストールします。 既にインストール済みの場合は不要です。

# apt-get install libglib2.0-dev
# apt-get install zlib1g-dev
# apt-get install libsdl1.2-dev

最後に、ビルドして実行するまでの手順です。

$ mkdir ~/qemu-sbc6000x
$ cd ~/qemu-sbc6000x
$ wget http://downloads.pylone.jp/sbc6000x/src/qemu-sbc6000x-0.15.1-pylone1.tar.bz2
$ tar xjf qemu-sbc6000x-0.15.1-pylone1.tar.bz2
$ cd qemu-sbc6000x-0.15.1-pylone1
$ ./configure --target-list=arm-softmmu
$ make
$ ./arm-softmmu/qemu-system-arm \
      -M sbc6000x \
      -m 256 \
      -serial stdio \
      -kernel ~/buildroot-sbc6000x/output/images/uImage \
      -append "console=ttyS0 root=/dev/nfs rw nfsroot=10.0.2.2:/opt/sbc6000x ip=dhcp"

起動後にログイン可能なユーザーは "root"、または "default" (一般ユーザ) です (何れもパスワードはありません)。

終了するには、QEMU ウィンドウを閉じるか、起動した端末上で Ctrl-C を発行して QEMU を終了してください。

その他の詳しい使い方については SBC6000X エミュレータマニュアル を参照してください。

既知の問題点

起動中、まれに、

mmc0: host doesn't support card's voltages
mmc0: error -22 whilst initialising SDIO card
mmc0: host doesn't support card's voltages
mmc0: error -22 whilst initialising MMC card
mmc0: host doesn't support card's voltages
mmc0: error -22 whilst initialising SDIO card
mmc0: host doesn't support card's voltages
mmc0: error -22 whilst initialising MMC card

というタイミングで起動が停止してしまいますが、終了して再起動してみてください。

おわりに

QEMU に対して追加実装した部分の完成度はまだ低いですが、Linux の基本的な動作は確認できると思います。 SBC6000X のソフトウェアの検討や、組み込み Linux 開発の入門を目的とした使い方をしていただければ幸いです。

ドキュメント