Lauterbach: TRACE32¶
Bisheriger/interner Bezeichner: TRACE32
Herstellerinformationen
Hersteller |
Webseite |
Produktname |
Version |
|---|---|---|---|
Lauterbach GmbH |
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.
Eigenschaften 🛈¶
Name |
Verfügbar wenn |
Standardwert |
Gültige Werte |
Typ |
Beschreibung |
|---|---|---|---|---|---|
Programmpfad |
‚C:\TRACE32\bin\t32mtc.exe‘ |
string |
Pfad zur TRACE32-Executable (Absolut oder relativ zum Basispfad des Hostknoten) |
||
Timeout für Toolzugriffe ❲in Sek.❳ |
‚600‘ |
string |
Zeit nach der eine Anfrage an das Tool abgebrochen wird. |