TOPPERS/ASP3カーネル CT11MPCore依存部 ユーザーズマニュアル 対応バージョン: Release 3.1 最終更新: 2016年1月30日 このドキュメントは,TOPPERS/ASP3カーネルのCT11MPCoreターゲット依存部を 使用するために必要な事項を説明するものである. ---------------------------------------------------------------------- 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 752 2016-05-14 15:06:22Z ertl-hiro $ ---------------------------------------------------------------------- ○目次 1.CT11MPCoreターゲット依存部の概要 1.1 対応するターゲットシステムとターゲット略称 1.2 ターゲット依存部の構成 1.3 依存している個別パッケージのバージョン番号 1.4 開発環境と動作確認条件 1.5 メモリマップ 2.ターゲット定義事項の規定 2.1 割込み優先度と割込み番号 2.2 オーバランハンドラ機能拡張のサポートに関する規定 3.ドライバ関連の情報 3.1 タイマドライバ 3.2 シリアルインタフェースドライバ 3.3 システムログの低レベル出力 4.システム構築手順と実行手順 4.1 システム構築 4.2 デバッガの使用方法 5.リファレンス 5.1 ディレクトリ構成・ファイル構成 5.2 バージョン履歴 1.CT11MPCoreターゲット依存部の概要 CT11MPCoreターゲット依存部は,TOPPERS/ASP3カーネルを,ARM11 MPCoreのテ ストチップを搭載したCoreTile(CT11MPCore)を,RealView Emulation Baseboard上に実装したターゲットシステムで動作させる環境を構築するための ものである. また,実ターゲットシステムに代えて,Qemuを用いて実行することもできる. Qemuで実行する場合には,コンパイルオプションに「-DTOPPERS_USE_QEMU」を 追加する必要がある. 1.1 対応するターゲットシステムとターゲット略称 CT11MPCoreターゲット依存部の動作確認は,Qemuを用いて行っている.動作確 認を行ったQemuのバージョンは次の通り. qemu-system-arm version 2.1.0 Qemu上でASP3カーネルを実行するためのコマンドは次の通り. qemu-system-arm -M realview-eb-mpcore -semihosting -m 128M -smp 1 \ -serial stdio -kernel asp また,ターゲット略称等は次の通り. ターゲット略称:ct11mpcore_gcc システム略称:ct11mpcore 開発環境略称:gcc 1.2 ターゲット依存部の構成 CT11MPCoreターゲット依存部の使用するターゲット依存部(targetディレクト リ)およびターゲット依存部の共通部(archディレクトリ)のディレクトリは 次の通り. target/ ct11mpcore_gcc/ CT11MPCoreターゲット依存部 arch/ arm_gcc/common/ ARMコア依存部 arm_gcc/mpcore/ MPCoreチップ依存部 arm_gcc/doc/ ARM依存部に関するドキュメント gcc/ GCC開発環境依存部 tracelog/ トレースログ記録のサンプルコード 1.3 依存している個別パッケージのバージョン番号 CT11MPCoreターゲット依存部(バージョン 3.0.0)の個別パッケージが依存し ている個別パッケージと,動作確認を行ったバージョンは次の通り. 個別パッケージの名称 バージョン 個別パッケージファイル名 ------------------------------------------------------------------ ターゲット非依存部 3.0.0 asp3-3.0.0.tar.gz 1.4 開発環境と動作確認条件 開発環境として,以下のURLからプリビルド版をダウンロードすることができる GCC ARM Embeddedを用いる. https://launchpad.net/gcc-arm-embedded/ 動作確認を行ったバージョンは次の通り. gcc: version 4.8.3 20140228 gdb: 7.6.0.20140228-cvs binutils(objcopy,objdump):2.23.2.20140228 1.5 メモリマップ 以下のメモリマップを想定している(Qemuの場合). 0x00000000 - 0x00100000:ベクター領域(1MB) 0x00100000 - 0x0FFFFFFF:DRAM(255MB) 0x10000000 - 0x100FFFFF:Emulation Baseboard上のリソース(1MB) 0x10100000 - 0x101FFFFF:Private Memory Region(1MB) 0x48000000 - 0x4BFFFFFF:SRAM(4MB) MPCoreのPrivate Memory Regionの先頭番地は,コア外部から設定可能となって いる.QEMUでは,この領域の先頭番地は,0x10100000に設定されている.実際 のターゲットシステムでは,ボード上で設定できるようになっており,デフォ ルトでは0x1f000000に設定されている. メモリマップを変更する場合には,Makefile.targetとtarget_kernel_impl.cを 修正する必要がある. 2.ターゲット定義事項の規定 CT11MPCoreターゲット依存部は,ARMコア依存部とMPCoreチップ依存部を用いて 実装されている.ARMコア依存部およびMPCoreチップ依存部におけるターゲット 定義事項の規定については,「ARM依存部 ユーザーズマニュアル」を参照する こと. 以下では,ARMコア依存部およびMPCoreチップ依存部と異なる,ないしは,それ らで規定されていない事項について説明する. 2.1 割込み優先度と割込み番号 CT11MPCoreの割込みコントローラ(Distributed Interrupt Controller)は, 16レベルの割込み優先度をサポートしている.そのため,割込み優先度の最小 値(最高値)は-15,割込み優先度の最大値(最低値)は-1である. CT11MPCoreの割込みコントローラがサポートする割込みと,その割込み番号は 次の通り. プロセッサ間割込み 0〜15 プライベート割込み 16〜31 プライベートタイマ 29 プライベートウォッチドッグ 30 レガシーnIRQ 31 ハードウェア割込み 32〜63 チップ外からの割込み 32〜47 ACCI 32 EB_TIMER0/1 33 EB_TIMER2/3 34 USB 35 EB_UART0 36 EB_UART1 37 …中略… EB_GIC1_nIRQ 42 EB_GIC2_nIRQ 43 EB_GIC1_nFIQ 44 EB_GIC2_nFIQ 45 …中略… チップ内の割込み 48〜63 2.2 オーバランハンドラ機能拡張のサポートに関する規定 オーバランハンドラ機能拡張パッケージをサポートしている(ただし,コア2と コア3に対してサポートしていない). 3.ドライバ関連の情報 3.1 タイマドライバ 高分解能タイマは,MPCoreがコア毎に持つプライベートタイマとプライベート ウォッチドッグを使用して実現している.具体的には,ウォッチドッグを現在 時刻の管理のために用い,タイマを相対時間割込みの発生のために用いている. そのため,これらのタイマを別の目的で使用することはできない. また,オーバランハンドラ機能をサポートする場合には,RealView Emulation Baseboard上のFPGAに実装されているタイマの内の1つ(どの1つを用いるかは, コア毎に異なる)を用いている. 3.2 シリアルインタフェースドライバ シリアルインタフェースドライバでは,RealView Emulation Baseboard上の FPGAに実装されている4チャンネルのUARTの内の1つ(どの1つを用いるかは,コ ア毎に異なる)を用いて,SIOポートを1つのみサポートしている. 用いるSIOポートを変更する場合には,tSIOPortCT11MPCore.cdlを修正する必要 がある. 3.3 システムログの低レベル出力 システムログの低レベル出力は,シリアルインタフェースドライバが用いてい るのと同じUARTを用い,ポーリングにより文字を出力する方法で実現している. 用いるSIOポートを変更する場合には,target.cdlを修正する必要がある. 4.システム構築手順と実行手順 4.1 システム構築 CT11MPCore用のASP3カーネルを構築する手順は,「TOPPERS/ASP3カーネル ユー ザーズマニュアル」の「3.クイックスタートガイド」の章に記述されている 通りである.Qemuで実行する場合には,コンパイルオプションに 「-DTOPPERS_USE_QEMU」を追加すること. 4.2 Qemuで実行する場合のデバッガの使用方法 Qemuで実行する場合,GDBデバッガを用いて実行することができる.まず, Qemuを実行する際に,オプション「-S -gdb tcp::1234」を付ける.具体的には, 次のコマンドによる実行する. qemu-system-arm -M realview-eb-mpcore -semihosting -m 128M -smp 1 \ -serial stdio -S -gdb tcp::1234 -kernel asp Qemuを実行したのとは別のウィンドウで,GDBを起動する. % arm-none-eabi-gdb asp (gdb) target remote localhost:1234 (gdb) ここで,「target remote localhost:1234」は,TCPを用いてQemuとGDBを接続 するためのコマンドである.このコマンドを,.gdbinitに設定しておくと便利 である. また,条件付きブレークポイントを使うと,特定のタスクが特定のアドレスを 実行した場合にのみ実行を停止させることができる.ただし,ブレーク条件を 記述するには,カーネルの内部構造を知っていることが必要である. 5.リファレンス 5.1 ディレクトリ構成・ファイル構成 target/ct11mpcore_gcc/ E_PACKAGE 簡易パッケージのファイルリスト MANIFEST 個別パッケージのファイルリスト Makefile.target Makefileのターゲット依存部 ct11mpcore.h ターゲットのハードウェア資源の定義 ct11mpcore.ld 標準のリンカスクリプト tPutLogCT11MPCore.c システムログの低レベル出力 tPutLogCT11MPCore.cdl システムログの低レベル出力のコンポーネント記述 tSIOPortCT11MPCore.cdl シリアルインタフェースドライバのターゲット 依存部(CT11MPCore用)のコンポーネント記述 tSIOPortCT11MPCoreMain_inline.h シリアルインタフェースドライバ のターゲット依存部(CT11MPCore用) 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_syssvc.h システムサービスのターゲット依存定義 target_test.h テストプログラムのターゲット依存定義 target_timer.c タイマドライバ target_timer.cfg タイマドライバのコンフィギュレーションファイル target_timer.h タイマドライバを使用するための定義 target_unrename.h ターゲット依存部の内部識別名のリネーム解除 target_user.txt ターゲット依存部のユーザーズマニュアル 5.2 バージョン履歴 2015年8月5日 Release 3.B.0 最初のリリース 2016年2月8日 Release 3.0.0 最初の一般公開 2016年5月15日 Release 3.1.0 以上