2022/8/15
製品
カテゴリー
タグ
9731 Views
ロジック信号をテストポイント情報として認識させオーバーヘッドを抑える
DT+のロジック変換機能を用いて、高速な処理などのテストポイントのオーバーヘッドの影響が大きい処理に極力負荷やタイミングを変えずにトレースする方法について説明します。
Contents
高速テストポイントの限界
DT+Traceではオーバーヘッドをかけたくない処理に対して高速テストポイント変換機能を用意していました。
しかし挿入する箇所によっては
・テストポイントのオーバーヘッドの影響でターゲットが正しく動作しない
・テストポイントの関数呼び出しのオーバーヘッド/スタック使用で現象が再現しない/タイミングが変化してしまう
・DTドライバ内で全体割り込み禁止をかけられないため、割り込み処理にテストポイントを挿入するとトレースできない
このような状況でも使える、よりオーバーヘッドの少ないテストポイントのトレース手段を用意しました。
DBOX+Traceのロジック機能を利用した超・高速テストポイント
ロジック変換テストポイントを利用する場合、DBOX+Traceのロジック取得機能を利用します。仕組みはシンプルで、DBOX+Traceのロジックポートの両エッジをテストレポートに記録し、取得後に各ロジックの通過情報をテストポイントの通過情報に解釈してテストレポートの解析を行います。
GPIO4bitの接続の通常テストポイントのオーバーヘッドと比較したのが以下のグラフになります。
(※パルス以外の形式は最短の場合を想定しておりますので、実際の実装ではもっとオーバヘッドが大きくなります)
ターゲットなどによって差はありますがラピットロジックトレースの場合2回のポート制御だけで済むため、通常のテストポイント処理に比べると非常に小さいオーバーヘッドでトレースできます。
⚠️ 制限/注意事項
・本機能はDBOX+Traceで取得する接続方式のみの対応となります。
・本機能を利用する場合、以下の機能が使用できません。
・[テストレポート収集設定]の[スタート、ストップトリガー]>[ロジックトリガーを使用する]
・[テストレポート収集設定]の[その他]>[コア情報を収集する]
・ロジックウェーブスコープ
・ロジックデータ解析レポート
・ラインモニタ
プロジェクトの設定
ロジック信号の通過情報への関連付け
ロジック信号をどのように解釈するかは「プロジェクトの設定」から行います。アプリケーションより「ファイルメニュー」から「プロジェクトの設定」を選択し、「プロジェクトのプロパティ」の「オプションメニュー」を選択します。
「関連付ける対象」メニューから、「テストポイント」を選択します。
ロジック信号の両エッジを割り当てられたテストポイントの通過として解釈します。最大変換可能なテストポイントは通常テストポイント8つまでとなります。
設定後に「完了」ドロップダウンリストから任意の項目を選択し完了します。
なお、設定を切り替えた際はDTヘッダファイルの再生成が行われ、以下の表示が出力されます。
⚠️注意事項
・本設定を変更前に既に「関数/区間」の関連付けをしたレポートを取得していた場合、そのレポートデータは元の設定では解析不能となります。既に現在の DT+プロジェクトファイルで「テストポイント」の関連付けを利用した解析データを保持したい場合は、プロジェクトをコピーしてデータを分けるかプロジェクトを新規に作成してください。
テスト実行の設定
ロジック信号の通過情報の関連付けの詳細設定はテスト実行メニュー」の「ロジックデータ設定」を選択します。
取得方法のドロップダウンリストから「通過情報の関連付け」を選択します。設定するロジックチャンネルの「ロジックの関連付け」欄をダブルクリックするとドロップダウンリストが表示されます。
ドロップダウンリストから「テストポイント」を選択します。自動的に「テストポイントの選択」ダイアログが表示されますので、そこから任意のテストポイントを選択します。
なお、ここで選択できるのは通常テストポイントのみとなります。例えば変数値出力ポイントを選択した場合、以下のエラーが表示されます。
テストポイントを選択し、OKボタンを操作するとロジックデータ設定のリストに反映されます。
設定すると以下のメッセージが表示されるため、テストポイントの有効無効状態の更新を行ってください。
⚠️制限/注意事項
・取得したテストレポート上のロジックの通過情報を後からテストポイントに変換します。そのためロジック信号に関連付けしたテストポイント設定を変更した場合、過去に取得したテストレポートも現在のロジック信号に関連付けした設定に従って解釈されます。ロジック信号に関連付けしたテストポイント設定に追加する場合は、未使用のChを利用してください。また既存の設定を変更する際に、過去のデータを残したい場合は変更前に現在のプロジェクトを別途コピーするなどの対応を推奨します。
テストレポート収集設定
ロジック信号を通過情報に関連付けして行う場合、「テスト実行メニュー」の「テストレポート収集条件設定」を実行します。「テストレポート収集設定」ダイアログの「その他」から、「ロジックデータを取得する」を有効にします。
DTドライバのカスタマイズ
_TP_BusOutLogic関数の実装
ロジック信号の関連付けを設定したテストポイントは通常のテストポイントとは異なり、以下の関数をコールします。
引数"unsigned int ch"はロジック信号ポートのNo.を指し、実際の値はロジック信号の関連付けに従って「1~8」のいずれかの値を取ります。対応したテストポイントに従って必要なロジックCHに対し、ロジックの反転処理を設定してください。
下記のコードは実装時のサンプルコードです。
void _TP_BusOutLogic(unsigned int ch)
{
/* 各Ch単位でHIだったらLOW、LOWだったらHIになる処理を実装する */
switch ( ch ) {
case 1:
if( GPIOPinRead( GPIO_PORTA_BASE, GPIO_PIN_4 ) ){
GPIOPinWrite( GPIO_PORTA_BASE, GPIO_PIN_4, 0 );
}
else{
GPIOPinWrite( GPIO_PORTA_BASE, GPIO_PIN_4, GPIO_PIN_4 );
}
break;
case 2:
if( GPIOPinRead( GPIO_PORTA_BASE, GPIO_PIN_5 ) ){
GPIOPinWrite( GPIO_PORTA_BASE, GPIO_PIN_5, 0 );
}
else{
GPIOPinWrite( GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_PIN_5 );
}
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
default:
break;
}
}
なお、ロジック信号に関連付けしたテストポイントはDTヘッダ上では上記のように変更されます。
#define __Dt__DtFunc_setBuzzerPitch__DtStep_3 /*FuncOut*/ _TP_BusOut( __DtBaseAddress, 0x000C ); ←通常のテストポイントの場合
#define __Dt__DtFunc_getColorVolume__DtStep_0 /*FuncIn+FuncOut*/ _TP_BusOutLogic( 1 ); ←引数"1"の様に関連付けしたロジックが指定される
ドライバのカスタマイズでご不明な点がございましたら、
サポートまでお問い合わせください。
ターゲットのリビルドと実行
DTドライバの修正とテストポイントの有効無効状態の更新後にソースコードをリビルドし、ターゲットにロードします。DBOX+TraceにLogic Boardを取り付け各関数/区間に割り当てたポートと接続します。
レポートデータ上での表示
ロジックデータをテストポイントと関連付けた場合、テストレポート上では単にテストレポートデータとして取り扱われます。レポート解析時や検索時などの操作も通常のテストポイントと同様に操作可能です。
周期時間のレポート解析結果なども通常のテストポイントと同じように解析可能です。
高速な処理など、テストポイントを挿入するとオーバーヘッドが出てしまう処理に対して利用する事で、オーバーヘッドの影響を出すことなく解析が可能です。
同時に利用できるテストポイントの最大は8つですのでピンポイントな運用になりますが高速テストポイントよりもさらにオーバーヘッドを低減できるため今まで適用できなかった処理のトレースに有効です。
DT+Traceで通過を確認したくてもテストポイントの挿入が難しい処理に適用していただき、よりターゲットに近い環境でデバッグしていただければと思います。