TOPPERS/ASPカーネル CT11MPcore依存部 ユーザーズマニュアル 対応バージョン: Release 3.0.0 最終更新: 2015年8月9日 このドキュメントは,TOPPERS/ASPカーネルのCT11MPcoreターゲット依存部を使 用するために必要な事項を説明するものである. ---------------------------------------------------------------------- TOPPERS/ASP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Advanced Standard Profile Kernel Copyright (C) 2008-2015 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 437 2015-08-09 00:36:08Z 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/ASPカーネルを,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上でASPカーネルを実行するためのコマンドは次の通り. 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チップ依存部 gcc/ GCC開発環境依存部 logtrace/ トレースログ記録のサンプルコード 1.3 依存している個別パッケージのバージョン番号 Mac OS Xターゲット依存部(バージョン 3.B.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チップ依存部と異なる, ないしは,それらで規定されていない事項について説明する. 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つを用いるかは,コ ア毎に異なる)を用いて,シリアルI/Oポートを1つのみサポートしている. 用いるUARTを変更する場合には,target_syssvc.hを修正する必要がある. 3.3 システムログの低レベル出力 システムログの低レベル出力は,シリアルインタフェースドライバが用いてい るのと同じUARTを用い,ポーリングにより文字を出力する方法で実現している. 用いるUARTを変更する場合には,target_kernel_impl.hを修正する必要がある. 4.システム構築手順と実行手順 4.1 システム構築 CT11MPcore向けの構築する手順は,「TOPPERS/ASPカーネル ユーザーズマニュ アル」の「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/macosx_xcode/ E_PACKAGE 簡易パッケージのファイルリスト MANIFEST 個別パッケージのファイルリスト Makefile.target Makefileのターゲット依存部 ct11mpcore.h ターゲットのハードウェア資源の定義 ct11mpcore.ld 標準のリンカスクリプト target.tf kernel.tfのターゲット依存部 target_cfg1_out.h cfg1_out.cのリンクに必要なスタブの定義 target_check.tf kernel_check.tfのターゲット依存部 target_kernel.h kernel.hのターゲット依存部 target_kernel_impl.c カーネル実装のターゲット依存部関連の定義 target_kernel_impl.h カーネル実装のターゲット依存部 target_rename.def ターゲット依存部の内部識別名のリネーム定義 target_rename.h ターゲット依存部の内部識別名のリネーム target_serial.c serial.cのターゲット依存部 target_serial.cfg serial.cfgのターゲット依存部 target_serial.h serial.hのターゲット依存部 target_sil.h sil.hのターゲット依存部 target_stddef.h t_stddef.hのターゲット依存部 target_syssvc.h システムサービスのターゲット依存定義 target_test.h テストプログラムのターゲット依存定義 target_timer.cfg タイマドライバのコンフィギュレーションファイル target_timer.h タイマドライバを使用するための定義 target_unrename.h ターゲット依存部の内部識別名のリネーム解除 target_user.txt ターゲット依存部のユーザーズマニュアル 6.2 バージョン履歴 2015年8月5日 Release 3.B.0 最初のリリース 2015年 月 日 Release 3.0.0 最初の一般公開 以上