第15章 リアルタイムOSタスク・アナライザ
本章では,CubeSuite+のリアルタイムOSタスク・アナライザを使用するための手順について説明します。リアルタイムOSタスク・アナライザの機能および操作方法は,「RI600V4 解析編」を参照してください。
- ソフトウェア・トレース・モードでトレース・チャートを取得
本モードでは,トレース情報はユーザ・メモリに確保したトレース・バッファに収集されます。バッファのサイズは,[タスク・アナライザ]タブで指定します。トレース・バッファ・サイズの見積もりについては,「15.4 トレース・バッファのサイズ(ソフトウェア・トレース・モードでトレース・チャートを取得)」を参照してください。
本モードを使用するには,ユーザ・オウン・コーディング部の実装とシステム・コンフィギュレーション・ファイルの設定が必要です。「15.3.1 ソフトウェア・トレース・モードでトレース・チャートを取得」を参照してください。
本モードでは,トレース情報はユーザ・メモリに確保したトレース・バッファに収集されます。バッファのサイズは,[タスク・アナライザ]タブで指定します。トレース・バッファ・サイズの見積もりについては,「15.4 トレース・バッファのサイズ(ソフトウェア・トレース・モードでトレース・チャートを取得)」を参照してください。
本モードを使用するには,ユーザ・オウン・コーディング部の実装とシステム・コンフィギュレーション・ファイルの設定が必要です。「15.3.1 ソフトウェア・トレース・モードでトレース・チャートを取得」を参照してください。
- ソフトウェア・トレース・モードで長時間統計を取得
本モードでは,トレース情報はユーザ・メモリに確保したRI600V4の変数に収集されます。この変数のサイズは,概ね2Kバイト程度です。詳細は,「19.20.1 BRI_RAMセクション」を参照してください。
本モードを使用するには,ユーザ・オウン・コーディング部の実装とシステム・コンフィギュレーション・ファイルの設定が必要です。「15.3.2 ソフトウェア・トレース・モードで長時間統計を取得」を参照してください。
本モードでは,トレース情報はユーザ・メモリに確保したRI600V4の変数に収集されます。この変数のサイズは,概ね2Kバイト程度です。詳細は,「19.20.1 BRI_RAMセクション」を参照してください。
本モードを使用するには,ユーザ・オウン・コーディング部の実装とシステム・コンフィギュレーション・ファイルの設定が必要です。「15.3.2 ソフトウェア・トレース・モードで長時間統計を取得」を参照してください。
備考1 「ハードウェア・トレース・モードでトレース・チャートを取得」では,計測可能最大時間は,エミュレータやシミュレータのトレース・メモリ・サイズに依存します。また,時間精度はエミュレータやシミュレータの仕様に依存します。
備考2 「ソフトウェア・トレース・モードでトレース・チャートを取得」では計測可能最大時間はトレース・バッファのサイズに依存します。また,時間精度については,「15.3.1 ソフトウェア・トレース・モードでトレース・チャートを取得」を参照してください。
また,リアルタイムOSタスク・アナライザを使用する場合は,使用しない場合と比較して,表15-1に示すようにターゲット・システムに対する影響があります。なお,表15-1に記載の処理時間は100MHz動作時の概値です。
本モードでは,RI600V4はタイム・スタンプをユーザ・オウン・コーディング部から取得します。タイム・スタンプを生成するために,通常はハードウェア・タイマを使用します。ハードウェア・タイマは,カウンタ長が16ビット以上である必要があります。なお,RXファミリMCUに標準的に搭載されているCMT(コンペア・マッチ・タイマ)は,この要件を満たしています。
以降で,実装が必要な関数・変数の仕様を説明します。なお,各種関数はRXファミリ C/C++コンパイラのABI(Application Binary Interface)には従っていないため,アセンブリ言語で実装する必要があります。本項では,関数・変数名も,アセンブリ言語レベルで表記します。
__RIUSR_trcSW_read_cnt(タイム・スタンプ取得関数)が返す時間の単位を,ナノ秒単位の32ビット符号なし整数で,定数として定義します。
通常は,ハードウェア・タイマ・カウンタの1カウント時間を設定してください。
以下に,CMTを使用する場合の代表的な設定を示します。
通常は,ハードウェア・タイマ・カウンタの1カウント時間を設定してください。
以下に,CMTを使用する場合の代表的な設定を示します。
__RIUSR_trcSW_init_tmr(初期化関数)が呼び出された時点からの経過時間を,__RIUSR_trcSW_base_time(時間精度)の単位で,かつ0~0x7FFFFFFFの範囲で返します。
|
||
また,システム・コンフィギュレーション・ファイルで,以下のように本ハンドラを定義してください。ここでは,ベクタ番号が29,ハンドラの関数名がアセンブリ言語レベルで__RIUSR_trcSW_interruptの場合の例を示します。
interrupt_vector[29] { entry_address = _RIUSR_trcSW_interrupt(); os_int = NO; }; |
||
本モードでは,RI600V4はタイム・スタンプをユーザ・オウン・コーディング部から取得します。タイム・スタンプを生成するために,通常はハードウェア・タイマを使用します。ハードウェア・タイマは,カウンタ長が16ビット以上で,かつタイマ・クロックを65536回カウントしたときに割り込み発生可能である必要があります。なお,RXファミリに標準的に搭載されているCMTは,この要件を満たしています。
以降で,実装が必要な関数・変数の仕様を説明します。なお,各種関数はRXファミリ C/C++コンパイラのABI(Application Binary Interface)には従っていないため,アセンブリ言語で実装する必要があります。関数・変数名も,アセンブリ言語レベルで表記します。
__RIUSR_trcLONG_read_cnt(タイム・スタンプ取得関数)が返す時間を,ナノ秒単位の32ビット符号なし整数で,定数として定義します。
通常は,ハードウェア・タイマ・カウンタの1カウント時間を設定してください。
以下に,CMTを使用する場合の代表的な設定を示します。
通常は,ハードウェア・タイマ・カウンタの1カウント時間を設定してください。
以下に,CMTを使用する場合の代表的な設定を示します。
このレベル以上の割り込み優先レベルの割り込みハンドラについては,時間は計測されません。そのハンドラの処理時間は,その割り込みが発生した時点の処理プログラム(タスク,別の割り込みハンドラ,カーネルのアイドリング)の処理時間に計上されます。
タイマ・クロックを65536回カウントした時に__RIUSR_trcLONG_timer_lvl(割り込み優先レベル)で定義した割り込み優先レベルの割り込みが発生するように,ハードウェア・タイマを初期化します。
|
||