TOPPERS/JSP for GR-SAKURA 2015/JUL/6 0.0.1 版 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 が期待しない値になる可能性があります。 - 微少時間待ちおよび性能評価用システム時刻参照機能は未実装 ビルドした JSP カーネルに sil_dly_nse() および vxget_tim() は含まれず、 アプリケーションからこの関数を呼び出すことはできません。 - GDB stub は未実装 現時点では gdb によるリモートデバッグには未対応です。 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