Можно печатать текст из целевого приложения в TRACE32. Некоторые поставщики называют механизм, который вы ищете, JTAG Terminal , Semihosting (ARM) или Hostlink (Synopsys).
Это обрабатывается в TRACE32 с помощью группы команд TERM
.
Обычный подход следующий:
Добавьте t32term. c, t32term_memory. c и t32term. h к вашему проекту. Вы можете найти эти файлы в своей установке TRACE32 по адресу /demo/etc/terminal/t32term.
Скомпилируйте t32term. c и t32term_memory. c с помощью определенного макроса T32_TERM_BLOCKED = 1, T32_TERM_METHOD_OCKMEMORY = 1 и T32_STERM_MEMORY = 1 и T32_TERM_MEMORY = 1 и T32_TERM_MEMORY = 1 Например:
TERMOPT:=-DT32_TERM_BLOCKED=1 -DT32_TERM_METHOD_MEMORY=1 -DT32_TERM_MEMORY_BLOCKED_SIZE=256
gcc $(TERMOPT) -c -o t32term.o t32term.c
gcc $(TERMOPT) -c -o t32term_memory.o t32term_memory.c
Конечно, вместо просто «g cc» вы должны использовать здесь кросс-компилятор для вашей цели со всеми параметрами c, указанными для ЦП.
В вашем приложении используйте функцию T32_Term_Puts(const char *str)
для отправки текстового буфера в TRACE32
Чтобы использовать что-то вроде printf (), напишите функцию-оболочку вокруг T32_Term_Puts()
vsprintf()
. Библиотека C некоторых компиляторов уже предоставляет некоторую printf (), которая в конце вызывает некоторую слабо объявленную функцию put (), которую вы можете перезаписать с помощью T32_Term_Puts()
.
Во время компоновки убедитесь, что что буферы T32_Term_Tar2HostBufferSize
и T32_Term_Memory_Host2TarBuffer
помещаются в некэшированную память.
В TRACE32 используйте следующие команды:
SYStem.MemAccess Enable // Enable memory access to running CPU
TERM.METHOD BufferE E:T32_Term_Tar2HostBufferSize E:T32_Term_Memory_Host2TarBuffer
TERM.GATE
Окно TERM.GATE
принимает данные, которые вы отправили с T32_Term_Puts()
. Вы должны держать его открытым.
TERM.METHOD
указывает способ получения TRACE32 печатных данных из вашего целевого приложения. Метод BufferE довольно распространен и работает со всеми ЦП, которые поддерживают чтение памяти отладчиком во время работы ЦП. Существуют и другие доступные методы, которые вам, возможно, придется использовать, если BufferE невозможно.
Для метода BufferE вы должны разрешить отладчику доступ к целевой памяти, пока ЦП работает. Делается это командой SYStem.MemAccess Enable
. В зависимости от отлаживаемого семейства ЦП и версии TRACE32 вы должны использовать ключевое слово CPU
, DAP
или NEXUS
вместо Enable
.
Механизм позволяет не только отправлять текст в TRACE32. Он также позволяет вам открывать файлы из P C, на котором запущена TRACE32, записывать данные в файл, получать системное время или запускать приложения.
Если ваш целевой чип содержит модуль трассировки оборудования ITM или STM и вы иметь оборудование для трассировки от Lauterbach (например, CombiProbe или PowerTrace), вы также можете использовать этот механизм для отправки текста из целевого приложения в TRACE32.