2015-01-21 5 views
1

У меня есть ECU с контроллером Infineon, и в нем вспыхнула какая-то программа xyz. Теперь значения переменных программы можно увидеть в реальном времени в отладчике Trace32 с оборудованием Lauterbach. Теперь я должен записать все значения вручную в отчете. Я хочу получить доступ к этим значениям с помощью API Trace32, используя программирование на языке С, чтобы автоматически записывать эти значения в excel или в блокнот. Я попробовал их API для удаленного управления и JTAG Access документа, но не мог сделать много. Кто-нибудь может посоветовать? Я даже не мог настроить программное обеспечение Trace32 и даже не отправить некоторую команду Lauterbach. Моя основная цель - значения, которые я вижу в графическом интерфейсе Trace32, должны быть доступны в программе C с использованием API Trace32.API-интерфейс Trace32 Lauterbach для доступа к программным переменным программы C

ответ

2

Сначала включите удаленный порт API TRACE32. Убедитесь, что файл C: \ t32 \ config.t32 содержит следующие строки (там должна быть пустая строка до и после двух строк!):

RCL=NETASSIST 
PORT=20000 

Чтобы прочитать значение переменной MYVARIABLE через удаленный API и сохранить его в лог-файл написать приложение 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 [email protected] $^ -lws2_32 

%.o : %.c t32.h 
    $(CC) -c $(addprefix -I,$(VPATH)) -D T32HOST_WIN -o [email protected] $< 

Однако, возможно, это намного более легким и гибким, чтобы сделать вам задачу с помощью сценария ПРАКТИКЕ (* .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 

Выполнить этот скрипт в командной строке GUI TRACE32 с командой

DO myScript.cmm 

Или выполнить этот сценарий с помощью удаленного API, например, с t32rem.exe:

C:\t32\bin\windows\t32rem.exe localhost port=20000 "DO myScript.cmm" 

 Смежные вопросы

  • Нет связанных вопросов^_^