Lauterbach: TRACE32

Bisheriger/interner Bezeichner: TRACE32

Herstellerinformationen

Hersteller

Webseite

Produktname

Version

Lauterbach GmbH

http://www.lauterbach.com

TRACE32-PowerView

R.2015.09, getestet bis R.2023.09

Kategorien

MDL 🛈

APL 🛈

BAN 🛈

BMA 🛈

SVC 🛈

DGN 🛈

FIU 🛈

EES 🛈

FCT 🛈

DBG 🛈

IMG 🛈

AUDIO 🛈

ENVSIM 🛈

ENVCOM 🛈

✓

Plattform

Betriebssystem

Unterstützung

Windows

✓

Linux

Ports

Besonderheiten

Voraussetzungen

Für die Verwendung des Debuggers in ecu.test ist es notwendig, dass die Datei t32api64.dll in einem Verzeichnis liegt, für das die PATH Variable gesetzt ist.

Außerdem muss folgender Eintrag in der TRACE32-Konfigurationsdatei (config.t32) enthalten sein (Portnummer kann abweichen, muss aber mit dem Eintrag in der Testbenchkonfiguration übereinstimmen):

RCL=NETASSIST
PORT=20000
PACKLEN=1024

Konfiguration

Beim Start von TRACE32 wird das unter „Startup-Script“ festgelegte PRACTICE-Script ausgeführt (falls angegeben). Falls TRACE32 über einen Tool Server angebunden ist, werden die ELF- und HEX-Dateien auf diesen übertragen (in das Verzeichnis, welches in der ToolLibs.ini als TempDir angegeben ist). Die ELF-Datei(en) werden nach dem Start von TRACE32 mit dem Befehl „Data.LOAD.Elf“ unter Verwendung der angegebenen ELF-Ladeparamter geladen.

Das Flashen der HEX-Datei erfolgt nicht automatisch. Hintergrund ist, dass dieser Vorgang oft Targetspezifische Befehle und Parameter benötigt. Stattdessen kann die HEX-Datei über den Port-Job „Cmd“ während der Ausführung eines Packages geladen werden. Die Parametrierung der Befehle zum Flashen der HEX-Datei liegt dabei in der Verantwortung des Testfallerstellers. Der dabei notwendige Pfad zur HEX-Datei kann über die interne API aus der aktuell geladenen Testkonfiguration ermittelt werden (z.B. api.CurrentTestConfiguration.Ecus.Item(0).GetDebugHex()).

Multi-Core-Debugging

Wird ein Target mit mehreren Cores verwendet, dann ist bei der Konfiguration in ecu.test zu unterscheiden, ob Symmetric Multi Processing (SMP) oder Asymmetric Multi Processing (AMP) verwendet wird.

SMP

Alle Cores werden über eine einzelne TRACE32-Instanz gesteuert. In der Testbenchkonfiguration wird ein einzelner DEBUGGER-Port verwendet. Operationen wie BREAK, GO etc. betreffen alle Cores gleichermaßen. Für bestimmte Operationen, die sich nur auf einen Core auswirken sollen, muss dieser zuvor mit dem Portjob CoreSelect aktiviert werden.

AMP

Für jeden Core wird eine eigene TRACE32-Instanz verwendet. Für jede Instanz muss in der Testbenchkonfiguration ein eigener DEBUGGER-Port angelegt werden und entsprechend über eine eigene (oder parametrierte) T32-Konfigurationsdatei eine eigene UDP-Portnummer zugewiesen werden. Jeder DEBUGGER-Port sollte in der Testkonfiguration von einem eigenen Steuergerätezugriff mit ELF-Datei referenziert werden.

Die Porteigenschaft „Startup-Skript (*.cmm)“ kann bei Bedarf freigelassen werden.

Variablenzugriff

Zum Lesen bzw. Schreiben ruft ecu.test in TRACE32 die Befehle Var <Expression> bzw. Var.Assign <Expression> = <Value> auf.

Der Variablenausdruck <Expression> setzt sich je nach Variablenscope folgendermaßen zusammen:

Globale Variablen:

/<ElfName>\Global\<VariableName>

Statische Modul-Variablen:

/<ElfName>\<ModuleName>\<VariableName>

Statische Funktionsvariablen:

/<ElfName>\<ModuleName>\<FunctionName>\<VariableName>

Dabei ist <ElfName> der Dateiname der Elf-Datei ohne Dateierweiterung. <ModuleName> ist der Dateiname der C-Datei, wo die Variable definiert ist, ohne Pfadanteile und Dateierweiterung. Der <VariableName> kann auch mit . oder -> getrennte Strukturelemente enthalten.

Wenn es sich bei <VariableName> um einen Pointer-Typ handelt, so werden <Expression> die entsprechenden Dereferenzierungsoperatoren vorangestellt. Z.B.:

Var **/ElfName\Global\ppIntValue

Die Informationen über Datentypen und den Variablen-Scope werden aus der DWARF-Sektion der in der Testkonfiguration angegebenen ELF-Datei ermittelt.

Info

Das Schreiben und Lesen großer Vektoren wird durch ecu.test auf mehrere Befehle aufgeteilt, falls der resultierende Einzelbefehl länger als 2048 bzw. 4096 Zeichen lang ist. Dies ist eine Einschränkung von TRACE32. In diesem Fall sollte die Operation bei gestoppter Programmausführung durchgeführt werden, um inkonsistente Werte zu vermeiden.

Dies ist für Matrizen nicht implementiert, sodass bei großen Matrizen als Workaround auf Unterelemente zugegriffen werden muss.