TOPPERS/ASP3カーネル GR-PEACH依存部 ユーザーズマニュアル 対応バージョン: Release 3.1 最終更新: 2016年4月2日 このドキュメントは,TOPPERS/ASP3カーネルのGR-PEACHターゲット依存部を使 用するために必要な事項を説明するものである. ---------------------------------------------------------------------- TOPPERS/ASP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Advanced Standard Profile Kernel Copyright (C) 2008-2016 by Embedded and Real-Time Systems Laboratory Graduate School of Information Science, Nagoya Univ., JAPAN 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 権表示,この利用条件および下記の無保証規定が,そのままの形でソー スコード中に含まれていること. (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 の無保証規定を掲載すること. (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 用できない形で再配布する場合には,次のいずれかの条件を満たすこ と. (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 作権表示,この利用条件および下記の無保証規定を掲載すること. (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 報告すること. (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 免責すること. 本ソフトウェアは,無保証で提供されているものである.上記著作権者お よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ の責任を負わない. $Id: target_user.txt 1145 2017-02-06 04:26:43Z coas-nagasima $ ---------------------------------------------------------------------- ○ライセンスに関する注意事項 GR-PEACHターゲット依存部には,ROM実行のためのブートローダ(sf_boot.c) を含んでいるが,このソフトウェアはルネサスエレクトロニクスが開発したも のであり,ライセンス条件もルネサスエレクトロニクス独自のものである. TOPPERSライセンスでないため注意すること. ○目次 1.GR-PEACHターゲット依存部の概要 GR-PEACHターゲット依存部(GNU開発環境向け)は,TOPPERS/ASP3カーネルを, ルネサス RZ/A1Hを搭載したGR-PEACHボード上で動作させる環境を構築するため のものである. 1.1 対応するターゲットシステムとターゲット略称 GR-PEACHターゲット依存部(GNU開発環境向け)の動作確認は,実機を用いて行っ ている.GR-PEACHに関する情報は,以下のウェブサイトにある. http://gadget.renesas.com/ja/product/peach.html プログラムをフラッシュメモリに書き込んで実行する方法(ROM実行)と,デバッ ガによりRAMにダウンロードして実行する方法(RAM実行)をサポートしている. ターゲット略称等は次の通り. ターゲット略称:gr_peach_gcc システム略称:gr_peach 開発環境略称:gcc 1.2 ターゲット依存部の構成 GR-PEACHターゲット依存部(GNU開発環境向け)は,チップ依存部としてRZ/A1 チップ依存部(GNU開発環境向け)を,コア依存部としてARMコア依存部(GNU開 発環境向け)を使用している. ターゲット依存部(targetディレクトリ)およびターゲット依存部の共通部 (archディレクトリ)のディレクトリは次の通り. target/ gr_peach_gcc/ GR-PEACHターゲット依存部 arch/ arm_gcc/common/ ARMコア依存部 arm_gcc/rza1/ RZ/A1チップ依存部 arm_gcc/doc/ ARM依存部に関するドキュメント gcc/ GCC開発環境依存部 tracelog/ トレースログ記録のサンプルコード 1.3 依存している個別パッケージのバージョン番号 GR-PEACHターゲット依存部(バージョン 3.1.0)の個別パッケージが依存して いる個別パッケージと,動作確認を行ったバージョンは次の通り. 個別パッケージの名称 バージョン 個別パッケージファイル名 ------------------------------------------------------------------ ターゲット非依存部 3.1.0 asp3-3.1.0.tar.gz 1.4 開発環境/デバッグ環境と動作確認条件 開発環境として,以下のURLからプリビルド版をダウンロードすることができる GCC ARM Embeddedを用いている. https://launchpad.net/gcc-arm-embedded/ 動作確認を行ったバージョンは次の通り. gcc: version 4.8.3 20140228 binutils(objcopy,objdump):2.23.2.20140228 デバッグ環境として,オンボードのCMSIS-DAPから,OpenOCDを経由して,GDBを 用いる環境で動作確認を行っている.動作確認を行ったデバッグ環境のバージョ ンは次の通り. gdb: 7.6.0.20140228-cvs openocd: 0.10.0-dev-00287-g85cec24 古いバージョンのOpenOCDでは正しく動作しないことが報告されているため,注 意が必要である. GUIベースの開発環境/デバッグ環境として,Atollic TrueStudioを用いること ができる. 1.5 メモリマップ ROM実行の場合は,以下のメモリマップを想定している. 0x18000000 - 0x1fffffff:シリアルフラッシュメモリ(128MB) 0x20000000 - 0x209fffff:内蔵SRAM(10MB) 0x3fe00000 - 0x3fffffff:I/O領域(2MB),予約領域を含む 0xe8000000 - 0xffffffff:I/O領域(384MB),予約領域を含む 内蔵SRAM領域の先頭の16KBは,ブートローダを置くために使用する. RAM実行の場合は,以下のメモリマップを想定している. 0x20000000 - 0x200fffff:内蔵SRAM(1MB)… ROM領域として使用 0x20100000 - 0x209fffff:内蔵SRAM(9MB) 0x3fe00000 - 0x3fffffff:I/O領域(2MB),予約領域を含む 0xe8000000 - 0xffffffff:I/O領域(384MB),予約領域を含む プログラムおよび定数データ領域は,内蔵SRAM領域の先頭の1MBに置く想定とし て,(定数でない)データ領域は,その後に配置する. メモリマップを変更する場合には,target_kernel_impl.cとgr_peach_rom.ld (または,pr_peach_ram.kd)を修正する必要がある. 2.ターゲット定義事項の規定 GR-PEACHターゲット依存部は,ARMコア依存部とRZ/A1チップ依存部を用いて実 装されている.ARMコア依存部およびRZ/A1チップ依存部におけるターゲット定 義事項の規定については,「ARM依存部 ユーザーズマニュアル」を参照するこ と.それらの規定以外に,GR-PEACHターゲット定義の事項はない. 3.ドライバ関連の情報 3.1 タイマドライバ 高分解能タイマは,RZ/A1Hが持つ2チャンネルのOSタイマの内の1つを用いて実 現している.また,もう1つのOSタイマを用いて,オーバランタイマを実現して いる. 3.2 シリアルインタフェースドライバ シリアルインタフェースドライバは,RZ/A1Hが持つ8ポートのFIFO内蔵シリアル コミュニケーションインタフェースをサポートしている. USB経由でホストと接続できるポートは,SCIFのチャネル2(チャネル番号は0か ら始まるので,ポート3に相当)である.一方,sample1.cdlでは,ログタスク およびサンプルプログラムが使うポートがポート1となっているため,ポート1 とポート3を入れ換えている.すなわち,シリアルインタフェースドライバのポー ト1がSCIFのチャネル2,ポート2がチャネル1,ポート3がチャネル0,ポート4が チャネル3,…に対応している. ボーレート:115200bps データ:8ビット パリティ:なし ストップビット:1ビット フロー制御:なし この対応を変更するには,tSIOPortGRPeach.cdlを修正する必要がある. 3.3 システムログの低レベル出力 システムログの低レベル出力は,シリアルインタフェースドライバのポート1と 同じチャネル(すなわち,SCIFのチャネル2)に対して,ポーリングにより文字 を出力する方法で実現している. 用いるポートを変更する場合には,target.cdlを修正する必要がある. 4.システム構築手順と実行手順 GR-PEACH用のASP3カーネルおよびサンプルプログラムを構築する手順は,基本 的には,「TOPPERS/ASP3カーネル ユーザーズマニュアル」の「3.クイックス タートガイド」の章に記述されている通りであるが,ROM実行かRAM実行かによっ て,構築手順と実行手順に違いがある. 4.1 ROM実行の場合の構築手順と実行手順 カーネルの構築前に,GR-PEACHターゲット依存部のMakefile.targetを編集し, 以下の行を有効にする(コメントアウトする). EXECUTE_ON = ROM ROM実行する場合には,バイナリ形式が必要であるため,サンプルプログラムの 構築後に,以下のコマンドを実行する. % make asp.bin GR-PEACHのUSBポートとPCを接続すると,GR-PEACHがドライブとして認識される ため,そのドライブにasp.binを書き込むことで,GR-PEACHのフラッシュメモリ にプログラムが書き込まれる. 書き込み後,リセットボタンを押すことにより,プログラムの実行が開始され る. 4.2 RAM実行の場合の構築手順と実行手順 カーネルの構築前に,GR-PEACHターゲット依存部のMakefile.targetを編集し, 以下の行を有効にする(コメントアウトする). EXECUTE_ON = RAM 以下,ASP3カーネルを置いたディレクトリを,OpenOCDをインストール したディレクトリをと書く.openocdの実行プログラムは,実行 パスに指定されたディレクトリにコピーまたはシンボリックリンクしておく. % cd /usr/local/bin % ln -s /bin/openocd . まず,GR-PEACHターゲット依存部のディレクトリにあるrenesas_rza1h_swd.cfg を,/scripts/targetsにコピーしておく. 次に,GR-PEACHのUSBポートとPCを接続し,以下のコマンドでopenocdを起動する. % setenv OPENOCD_SCRIPTS /scripts % openocd -f interface/cmsis-dap.cfg -f target/renesas_rza1h_swd.cfg 以下のコマンドでgdbを起動し,aspをロードした後,continueコマンドでプロ グラムの実行が開始される. % arm-none-eabi-gdb asp -x /target/gr_peach_gcc/gdb_ram.ini (gdb) continue /target/gr_peach_gcc/gdb_ram.iniを,カレントディレクトリの .gdbinitにコピーしておくことで,gdbの起動毎にスクリプトを指定する必要が なくなる. 4.3 ドライバのインストール GR-PEACHのUSBポートとPCを接続しても,GR-PEACHがシリアルポートとして認識 されない場合には,USBシリアルドライバをインストールする必要がある. Windows向けのドライバは,以下のURLにある. https://developer.mbed.org/handbook/Windows-serial-configuration MacOS X用のUSBシリアルドライバは,例えば,以下のURLにあるものを使用する ことができる. http://www.ftdichip.com/Drivers/VCP.htm 5.リファレンス 5.1 ディレクトリ構成・ファイル構成 target/gr_peach_gcc/ E_PACKAGE 簡易パッケージのファイルリスト MANIFEST 個別パッケージのファイルリスト Makefile.target Makefileのターゲット依存部 gdb_ram.ini GDBの起動スクリプト(RAM実行用) gdb_rom.ini GDBの起動スクリプト(ROM実行用) gr_peach.h ターゲットのハードウェア資源の定義 gr_peach_ram.ld 標準のリンカスクリプト(RAM実行用) gr_peach_rom.ld 標準のリンカスクリプト(ROM実行用) renesas_rza1h_swd.cfg OpenOCDの起動スクリプト sf_boot.c ブートローダ(ROM実行用) tPutLogGRPeach.c システムログの低レベル出力 tPutLogGRPeach.cdl システムログの低レベル出力のコンポーネント記述 tSIOPortGRPeach.cdl シリアルインタフェースドライバのターゲット 依存部(GR-PEACH用)のコンポーネント記述 tSIOPortGRPeachMain_inline.h シリアルインタフェースドライバの ターゲット依存部(GR-PEACH用) target.cdl コンポーネント記述ファイルのターゲット依存部 target_cfg1_out.h cfg1_out.cのリンクに必要なスタブの定義 target_kernel.cfg カーネル実装のコンフィギュレーションファイル target_kernel.h kernel.hのターゲット依存部 target_kernel.trb kernel.trbのターゲット依存部 target_check.trb kernel_check.trbのターゲット依存部 target_kernel_impl.c カーネル実装のターゲット依存部 target_kernel_impl.h カーネル実装のターゲット依存部に関する定義 target_rename.def ターゲット依存部の内部識別名のリネーム定義 target_rename.h ターゲット依存部の内部識別名のリネーム target_sil.h sil.hのターゲット依存部 target_stddef.h t_stddef.hのターゲット依存部 target_support.S カーネル実装のターゲット依存部(アセンブ リ言語で記述した部分) target_syssvc.h システムサービスのターゲット依存定義 target_test.h テストプログラムのターゲット依存定義 target_timer.cfg タイマドライバのコンフィギュレーションファイル target_timer.h タイマドライバを使用するための定義 target_unrename.h ターゲット依存部の内部識別名のリネーム解除 target_user.txt ターゲット依存部のユーザーズマニュアル 5.2 バージョン履歴 2016年5月15日 Release 3.1.0 最初の一般公開 以上