Trace32 Lauterbach APIs for C program access to the application variables

被刻印的时光 ゝ 提交于 2019-12-06 15:40:05

First enable the remote API port of TRACE32. Ensure that file c:\t32\config.t32 contains the following lines (there must be a blank line before and after the two lines!):

RCL=NETASSIST
PORT=20000

To read a value of a variable myVariable via the remote API and store it to a log file write a C application like that:

#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;
}

There are also other ways to get memory content via the remote API, but this is the easiest way in my opinion.

Now compile this code and link it with hremote.c, hlinknet.c and the socket library. E.g. with this makefile:

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 $@  $<

However maybe it is a lot more easy and flexible to do you task with a PRACTICE script (*.cmm) instead.

E.g. write a script myScript.cmm like that:

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

Execute this script in the command line of the TRACE32 GUI with the command

DO myScript.cmm 

Or execute this script via the remote API, e.g. with t32rem.exe:

C:\t32\bin\windows\t32rem.exe localhost port=20000 "DO myScript.cmm"
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!