TOPPERS/JSP for GR-SAKURA 2015/JUL/21 0.0.2 版 1. 概要 ------- 本ソフトウェアは、TOPPERS プロジェクトより配布されている TOPPERS/JSP カーネル(以下、単に JSP カーネル)を、 RX63N 搭載ボードの GR-SAKURA 向けに移植したものです。 現時点では、JSP カーネル(ver 1.4.4.1)のターゲット非依存部との組み合わせにて、 サンプルプログラムが動作することを確認しています。 ※ あくまで TOPPERS プロジェクトに無関係の個人が移植したものですので、 本配布物に関して TOPPERS プロジェクトに問い合わせることのないように願います。 2. JSP カーネルおよびサンプルプログラムのビルド ----------------------------------------------- 2.1 ビルド要件 GR-SAKURA 向け JSP カーネルのビルドには - g++ - Perl - GNU make(BSD make や SYSV make は不可) - RX 向け GNU Toolchain(binutils および gcc) が動作する環境が必要になります。 手元に RX 向け GNU Toolchain が無い場合は、 後述の「A. RX 向け GNU ツールチェインの構築手順」を 参考にビルドして下さい。 ビルド確認済の GNU Toolchain のバージョンは以下のとおりです。 binutils: 2.23 gcc: 4.7.4 2.2 ビルド手順 以下では動作確認用に、サンプルプログラム(sample ディレクトリ以下)に JSP カーネルを組み込んでビルドする手順を説明します。 自作のアプリケーションをカーネルと共にビルドする方法等については、 doc/user.txt を参照して下さい (m68k -> rx、dve68k -> gr_sakura 等と適宜読み替えて下さい)。 jsp4sakura-0.0.1.tar.gz を展開して作成されたディレクトリ(jsp)の直下に cd し、 以下を順に実行して下さい。 1) コンフィグレータのビルド $ (cd cfg && make depend && make) 2) コンフィグレーションの実行 $ (mkdir OBJ && cd OBJ && perl ../configure -C rx -S gr_sakura) 3) カーネルおよびサンプルプログラムのビルド $ (cd OBJ && make depend && make) ※ 環境によっては、make depend が終了しない(具体的には "../cfg/cfg -s tmpfile1 -c -obj -cpu rx -system gr_sakura" のコマンドを 実行したまま制御が戻ってこない)ことがあります。 その場合は、Ctrl+C で一旦 make depend を終了した上で、 cfg/base/parser.cpp の 622 行目を 変更前: if(current->stream->eof()) 変更後: if(!current->stream->good()) に書き換えた後、手順 1) および 3) を再度実行して下さい。 以上により、サンプルプログラムの S-Record 形式ファイルが作成されます。 $ ls -l OBJ/jsp.srec -rwxr-xr-x 1 ssuzuki users 55876 7月 6 00:58 OBJ/jsp.srec 3. サンプルプログラムの書き込みと動作確認 ----------------------------------------- 3.1 書き込みの準備 サンプルプログラムの書き込みには - E1 エミュレータ - フラッシュ開発ツールキット(FDT)をインストールした Windows PC が別途必要になります。 また、GR-SAKURA の CN6 に JTAG I/F 用のピンヘッダを 事前に半田付けしておく必要があります。 3.2 書き込み手順 本手順を実行する前に GR-SAKURA に書き込み済ファームウェアを バックアップされることをお奨めします。 書き込みの手順を以下に示します。 1) GR-SAKURA の CN6 と E1 エミュレータを、 E1 エミュレータに附属のインタフェースケーブルにて接続します。 2) E1 エミュレータと Windows PC を USB ケーブルにて接続します。 3) Windows PC にて FDT を起動し、2.2 でビルドした jsp.srec を書き込みます。 ※ 書き込み時は、E1 エミュレータから 3.3 V を給電するようにして下さい。 4) FDT での書き込み後、2) の USB ケーブル および 1) のインタフェースケーブルをこの順に取り外します。 3.3 動作確認手順 GR-SAKURA と PC をシリアルケーブルにて接続します。 GR-SAKURA の出力レベルは 3.3 V ですので、 レベル変換器(ADM3202 等)を介して接続する必要があります。 GR-SAKURA の +3.3V、GND、TXD0、RXD0 の端子を、 レベル変換器の対応する端子に接続して下さい (GND は、二つの端子の内どちらを使用しても構いません)。 ++---+----+---+----+-----------+-----+ ||DC | |USB| | LAN | | || | +---+ | | | || | | | | |+---+ | | | | | | | | +-----------+ | | +-+ | | |o| | | |o| | | |o| | | +-+ |o| | | |o| |o| | +3.3V --+-+o| |o| | | |o| +------------+ |o| | GND --+-+o| |R5F563NBDDFP| |o| | GND --+-+o| |RX63NB | +-+ | | |o| | | +-+ | | +-+ | | |o| | | +-+ | | |o| | | |o| +------------+ |o| | | |o| |o| | | |o| +-++-+ |o| | | |o| |o||o| |o| | | |o| +-++-+ |o+-+-- TXD0 | |o| +--------+ |o+-+-- RXD0 | +-+ |JTAG I/F| +-+ | | +--------+ | +------------------------------------+ PC 側で(minicom や teraterm 等の)端末エミュレータを起動し、 シリアルポートのパラメータ値を以下のとおりに設定します。 設定項目 設定値 -------------- --------- ボーレート 9,600 bps データ長 8 bit パリティ なし ストップビット 1 フロー制御 XON/XOFF 5V の AC アダプタまたは USB ケーブルにて GR-SAKURA に給電します。 各タスクが起動し、端末エミュレータに以下が出力されます。 TOPPERS/JSP Kernel Release 1.4 (patchlevel = 4) for GR-SAKURA (Jun 29 2015, 23:22:37) 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). | task1 is running (004). | task1 is running (005). | task1 is running (006). | 4. 制限事項 ----------- 現時点では、以下の制限事項があります。 - コンテキスト切り換え時に浮動小数点ステータスワード(FPSW)を退避しない 割り込み発生時およびディスパッチャによるタスク切り替え時に FPSW をスタック上に退避しないので、 複数のタスク/割り込みサービスルーチンから FPSW にアクセスした場合、 FPSW が期待しない値になる可能性があります。 - GDB stub は未実装 gdb によるリモートデバッグには未対応です。 5. 0.0.1 版からの変更点 ----------------------- 前回リリース分(0.0.1 版)からの変更点は以下のとおりです。 - CPU 例外ハンドラの引数に誤ったアドレス値を渡していた不具合の修正 例外発生時に確保されたスタックフレーム(PC + PSW)の 先頭アドレスを渡すように修正しました。 - 微少時間待ちおよび性能評価用システム時刻参照機能を実装 sil_dly_nse() および vxget_tim() を実装しました。 A. RX 向け GNU Toolchain の構築手順 ----------------------------------- A.1 binutils の構築 以下の手順にて RX 向け binutils のビルドおよびインストールを行います。 $ wget ftp://ftp.jaist.ac.jp/pub/GNU/binutils/binutils-2.23.tar.gz $ tar zxvf binutils-2.23.tar.gz $ cd binutils-2.23 $ ./configure --prefix=/usr/local/rx-elf --target=rx-elf $ make # make install ※ # で始まる行は root 権限で行う必要があることを意味します。 上記の場合、rx-elf-* は /usr/local/rx-elf/bin 以下にコピーされるので、 このディレクトリを環境変数 PATH に追加します。 A.2 gcc の構築 gcc は、GMP(GNU Multiple Precision Library)、 MPFR(GNU Multiple Precision Floating-Point Reliably) および MPC のライブラリ群に依存しているので、 これらがインストールされていない場合は、 先にビルドおよびインストールを済ませておきます。 GMP のビルドおよびインストールの手順は以下のとおりです。 $ wget ftp://ftp.jaist.ac.jp/pub/GNU/gmp/gmp-4.3.2.tar.gz $ tar zxvf gmp-4.3.2.tar.gz $ cd gmp-4.3.2 $ ./configure && make # make install $ make check MPFR のビルドおよびインストールの手順は以下のとおりです。 $ wget ftp://ftp.jaist.ac.jp/pub/GNU/mpfr/mpfr-2.4.2.tar.gz $ tar zxvf mpfr-2.4.2.tar.gz $ cd mpfr-2.4.2 $ ./configure --with-gmp=/usr/local && make # make install MPC のビルドおよびインストールの手順は以下のとおりです。 $ wget http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz $ tar zxvf mpc-0.8.2.tar.gz $ cd mpc-0.8.2 $ ./configure --with-gmp=/usr/local && make # make install binutils、GMP、MPFR、MPC が正常にインストールされたら、 gcc のビルドおよびインストールを行います。 $ wget ftp://ftp.jaist.ac.jp/pub/GNU/gcc/gcc-4.7.4/gcc-4.7.4.tar.gz $ tar zxvf gcc-4.7.4.tar.gz $ mkdir gcc-4.7.4.build && cd gcc-4.7.4.build $ ../gcc-4.7.4/configure --prefix=/usr/local/rx-elf --target=rx-elf --with-gmp=/usr/local --disable-libssp --enable-languages=c $ LD_LIBRARY_PATH=/usr/local/lib gmake # make install