1

インフィニオン コントローラーを搭載した ECU があり、いくつかの xyz プログラムがフラッシュされています。現在、プログラムの変数の値は、Lauterbach ハードウェアを備えた Trace32 デバッガーでリアルタイムで確認できます。ここで、すべての値を手動でレポートに書き留める必要があります。C プログラミングを使用して Trace32 API を使用してこれらの値にアクセスし、それらの値を Excel またはメモ帳に自動的に書き込みたいと考えています。API for Remote Control と JTAG Access ドキュメントを試しましたが、あまり効果がありませんでした。誰でもご案内いただけますか?Trace32 ソフトウェアを構成することさえできず、Lauterbach にコマンドを送信することさえできませんでした。私の主な目的は、Trace32 GUI で表示できる値に、Trace32 API を使用して C プログラムでアクセスできるようにすることです。

4

1 に答える 1

3

最初に TRACE32 のリモート API ポートを有効にします。ファイル c:\t32\config.t32 に次の行が含まれていることを確認します (2 行の前後に空白行が必要です!):

RCL=NETASSIST
PORT=20000

リモート API を介して変数myVariableの値を読み取り、それをログ ファイルに保存するには、次のような C アプリケーションを記述します。

#include "t32.h"
#include <stdio.h>

int main(int argc, char **argp) {
    uint32_t result;
    FILE    *fp;

    /* Connect to TRACE32 */
    T32_Config("NODE=", "localhost");
    T32_Config("PORT=", "20000");

    if ( T32_Init() != T32_OK )
        return 2;
    T32_Attach(T32_DEV_ICD);

    /* Read value of variable myVariable */
    if ( T32_Cmd("Eval Var.VALUE(myVariable)") != T32_OK ) {
        T32_Exit();
        return 3;
    }
    T32_EvalGet ( &result ); /* get data from previous Eval command */

    /* add data to logfile */
    fp = fopen ( "myLogfile.txt", "a" );
    if ( fp ) {
        fprintf( fp, "0x%08X\n", result);
        fclose( fp );
    }

    T32_Exit();
    puts("done");
    return 0;
}

リモート API を介してメモリ コンテンツを取得する方法は他にもありますが、これが最も簡単な方法だと思います。

このコードをコンパイルし、hremote.c、hlinknet.c、およびソケット ライブラリとリンクします。たとえば、次のメイクファイルを使用します。

VPATH := . /cygdrive/c/t32/demo/api/src
CC    := i686-pc-mingw32-gcc.exe

myProg.exe : myProg.o hremote.o hlinknet.o
    $(CC) -o $@  $^ -lws2_32

%.o : %.c t32.h
    $(CC) -c $(addprefix -I,$(VPATH)) -D T32HOST_WIN -o $@  $<

ただし、代わりに PRACTICE スクリプト (*.cmm) を使用してタスクを実行する方が、はるかに簡単で柔軟な場合があります。

たとえば、スクリプト myScript.cmm を次のように記述します。

OPEN #1 myLogfile.txt /APPEND                      // Opens file myLogfile.txt for adding data
WRITE #1 "0x"+FORMAT.HEX(8,Var.VALUE(myVariable))  // Write value of myVariable to logfile 
CLOSE #1                                           // Close logfile

コマンドを使用して、TRACE32 GUI のコマンド ラインでこのスクリプトを実行します。

DO myScript.cmm 

または、たとえば t32rem.exe を使用して、リモート API 経由でこのスクリプトを実行します。

C:\t32\bin\windows\t32rem.exe localhost port=20000 "DO myScript.cmm"
于 2015-04-14T20:17:07.737 に答える