Pylone Blog - タグ:qemu
TOPPERS/JSPカーネル for Bishop
組込みLinux開発用CPUボードBishop向けに移植したTOPPERS/JSPカーネルを公開します。使用したTOPPERS/JSPカーネルのバージョンは 1.4.3 です。
TOPPERS/JSPカーネルとは、μITRON4.0仕様に準拠したリアルタイムカーネルで、TOPPERSプロジェクトの開発成果です。 TOPPERS/JSPカーネルの詳細についてはTOPPERSプロジェクトサイトを参照してください。
株式会社パイロンが独自に配布する非公式なバージョンです。本ソフトウェアについてTOPPERSプロジェクトへの質問はお控えください。
今回の移植は実験的なものです。実用レベルに達していないことを予めご了承ください。
| TOPPERS/JSP カーネル for Bishop | |||
| toppers-jsp-bishop-1.4.3-pylone0.tar.bz2 ソースコード | 1.4.3-pylone0 | ダウンロード | 996.4KB |
| toppers-jsp-bishop-1.4.3-pylone0.bin ROMバイナリ | 1.4.3-pylone0 | ダウンロード | 28.0KB |
移植概要
ゼロからの移植ではなく、標準TOPPERS/JSPカーネルに既に含まれる同一のCPUコアを持つシステムをベースにして移植を行いました。 BishopのCPUコアはARM920Tであるため、ベースにするシステムはIntegrator/AP+CM920Tとしました。
また、サポートしたデバイスは、TOPPERS/JSPカーネルの動作が最低限確認出来るものとして、
- インターバルタイマ
- UART
のみとしました。
Bishopエミュレータによる実行
Bishopエミュレータにて実行する手順です。 予めBishopエミュレータをインストールしたLinux環境を想定しています。
Windows上のBishopエミュレータでの実行手順、及びBishopボードでの実行手順に関しては後述の関連リンクを参照してください。
前述のTOPPERS/JSPカーネルのROMバイナリファイルをダウンロードして、ダウンロードしたディレクトリに移動後、
$ mv toppers-jsp-bishop-1.4.3-pylone0.bin u-boot.bin
としてファイル名称を変更して、
$ qemu-bishop -M pe201a -serial stdio -kernel dummy -mtdblock /dev/null -nographic
としてqemu-bishopを起動します。この時、
failed to open: led.img failed to open: led.img failed to open: led.img failed to open: led.img failed to open: pe201a.img bishop_reset: splash image splash480.bmp.gz was not found bishop_reset: failed to load a kernel image file
と、qemu-bishopがメッセージを出力しますがTOPPERS/JSPカーネルの動作に影響はありません。
次いで、
TOPPERS/JSP Kernel Release 1.4 (patchlevel = 3) for ARM - Pylone Bishop board (Feb 24 2009, 15:21:58)
Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
Toyohashi Univ. of Technology, JAPAN
Copyright (C) 2004-2006 by Embedded and Real-Time Systems Laboratory
Graduate School of Information Science, Nagoya Univ., JAPAN
System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001). |
task1 is running (002). |
task1 is running (003). |
とTOPPERS/JSPカーネルのバナー、及びTOPPERS/JSP付属のサンプルプログラムからのシリアル出力が表示されると思います。
サンプルプログラムは起動中の3つのタスクに関する指示を与えられるようになっており、 例えばレディーキューを回転する'r'を入力すると、task1からtask2へと実行状態のタスクが切り替わります。
Sample program starts (exinf = 0). task1 is running (001). | task1 is running (002). | task1 is running (003). | #rot_rdq(three priorities) task2 is running (001). + task2 is running (002). + task2 is running (003). +
サンプルプログラムの詳細に関しては、TOPPERS/JSPカーネルソースコード内の sample/sample1.c 冒頭のコメント文を参照してください。
TOPPERS/JSPカーネルに標準で付属するWindows上で動作するシミュレータでもタスクの状態を検証する事が出来ると思いますが、今回のBishopエミュレータによる実行も併用すれば、実機によるデバッグをさらに軽減することが出来ると思います。
関連リンク
Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopエミュレータの正式版をリリースしました。
ドキュメント
ダウンロード
| Bishopエミュレータ | |||
| qemu-bishop-0.9.1-pylone1.tar.bz2 ソースコード | 0.9.1-pylone1 | ダウンロード | 2.3MB |
| qemu-bishop-0.9.1-pylone1-setup.exe win32 installer | 0.9.1-pylone1 | ダウンロード | 1.7MB |
| qemu-bishop_0.9.1-pylone1-1_i386.deb deb | 0.9.1-pylone1-1 | ダウンロード | 461.0KB |
| qemu-bishop-0.9.1_pylone1-1.i386.rpm rpm | 0.9.1-pylone1-1 | ダウンロード | 462.8KB |
関連記事
BishopエミュレータBeta4リリース
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopエミュレータBeta4を公開します。
更新履歴
- 2008/9/26: 初版公開
Beta3からの変更点
ボード画像/LED状態表示のサポート
Bishopの実機では、GPIOポートに対して出力を行うことで、基板上でLED5/LED4/LED8/LED7とラベルされたLEDを制御することができます。
QEMUウィンドウ内にLCDの内容だけでなく、これらのLED状態も表示されるようにしました。起動初期段階のデバッグ等に利用できます。
リリース内容
本エミュレータは、オープンソースのプロセッサエミュレータ QEMUの開発版をベースに、Bishop向けの機能を追加したものです。 本リリースでは Beta3 と比較してエミュレーション可能な機能自体に変更はありません。
各種ペリフェラルのサポート状況
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | ○ | PE-201QにはLEDが存在しないため、201A,201Bエミュレーション時のみ表示されます。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | △ | 再生のみです。 | |
| タッチスクリーン | ○ | ||
| SD/MMC | ○ | ||
| カメラ | × | ||
コンパイル手順
本バージョンでは、ソースコード (qemu-bishop-0.9.1-pylone0rc4.tar.bz2) のみを公開しています。以下の手順でコンパイルすることができます。
必要なもの
- gcc-3.4 (4.x では動作しません)
- zlib
- SDL 1.2
手順
$ ./configure --target-list=arm-softmmu --enable-alsa $ make
実行
まず、以下のイメージファイルをダウンロードします。画像データ以外のファイルは、従来バージョンで使用していたものがあればそのまま使用できます。
- U-Boot
- Linuxカーネル
- initrd
- ファイルシステム (NAND)
- NOR上スプラッシュ画像領域イメージ
- PE-201Aエミュレーション画像データ
- PE-201Bエミュレーション画像データ
- LED状態表示画像データ
イメージファイルが置かれたディレクトリでqemuを
$ qemu-system-arm -M pe201a -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
$ qemu-system-arm -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
のように起動してください。
-M オプションに指定された値(pe201a または pe201b) に従って、QEMUウィンドウ内にLCDの内容だけでなく、ボード画像/LED状態も表示されます。
Bishop標準のLinuxカーネルで起動した場合、実機と同様にHeartBeatの処理が開始されるとLEDの表示が変化します。
LEDはGPIOポートバンク'B'の 5,6,7,8 ビットに接続されているので、アドレス0x56000014に値を書くと(対応するピンが出力用に設定されていれば)反映されます。 なお、論理は負、0 から数えたビット番号とLEDの対応は以下となります。
| ビット番号 | LED |
|---|---|
| 5 | LED5 |
| 6 | LED4 |
| 7 | LED7 |
| 8 | LED6 |
例として、U-Bootプロンプトから4つのLEDすべてを消灯/点灯するには以下のようにします。
# mw.l 56000014 1e0 # mw.l 56000014 000
なお、QEMU上では 1e0 に代わりに ffff などの値を書いても同様の結果が得られますが、実機では 0x1E0 以外の値を設定すると他デバイスの動作に干渉してしまいます。
関連記事
BishopエミュレータBeta3リリース
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopエミュレータBeta3を公開します。
更新履歴
- 2008/5/23: 初版公開
Beta2からの変更点
オーディオサポート
再生のみですが、オーディオに対応しました。
SD/MMCサポート
SD/MMCに対応しました。 -sd オプションで指定したディスクイメージファイルをSDカードとして扱うことができます。 ディスクイメージの作成方法は「ディスクイメージのホスト側での操作方法」を参照してください。
バイナリパッケージ
debianパッケージ、RPM、Windows インストーラを用意しました。
リリース内容
本エミュレータは、オープンソースのプロセッサエミュレータ QEMUの開発版をベースに、Bishop向けの機能を追加したものです。 Beta1 や Beta2 と比較してエミュレーションの精度が向上していますが、まだ実機に存在する全ての周辺機器を正しくエミュレートできるわけではありません。
各種ペリフェラルのサポート状況
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | △ | 状態の設定は可能ですが、表示はおこなわれません。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | △ | 再生のみです。 | |
| タッチスクリーン | ○ | ||
| SD/MMC | ○ | ||
| カメラ | × | ||
インストール
Debian
/etc/apt/sources.list に以下の apt-line を加えます。
deb http://downloads.pylone.jp/tools/deb ./
入手可能なパッケージの一覧を更新します。
# aptitude update
qemu-bishop パッケージをインストールします。
# aptitude install qemu-bishop
Fedora
/etc/yum.repos.d/pylone-jp.repo に yum レポジトリを追加します。
[tools] name=Tools baseurl=http://downloads.pylone.jp/tools/rpm/ enabled=1 gpgcheck=0
リポジトリ情報を更新します。
# yum update
qemu-bishopパッケージをインストールします。
# yum install qemu-bishop
Windows
インストーラ (qemu-bishop-0.9.1-pylone0rc3-setup.exe) をダウンロードして実行してください。
実行
Linux
まず、以下のイメージファイルをダウンロードします。
イメージファイルが置かれたディレクトリでqemu-bishopコマンドを
$ qemu-bishop -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
として起動してください。
- U-Bootがメモリに読みこまれて起動
- U-BootがLinuxカーネルを読みこみ
- LinuxカーネルがNANDのファイルシステムイメージをマウント
の順で実行されます。
-M オプションには、従来の pe201a と pe201b に加えて pe201q を指定することができます。
Windows
「スタート」 → 「すべてのプログラム」 → 「qemu-bishop」
コンパイル手順
ソースコード (qemu-bishop-0.9.1-pylone0rc3.tar.bz2) からビルドする場合の手順です。
必要なもの
- gcc-3.4 (4.x では動作しません)
- zlib
- SDL 1.2
手順
$ ./configure --target-list=arm-softmmu --enable-alsa $ make
関連記事
BishopエミュレータBeta2リリース
正式版を公開しました - 記事: Bishopエミュレータ正式版リリース
組込みLinux開発用CPUボードBishopのエミュレータのBeta2版を公開します。
更新履歴
- 2007/12/28: 初版公開
- 2008/1/18: ソースコードを qemu 0.9.1 に追従して更新
Beta1からの変更点
開発用仮想ターゲットPE-201Q
エミュレートする環境として提供される仮想ターゲットPE-201Qを追加しました。 実機より大きな画面(640x1024)および豊富なNOR領域(128MBytes)が利用可能となるので、開発環境としての利便性が向上します。
タッチスクリーンのサポート
エミュレータウィンドウ上のポインタ操作を、タッチスクリーンへの入力として変換するようにしました。 PE-201A/Bとしてエミュレーションを行う場合、タッチスクリーンはキャリブレーション済の状態で起動します。 PE-201Qでは変換係数の初期値に意図的にある程度の誤差を残してあります。 キャリブレータの動作確認にはPE-201Qを使用してください。
-appendオプション
QEMU起動時に-appendオプションが付加された場合に、U-Bootの環境変数"bootargs"へ反映するようにしました。 この環境変数はLinuxカーネルの起動時の引数として渡されます。
-append を指定しないか、空("")とした場合、bootargsの内容は
bootargs=console=ttySAC0,115200 console=tty0 preinit=/pylone root=/dev/mtdblock5 nfsroot=10.0.2.2:/ROOTFS/ ip=10.0.2.15::10.0.2.2:255.255.255.0:::
となります。この場合、特に操作しなければルートファイルシステムとしてNANDが使用されます。
-appendに"xxx=yyy"のような値を指定した場合、bootargsの内容の後半が書き換えられて
bootargs=console=ttySAC0,115200 console=tty0 preinit=/pylone xxx=yyy
となります(この例のままでは"root="が指定されなくなるため、起動に失敗します)。
-append "root=/dev/nfs nfsroot=xx.xx.xx.xx:/XXXXX ip=10.0.2.15::10.0.2.2:255.255.255.0:::"
のように有効な"root="と付加情報を設定すれば、指定に従って起動します(この例の場合は nfs サーバxx.xx.xx.xx の /XXXXX をルートとして)。
コード変換バッファ領域のサイズ変更
QEMU がエミュレーションのために使用するコード変換バッファ領域のサイズを増やしました。 エミュレータ上で複雑な処理をおこなわせた場合の速度低下が軽減されています。
QEMUのメモリ消費量がBeta1と比較して増加しているため、十分なメモリを確保しての使用をお勧めします。
ダウンロード
今回のリリースでは、ソースコードのみ提供します。以下のリンク先から取得してください:
今後
- Debianパッケージ
- Windowsインストーラ
も準備する予定です。
リリース内容
本エミュレータは、オープンソースのプロセッサエミュレータQEMUの開発版をベースに、Bishop向けの機能を追加したものです。Beta2ではBata1に比較してエミュレーションの精度が向上していますが、まだ実機に存在する全ての周辺機器を正しくエミュレートできるわけではありません。
各種ペリフェラルのサポート状況
| ペリフェラル | 状況 | 注 | |
|---|---|---|---|
| NOR | △ | ROMとして表現され、NORとしてのコマンドには応答しません。 | |
| NAND | ○ | ||
| LCD | ○ | ||
| RTC | ○ | ||
| シリアルポート | ○ | ||
| イーサネット | ○ | ||
| GPIO | LED | △ | 状態の設定は可能ですが、表示はおこなわれません。 |
| USB(OHCI) | マスストレージ | △ | 高負荷時に不安定になる場合があります。 |
| キーボード | △ | ホストのキーボードが英語配列でない環境では、一部のキーが正しく解釈されません。 | |
| マウス | ○ | ||
| サウンド | × | ||
| タッチスクリーン | ○ | ||
| MMC | × | ||
| カメラ | × | ||
ソースコードからのインストール
必要な環境
- gcc-3.4 (4.x では動作しません)
- SDL 1.2
Debian環境では、 # apt-get build-dep qemu を実行することで、必要なパッケージを一括してインストールすることもできます。
構築手順
ソースコードを展開したディレクトリ内で以下の手順を行うことで、実行可能ファイル ./arm-softmmu/qemu-system-arm が生成されます。
- configure の実行
- $ ./configure --target-list=arm-softmmu
- コンパイル
- $ make
エミュレータの実行
Bishopエミュレータに実機出荷状態と同様の動作をさせるためには、
を与える必要があります。それぞれのファイルをリンク先からダウンロードし、ソースコードのトップディレクトリに置いた状態で
$ ./arm-softmmu/qemu-system-arm -M pe201b -serial stdio -kernel dummy -usbdevice keyboard -mtdblock nand-bishop.img
として起動してください。
- U-Bootがメモリに読みこまれて起動
- U-BootがLinuxカーネルを読みこみ
- LinuxカーネルがNANDのファイルシステムイメージをマウント
の順で実行されます。
オプション”-M”には、従来の"pe-201a"と"pe-201b"に加えて"pe-201q"を指定することができます。
カーネルイメージを最新のBishop向けカーネルに差し替えると、起動時にタッチスクリーンからルートファイルシステムを選択することができます。
