Pylone Blog - タグ:qemu+bishop

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 と比較してエミュレーション可能な機能自体に変更はありません。

各種ペリフェラルのサポート状況
ペリフェラル状況
NORROMとして表現され、NORとしてのコマンドには応答しません。
NAND
LCD
RTC
シリアルポート
イーサネット
GPIOLEDPE-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

実行

まず、以下のイメージファイルをダウンロードします。画像データ以外のファイルは、従来バージョンで使用していたものがあればそのまま使用できます。

イメージファイルが置かれたディレクトリで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
5LED5
6LED4
7LED7
8LED6

例として、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向けの機能を追加したものです。 Beta1Beta2 と比較してエミュレーションの精度が向上していますが、まだ実機に存在する全ての周辺機器を正しくエミュレートできるわけではありません。

各種ペリフェラルのサポート状況
ペリフェラル状況
NORROMとして表現され、NORとしてのコマンドには応答しません。
NAND
LCD
RTC
シリアルポート
イーサネット
GPIOLED状態の設定は可能ですが、表示はおこなわれません。
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

として起動してください。

  1. U-Bootがメモリに読みこまれて起動
  2. U-BootがLinuxカーネルを読みこみ
  3. 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と比較して増加しているため、十分なメモリを確保しての使用をお勧めします。

ダウンロード

今回のリリースでは、ソースコードのみ提供します。以下のリンク先から取得してください:

ソースコード:
qemu-bishop-0.9.1-pylone0rc2.tar.bz2

今後

  • 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

として起動してください。

  1. U-Bootがメモリに読みこまれて起動
  2. U-BootがLinuxカーネルを読みこみ
  3. LinuxカーネルがNANDのファイルシステムイメージをマウント

の順で実行されます。

オプション”-M”には、従来の"pe-201a"と"pe-201b"に加えて"pe-201q"を指定することができます。

カーネルイメージを最新のBishop向けカーネルに差し替えると、起動時にタッチスクリーンからルートファイルシステムを選択することができます。

関連記事