我有一个带有英飞凌控制器的ECU,其中有一些xyz程序闪烁。现在可以使用Lauterbach硬件在Trace32调试器中实时查看程序变量的值。现在我必须在报告中手动记下所有值。我想使用Trace32 API使用C编程来访问这些值,以便在excel或notepad中自动写入这些值。我尝试了他们的远程控制和JTAG访问文档的API,但做不了多少。有人可以指导吗?我甚至无法配置Trace32软件,甚至没有向Lauterbach发送一些命令。我的主要目的是使用Trace32 API在C程序中访问Trace32 GUI中可以看到的值。
答案 0 :(得分:3)
首先启用TRACE32的远程API端口。确保文件c:\ t32 \ config.t32包含以下行(两行之前和之后必须有空行!):
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和套接字库链接。例如。使用这个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 $@ $<
然而,使用PRACTICE脚本(* .cmm)执行任务可能会更容易和灵活。
E.g。像这样写一个脚本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
或者通过远程API执行此脚本,例如使用t32rem.exe:
C:\t32\bin\windows\t32rem.exe localhost port=20000 "DO myScript.cmm"