![見出し画像](https://assets.st-note.com/production/uploads/images/84283804/rectangle_large_type_2_64681bef01321ffc34a7e1ea0710bc2e.jpeg?width=1200)
【TRACE32 Tips】ロガートレースの利用
ハードウェアトレース機能が搭載されていないターゲットで、TRACE32 を利用してトレースを行う方法を解説します。
ロガー(LOGGER)トレースについて
ロガートレースは、ハードウェアベースのトレース機能が利用できない環境における利用を想定しています。
ロガートレースは、TRACE32 のトレース形式を利用して、ターゲットメモリ(RAM)に特定のトレース情報を書き込む、ソフトウェアトレースメソッドです。(以下、ターゲットメモリ上のデータブロックイメージ)
![](https://assets.st-note.com/img/1663302842560-xAhSFjiyYs.jpg?width=1200)
ターゲットメモリ上に保存したデータを、TRACE32 が取り出し、トレースデータとして利用します。そのため、ターゲットアプリケーションへの変更(インスツルメント)が必要になります。
ロガートレース用ソース/ヘッダーファイル
TRACE32 ソフトウェアをインストールしたフォルダ配下に、ロガートレースのコンパイル、リンクに必要なヘッダーファイル、ソースファイルがあります。
以下は、TRACE32 を C:\T32 にインストールした場合のフォルダ名です。C:\T32\demo\etc\logger
C/C++ 用のソースとヘッダファイルが用意されています。
ヘッダーファイル
logger.h または、logger.hpp
ソースファイル
logger.c または、logger.cpp
ソースファイルは、コンパイルし、測定対象のプログラムとリンクする必要があります。
測定対象コードへのインスツルメント
#include <logger.h> // ロガートレス用ヘッダ
int main(void)
{
int j;
short int inc, sign;
char *p;
T32_LoggerInit(); // ロガートレース初期化
do {
mcount++;
T32_LoggerData(T32_DATA_WRITE|T32_LONG, &mcount, mcount); // トレースコード(1)
inc = (4 * 15000) / period;
sign = ( (mcount % period) >= period/2 ) ? -1 : +1;
plot1 = plot1 + sign * inc;
T32_LoggerData(T32_DATA_WRITE|T32_LONG, & plot1, plot1); // トレースコード(2)
func2();
func2a();
func2b();
func2c();
func2d();
上記のコード内では、ロガートレース用にコードを3か所埋め込んでいます。
ロガートレース用ヘッダ
ロガートレースに必要なヘッダのインクルードです。
ロガートレース初期化
ロガートレースを初期化します。
トレースコード(1)
変数 mcount の値をトレースします。
トレースコード(2)
変数 plot1 の値をトレースします。
TRACE32 設定
TRACE32 へ行う設定です。
TRACE32 のメインメニューの [トレース(T)] から、[設定(C).…]を選択して Trace 設定ダイアログを開きます。
![](https://assets.st-note.com/img/1658278928430-b92egmGAIN.jpg)
「METHOD」より、「LOGGER」を選択します。
ロガートレース紹介動画
以下 は、実際にロガートレースを動作させたデモ動画です。
TRACE32 ロガートレース 基本
ロガートレースの基本的な設定方法、簡単な動作のデモです。
TRACE32 ロガートレース OS プロファイリング
ロガートレースのを利用し、Tricore™ AURIX™ 上で RTOS(Erika Enterprise)のタスクを認識させて計測、表示させる動作のデモです。
関連ページ、ドキュメント
以下のフォルダにロガー機能を説明したドキュメントがあります。併せてご参照ください。
<TRACE32インストールフォルダ>\pdf\app_logger.pdf
上記ドキュメントは、以下のURL からも参照可能です。
https://www.lauterbach.com/pdf/app_logger.pdf