Pylone Blog
SBC6000X エミュレータ
先日発売いたしました、組込みLinux開発用CPUボード SBC6000X を QEMU でサポートしましたので公開します。
ベースにした 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 開発の入門を目的とした使い方をしていただければ幸いです。
![[広告] SH-2搭載Linux対応小型CPUボード Ash](/i/ash-ad.png)