Bishop向けTOPPERS/JSPカーネルを使用するための手順です。
TOPPERS/JSPカーネルとは、μITRON4.0仕様に準拠したリアルタイムカーネルで、TOPPERSプロジェクトの開発成果です。 TOPPERS/JSPカーネルの詳細についてはTOPPERSプロジェクトを参照してください。
株式会社パイロンが独自に配布する非公式なバージョンです。本ソフトウェアについてTOPPERSプロジェクトへの質問はお控えください。
TOPPRES/JSPカーネルのサポートは実験的なものです。実用レベルに達していないことを予めご了承ください。
Bishop向けTOPPERS/JSPカーネルのROMイメージファイルを下記の場所からダウンロードします。
| TOPPERS/JSP カーネル for Bishop | |||
| toppers-jsp-bishop-1.4.3-pylone0.bin ROMバイナリ | 1.4.3-pylone0 | ダウンロード | 28.0KB |
を参考に、ダウンロードしたROMイメージファイルをNOR上の開始アドレス0番地に書き込みます。
本手順によって、元のROMイメージの内容は書き換えられてしまう点にご注意ください。
書き込みが終了したらBishop本体とHostPCをシリアルケーブル(クロス)で接続し、Bishop本体の電源を入れます。TOPPERS/JSPカーネルのシリアルポートの設定は以下の通りです。
HostPC側のシリアルコンソールへの設定方法等はBishopドキュメント:クイックスタートを参照してください。
Bishopエミュレータがインストールされている環境を前提とします。
qemu-bishopでは起動したディレクトリにあるu-boot.binというファイルをエミュレーションするアドレス空間の0番地に読み込み、起動します。Bishop向けTOPPERS/JSPカーネルは開始アドレス0番地に設置する必要があるため、ROMイメージファイルを任意のディレクトリにダウンロードした後、下記の様にしてファイルをリネームします。(x.x.xはダウンロードしたファイル名に合わせてください)
$ mv toppers-jsp-bishop-x.x.x.bin u-boot.bin
既に本来のu-boot.binが存在する場合は消去されてしまいますので必要に応じてバックアップしてください。
ダウンロードした任意のディレクトリにて、以下のコマンドでqemu-bishopを実行します。
$ qemu-bishop -M pe201a -serial stdio -kernel dummy -mtdblock /dev/null -nographic
この時、
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カーネルの動作に影響はありません。
C:/Program Files/qemu-bishop/にROMイメージファイルをu-boot.binという名称でダウンロードし、スタート > すべてのプログラム > qemu-bishop > qemu-bishop (PE-201A) から実行します。
必要に応じて元のu-boot.binをバックアップしてください。
Linux環境においてqemu-bishopに指定したオプションを以下に解説します。下記以外のオプションに関してはBishop エミュレータマニュアル:主なオプションを参照してください。
クロス開発ツールのインストール (Debian編, Fedora編) を参照してください。
Bishop向けTOPPERS/JSPカーネルのソースコードを下記の場所からダウンロードします。
| TOPPERS/JSP カーネル for Bishop | |||
| toppers-jsp-bishop-1.4.3-pylone0.tar.bz2 ソースコード | 1.4.3-pylone0 | ダウンロード | 996.4KB |
ソースコードを適当な作業ディレクトリに展開します。
$ tar xjvf toppers-jsp-bishop-0.0.1.tar.bz2
展開したディレクトリに移動します。
$ cd toppers-jsp-bishop-0.0.1
Bishop用にビルドします。
$ cd cfg $ make depend $ make CC=g++-4.2 $ cd - $ perl ./configure -C armv4 -S bishop $ make depend TARGET_PREFIX=arm-linux-gnu- $ make TARGET_PREFIX=arm-linux-gnu-
現時点(2009/02/24)では、カーネルコンフィギュレータ(cfg)はgcc-4.3系ではコンパイルできません。
ビルド完了後、jspというファイル名でELFバイナリが生成されるので、必要に応じて、
$ arm-linux-gnu-objcopy -O binary jsp toppers-jsp-bishop.bin
としてRAWバイナリへと変換します。
gdbからqemu-bishop上のTOPPERS/JSPカーネルをデバッグする方法に関して記載します。 手順としては、Bishop エミュレータマニュアル:gdbによるデバッグとほぼ同一です。
ここでは、Bishop向けTOPPERS/JSPカーネルのソースコードディレクトリパスを~/toppers-jsp-bishop、qemu-bishop起動ディレクトリを~/bishop-romとします。
まず、デバッグ対象バージョンのソースコードを前述のビルド手順にてビルドしELFバイナリを生成します。(デバッグ情報を付加するコンパイルオプションは予めMakefileにて設定しています)
次に、生成されたELFバイナリからRAWバイナリをqemu-bishop起動ディレクトリに取得します。
$ cd ~/toppers-jsp-bishop $ arm-linux-gnu-objcopy -O binary jsp ~/bishop-rom/u-boot.bin
-s,-Sオプション付きでqemu-bishopを起動します。
$ cd ~/bishop-rom $ qemu-bishop -M pe201a -serial stdio -kernel dummy -mtdblock /dev/null -nographic -s -S
最後に、ビルドしたTOPPERS/JSPカーネルのソースディレクトリでgdbを起動し、qemu-bishopに接続します。
$ cd ~/toppers-jsp-bishop $ arm-linux-gnu-gdb jsp GNU gdb 6.6.90.20070912-debian Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i486-linux-gnu --target=arm-linux-gnu"... No symbol table is loaded. Use the "file" command. (gdb) target remote localhost:1234 Remote debugging using localhost:1234 0x00000000 in vector_table ()
例として システム依存初期化関数である_kernel_sys_initialize()にブレークポイントを設定し、実行してみます。
(gdb) break _kernel_sys_initialize
Breakpoint 1 at 0x2bac: file ./config/armv4/bishop/sys_config.c, line 130.
(gdb) continue
Continuing.
Breakpoint 1, _kernel_sys_initialize () at ./config/armv4/bishop/sys_config.c:130
130 {
(gdb) list
125 /*
126 * ターゲットシステム依存の初期化
127 */
128 void
129 sys_initialize(void)
130 {
131 init_clock();
132
133 init_ports();
134
(gdb)ブレークしているsys_initialize()の本名は_kernel_sys_initialize()です。jsp_rename.hにてシンボル名を置き換えています。