This documentation describes the processor specific settings and features for the TRACE32 debugger.
Please keep in mind that only the Processor Architecture Manual (the document you are reading at the
moment) is CPU specific, while all other parts of the online help are generic for all CPUs supported by
Lauterbach. So if there are questions related to the CPU, the Processor Architecture Manual should be your
first choice.
Brief Overview of Documents for New Users
Architecture-independent information:
•“Debugger Basics - Training” (training_debugger.pdf): Get familiar with the basic features of a
TRACE32 debugger.
•“T32Start” (app_t32start.pdf): T32Start assists you in starting TRACE32 PowerView instances
for different configurations of the debugger. T32Start is only available for Windows.
•“General Commands” (general_ref_<x>.pdf): Alphabetic list of debug commands.
Architecture-specific information:
•“Processor Architecture Manuals”: These manuals describe commands that are specific for the
processor architecture supported by your debug cable. To access the manual for your processor
architecture, proceed as follows:
-Choose Help menu > Processor Architecture Manual.
•“OS Awareness Manuals” (rtos_<os>.pdf): TRACE32 PowerView can be extended for operating
system-aware debugging. The appropriate OS Awareness manual informs you how to enable the
OS-aware debugging.
1.Start the ARM debugger (for details see “Quick Start of the JTAG Debugger” in “ARM
Debugger” (debugger_arm.pdf)) of the Nomadik, and set local memory bus frequency to
10 MHz:
; set local memory bus frequency = 10 MHz
d.s 0x10000014 %l 0x000a05f
d.s 0x10000008 %l 0x090c12a
d.s 0x10000014 %l 0x0
2.Only required for Tracing via NEXUS: Enable NEXUS via ARM debugger
D.S 0xE0000024 %be %b 0x40; only Audio MMDSP (STN8810A)
D.S 0xE0000024 %be %b 0x80; only Video MMDSP (STN8810V)
3.Start the MMDSP debugger, select the device prompt B:, if the device prompt is not active after
the TRACE32-Software is started.
B::
4.Select the core on your target, if automatic detection is not possible:
SYStem.CPU STN8810A
5.Configure the Debugger to use on-chip breakpoints in memory areas that are read-only (e.g.
FLASH/ROM):
MAP.BOnchip 0xC00000++0x1fffff
If a program breakpoint is set within the specified address range, on-chip breakpoints are now used
instead of software breakpoints. A list of all available on-chip breakpoints for your architecture can be
found under On-chip Breakpoints.
6.Enter the debug mode.
SYStem.Up
This command resets the CPU and enters the debug mode. After SYStem.Up it is possible to access
the registers and the memory.
7.Audio DSP only: Set the base and top address of program and data memory using the CacheCtrl
registers. Default values can be seen in the example below for COB-10 and MEK Evaluation
Boards. Alternatively the values can be set via a script for the ARM core at system power-up.
Refer also to the PER command.
The load command depends on the file format generated by your compiler. Be sure to load a file
compiled for the correct core. A full description of the Data.Load command is given in the “General
For MMDSP it is only possible to set breakpoints when the clock is stopped. This applies to both software
and on-chip breakpoints.
Software Breakpoints
In order to stop the program execution at a selected instruction, the code at the break location is patched by
a software break instruction. If the software break instruction comes to the execution stage of the
pipeline, the program execution is stopped and the debug mode becomes active.
Software breakpoints can be set to instructions in RAM and with some preparations also to instructions in
FLASH (see FLASH.Create and FLASH.AUTO). Software breakpoints on instructions in FLASH should
only be used, if the number of on-chip breakpoints is insufficient.
The number of software breakpoints is unlimited.
STN8810A (Audio): note that modifications to the program memory like setting and removing a SW
breakpoint require to flush the instruction cache to guarantee that the CPU sees the updated data. This
cache flush is executed before program execution is resumed. To avoid these cache flushes resort to onchip breakpoints. The STN8810V (Video) is not affected as it does not have an instruction cache.
This implementation is called on-chip, because the debugger uses resources provided by the processor to
set a breakpoint. The MMDSP core is equipped with 2 watchpoint/breakpoint units.
The following list gives an overview of the usage of the on-chip breakpoints by TRACE32-ICD:
•On-chip breakpoints: Total amount of available on-chip breakpoints.
•Instruction breakpoints: Number of on-chip breakpoints that can be used for program
breakpoints.
•Read/Write breakpoints: Number of on-chip breakpoints that can be used as Read or Write
breakpoints.
•Data breakpoints: Number of on-chip data breakpoints that can be used to stop the program
when a specific data value is written to an address or when a specific data value is read from an
address.
CPU FamilyOn-chip
Breakpoints
MMDSP3211
Instruction
Breakpoints
Read/Write
Breakpoints
Data
Breakpoints
On-chip Breakpoints on instructions
On-chip breakpoints are handled by the CPU internally and do not require to modify the program memory.
Therefore they can be used to set a breakpoint on an instruction in FLASH or ROM.
With the command MAP.BOnchip <range> it is possible to instruct the debugger to use On-chip
breakpoints for the specified range as default (it is still possible to override this with parameters like /SOFT
for the break.set command). Typically it is used for FLASH/ROM memories. If a breakpoint is set within the
specified address range, the debugger uses automatically the available on-chip breakpoints.
Use the command MAP.List to see for which address ranges the debugger uses on-chip breakpoints.
Assume you have a target with FLASH from 0 to 0xFFFFF and RAM from 0x100000 to 0x11FFFF. The
command to configure TRACE32 correctly for this configuration is:
Map.BOnchip 0x0--0x0FFFFF
The following breakpoint combinations are possible.
The STN8810A and STN8810V are not object code compatible. When loading a program that was compiled
for the wrong core, the message “file not compiled for this processor” is displayed.
The Video Core employs a compression algorithm based on a dictionary. The dictionary is dynamically
created while downloading the object code to the target. The algorithm exploits the fact that some
instructions do not use all fields of the opcode to obtain better compression. While the functionality of an
instruction is not affected by compression/decompression, a reconstructed opcode will not be necessarily
binary identical to the original opcode. Therefore the /verify option for the data.load command may
produce false error message when used for download code to the video core.
Changing the FLAG Register
Changing the FLAG register through the debugger is not supported.
The following DSP specific memory classes are available.
Memory ClassDescription
PProgram Memory
XData Memory (X-Bus)
YData Memory (Y-Bus)
DBGDebug Memory
The Video core STN8810V uses a dictionary for compressing its program memory. When writing code to the
program memory (e.g. by downloading a program to the target via Data.LOAD.Elf or by writing to a P:
memory location), the debugger automatically adds necessary dictionary entries derived from the written
program data. This is hidden from the user, who accesses program memory always in 64bit words (one
VLIW instruction). The compressed program and dictionary memories can be accessed via the DBG:
memory class (see below). Downloading a program to the target via Data.LOAD.Elf deletes the old
dictionary and therefore may invalidate instructions, even if their are not physically overwritten by the new
program.
The DBG memory class gives access to memory resources like host register, indirect host registers, and
dictionary ram (Video core only). The mapping of these resources to addresses is arbitrary and does not relate to any MMDSP or system address mappings. The mapping is only valid in the context of the
DBG memory class.
Address RangeMapped Resource
DBG: 0x0000--0x007fhost registers, 8-bit width
DBG: 0x1000--0x1FFFindirect host registers, up to 64-bit wide
The four parameters IRPRE, IRPOST, DRPRE, DRPOST are required to inform the debugger about the
TAP controller position in the JTAG chain, if there is more than one core in the JTAG chain (e.g. ARM +
DSP). The information is required before the debugger can be activated e.g. by a SYStem.Up. See Daisy-
chain Example.
For some CPU selections (SYStem.CPU) the above setting might be automatically included, since the
required system configuration of these CPUs is known.
TriState has to be used if several debuggers (“via separate cables”) are connected to a common JTAG port
at the same time in order to ensure that always only one debugger drives the signal lines. TAPState and
TCKLevel define the TAP state and TCK level which is selected when the debugger switches to tristate
mode. Please note: nTRST must have a pull-up resistor on the target, TCK can have a pull-up or pull-down
resistor, other trigger inputs need to be kept in inactive state.
Multicore debugging is not supported for the DEBUG INTERFACE (LA-7701).
COREFor multicore debugging one TRACE32 GUI has to be started per core.
To bundle several cores in one processor as required by the system this
command has to be used to define core and processor coordinates within
the system topology.
Further information can be found in SYStem.CONFIG.CORE.
DRPRE(default: 0) <number> of TAPs in the JTAG chain between the core of
interest and the TDO signal of the debugger. If each core in the system
contributes only one TAP to the JTAG chain, DRPRE is the number of
cores between the core of interest and the TDO signal of the debugger.
DRPOST(default: 0) <number> of TAPs in the JTAG chain between the TDI signal
of the debugger and the core of interest. If each core in the system
contributes only one TAP to the JTAG chain, DRPOST is the number of
cores between the TDI signal of the debugger and the core of interest.
IRPRE(default: 0) <number> of instruction register bits in the JTAG chain
between the core of interest and the TDO signal of the debugger. This is
the sum of the instruction register length of all TAPs between the core of
interest and the TDO signal of the debugger.
IRPOST(default: 0) <number> of instruction register bits in the JTAG chain
between the TDI signal and the core of interest. This is the sum of the
instruction register lengths of all TAPs between the TDI signal of the
debugger and the core of interest.
TAPState(default: 7 = Select-DR-Scan) This is the state of the TAP controller when
the debugger switches to tristate mode. All states of the JTAG TAP
controller are selectable.
TCKLevel (default: 0) Level of TCK signal when all debuggers are tristated.
TriState(default: OFF) If several debuggers share the same debug port, this
option is required. The debugger switches to tristate mode after each
debug port access. Then other debuggers can access the port. JTAG:
This option must be used, if the JTAG line of multiple debug boxes are
connected by a JTAG joiner adapter to access a single JTAG chain.
Slave(default: OFF) If more than one debugger share the same debug port, all
except one must have this option active.
JTAG: Only one debugger - the “master” - is allowed to control the signals
nTRST and nSRST (nRESET).
Default coreindex: depends on the CPU, usually 1. for generic chips
Default chipindex: derived from CORE= parameter of the configuration file (config.t32). The CORE
parameter is defined according to the start order of the GUI in T32Start with ascending values.
To provide proper interaction between different parts of the debugger the systems topology must be mapped
to the debuggers topology model. The debugger model abstracts chips and sub-cores of these chips. Every
GUI must be connect to one unused core entry in the debugger topology model. Once the SYStem.CPU is
selected a generic chip or none generic chip is created at the default chipindex.
None Generic Chips
None generic chips have a fixed amount of sub-cores with a fixed CPU type.
First all cores have successive chip numbers at their GUIs. Therefore you have to assign the coreindex and
the chipindex for every core. Usually the debugger does not need further information to access cores in
none generic chips, once the setup is correct.
Generic Chips
Generic chips can accommodate an arbitrary amount of sub-cores. The debugger still needs information
how to connect to the individual cores e.g. by setting the JTAG chain coordinates.
Start-up Process
The debug system must not have an invalid state where a GUI is connected to a wrong core type of a none
generic chip, two GUI are connected to the same coordinate or a GUI is not connected to a core. The initial
state of the system is value since every new GUI uses a new chipindex according to its CORE= parameter
of the configuration file (config.t32). If the system contains fewer chips than initially assumed, the chips must
be merged by calling SYStem.CONFIG.CORE.
The SYStem.CpuAccess command controls if the debugger may use the CPU to perform intrusive memory
operations while the clock is running. If enabled, these memory operations are performed by briefly stopping
the CPU, performing the access and activating the CPU again.
EnableFor performing a memory access (r/w) while the CPU is executing, the
debugger interrupts program execution briefly. Each interruption takes
1 … 100 ms depending on the speed of the debug interface and on the
number of the read/write accesses required. Window updates e.g. for
data.dump windows are on default performed 10 times/s.
DeniedThe debugger is not allowed to interrupt program execution for
performing memory accesses.
Default setting.
NonstopNonstop ensures that the debugger will not affect the real-time behavior
of the system in any way. This includes blocking of the break command
and of other intrusive features like performance analysis via StopAndGo,
conditional breakpoints etc.
For MMDSP the option NonStop reduces the functionality to tracing the
program flow as no memory access can be performed by the debugger
while the clock is running.
Logically resets the program dictionary memory. This command does not actually clear the dictionary
memory in the target. It simply resets the buffer in the debugger. Therefore the dictionary will be overwritten
if new instructions are written to program memory.
Selects the JTAG port frequency (TCK) used by the debugger to communicate with the processor. The
frequency affects e.g. the download speed. It could be required to reduce the JTAG frequency if there are
buffers, additional loads or high capacities on the JTAG lines or if VTREF is very low. A very high frequency
will not work on all systems and will result in an erroneous data transfer. Therefore we recommend to use
the default setting if possible.
<frequency>
•The debugger cannot select all frequencies accurately. It chooses
the next possible frequency and displays the real value in the
SYStem.state window.
•Besides a decimal number like “100000.” short forms like “10kHz”
or “15MHz” can also be used. The short forms imply a decimal
value, although no “.” is used.
SYStem.LOCKLock and tristate the debug port
Format:SYStem.LOCK [ON | OFF]
Default: OFF.
If the system is locked, no access to the debug port will be performed by the debugger. While locked, the
debug connector of the debugger is tristated. The main intention of the lock command is to give debug
access to another tool.
Denied Real-time memory access during program execution to target is disabled.
In general the SYStem.MemAccess command controls how the debugger accesses system memories
while the clock is running. Due to the design of MMDSP there is no way for the debugger to access memory
resources without stopping the clock. Therefore the only possible selection for this option is denied.
SYStem.ModeEstablish the communication with the target
Format:SYStem.Mode <mode>
<mode>:Down
NoDebug
Go
Attach
Up
Down (default) Disables the debugger. The state of the DSP remains
unchanged. The JTAG port is tristated. No reset of the CPU.
NoDebugsame as Down, but CPU is running.
GoSame as Up, but CPU is running:
Resets the CPU, enables the debug mode and starts the user program
immediately.
The program execution can be stopped manually or at a breakpoint. Onchip breakpoints can be used in Go mode. On-chip breakpoints have to
be set before e.g. by using the SYStem.Mode Up command.
AttachThe connection to the DSP is established without resetting the DSP.
Select NoDebug before you connect the debugger cable or NEXUS
adapter to the target and switch then to Attach.
UpResets the DSP and establishes the connection. After the execution of
this command the DSP is stopped and all register are set to their default
values.
ST8810V: due to code compression, only with SYStem.Up the program
memory is completely reset!
SYStem.Option 8810compatible Set the compatibility mode 8810
Format:SYStem.Option 8810compatible [ON | OFF]
Default: OFF
The command sets the compatibility register at MMIO@0xf60a. It is relevant only for the STN8815 and
STN8820 cores. Specifically it sets the following values:
MMIO@0xf60a
•= 0x10f8 // native mode; for executing 8815 code
•= 0x1cf8 // compatibility mode; for excuting 8810 code
SYStem.Option.DCUModeSelect the “DCU” mode
Format:SYStem.Option DCUMode [AUTO | 16 | 24]
In the system window it is possible to select the DCU mode assumed by the debugger for displaying
registers and variables.
The mode can be set via the option sys.o.dcumode [auto | 24 | 16 ].
In mode auto, the mode is detected from the FLAGS register or the deduced from the stack frame. In mode
16 or 24, all registers and variables are displayed in the chosen mode, independently from the actual DCU
mode of the CPU.
NOTE:The setting only changes the display in the debugger, it does not change the actual
mode the DSP core is in. For changing the DCU mode in the target, the FLAGS
register needs to be modified in the target.
SYStem.Option DIAGSystem diagnosis command
Format:SYStem.DIAG [code [P1] [P2] [P3]]
System diagnosis command. Execute only when demanded by LAUTERBACH support engineer.
SYStem.Option EnReset Control activation of the reset line
Format:SYStem.Option EnReset [ON | OFF]
Default: OFF.
The command controls whether the debugger will (ever) pull the reset line. As the MMDSP is normally used
as "slave" in multi-core systems, the default setting for the option is OFF. Consequently the reset line will
never be activated on default.
Additionally you might want to use the option "SYStem.CONFIG SLAVE ON" in order to also disable the
reset of the TAP controller when connecting to the target.
SYStem.Option IMASKASMDisable interrupts while single stepping
Format:SYStem.Option IMASKASM [ON | OFF]
Default: OFF.
If enabled, all interrupts will be masked during assembler single-step operations by use of the
EMU_UNIT_MASKIT register (MMIO @ 0xF600). After the single step the register is restored to the original
value. If the option is disabled, the EMU_UNIT_MASKIT register is not modified.
SYStem.Option IMASKHLLDisable interrupts while HLL single stepping
Format:SYStem.Option IMASKHLL [ON | OFF]
Default: OFF.
If enabled, all interrupts will be masked during HLL single-step operations by use of the
EMU_UNIT_MASKIT register (MMIO @ 0xF600). After the single step the register is restored to the original
value. If the option is disabled, the EMU_UNIT_MASKIT register is not modified.
If enabled, the Echoic will be flushed before GO or Step operations. This is required to enforce consistency
between cache and external program memory when the program memory was updated (e.g. for setting
software breakpoints). Typically the option shall be left enabled except when debugging cache consistency
problems in the target. The option is only relevant for ST8810A because it has a program cache.
SYStem.Option NMFRetrieves the value of pThis
Format:SYStem.Option NMF [ON | OFF]
Default: OFF
The command is only relevant when using the NMF (Nomadik Multiprocessing Framework).
When the option is enabled, the debugger retrieves the value of pThis from the target memory everytime it
uploads the registers values from the core. The value of pThis is used to detect the currently active NMF
module.
There is a pseudo register call pThis that is listed in the register window and can be accesses via the
register function similar to actual core registers. A pseudo register is an artificial register that has no
corresponding register in the CPU, but is used to conveniently handle data that is useful in the context of
register manipulation.
Register
print register(pThis)
; open the Register window
; print the value of pThis
SYStem.Option OP9compatibleCompatibility mode OP9
Format:SYStem.Option OP9compatible [ON | OFF]
This command enables the compatibility mode for the hcMOS 9 MMDSP+ core by setting the register
COMPATIBLE_REG @ MMIO(0xF60A).
Downloads an ELF file to the target. Note that for MMDSP targets the debugger performs a soft reset for
setting the program counter to the program entry point at P:0x0.
Register.RESet Soft reset
Format:Register.RESet
Sets all registers to their initial value after a reset. This is done via soft reset of the core which may have
effects besides updating the contents of architectural registers.
Reading the PC without stopping the target (“PC-snooping”) is available from 8820 and later.
SNoop.PCPrints the current PC in the info line (only once)
SNoop.PC ON | OFFEnables or disables that the debugger permanently updates the PC in info
line
The PC-snooping hardware feature is most useful in the context of statistical runtime analysis. This is
illustrated in the following script:
perf
perf.list perf.method snoop
perf.mode function
GO
The visible difference between PERF.METHOD Snoop and PERF.METHOD StopAndGo is that for
"stopandgo" the debugger will indicate real-time violations (red "s" in the bottom status line).
Also, snooping is much faster than StopAndGo and thus done more frequently which results in a more
detailed statistical analysis.
; open perf config window
; open perf chart
; display info based on function usage
TrOnchip.CONVert Adjust range breakpoint in on-chip resource
Format:TrOnchip.CONVert [ON | OFF]
The on-chip breakpoints can only cover specific ranges. If a range cannot be programmed into the
breakpoint, it will automatically be converted into a single address breakpoint when this option is active. This
is the default. Otherwise an error message is generated.
TrOnchip.CONVert ON
Break.Set 0x1000--0x17ff /Write
Break.Set 0x1001--0x17ff /Write
…
; sets breakpoint at range
; 1000--17ff sets single breakpoint
; at address 1001
TrOnchip.CONVert OFF
Break.Set 0x1000--0x17ff /Write
Break.Set 0x1001--0x17ff /Write
; sets breakpoint at range
; 1000--17ff
; gives an error message
TrOnchip.VarCONVertAdjust complex breakpoint in on-chip resource
Format:TrOnchip.VarCONVert [ON | OFF]
The on-chip breakpoints can only cover specific ranges. If you want to set a marker or breakpoint to a
complex variable, the on-chip break resources of the CPU may be not powerful enough to cover the whole
structure. If the option TrOnchip.VarCONVert is set to ON, the breakpoint will automatically be converted
into a single address breakpoint. This is the default setting. Otherwise an error message is generated.
This is a standard 20 pin double row connector (pin-to-pin spacing: 0.100 in.).
We strongly recommend to use a connector on your target with housing and having a center polarization
(e.g. AMP: 2-827745-0). A connection the other way around indeed causes damage to the output driver of
the debugger.
•The input and output signals are connected to a supply translating transceiver (74ALVC164245).
Therefore the ICD/AICD can work in an voltage range of (1.5 V) 1.8 … 3.3 V (3.6 V). Please note
that a 5 V supply environment is not supported! This would cause damage on the ICD/AICD.
Please contact us for alternate solutions if you need to work with 5 V.
•VTREF is used as a sense line for the target voltage. It is also used as supply voltage for the
supply translating transceiver of the ICD/AICD interface to make an adaptation to the target
voltage (1.5 V) 1.8 … 3.3 V (3.6 V).
• nTRST, TDI, TMS, TCK are driven by the supply translating transceiver. In normal operation
mode this driver is enabled, but it can be disabled to give another tool access to the JTAG port. In
environments where multiple tools can access the JTAG port, it is absolutely required that there
is a pull down resistor at TCK. This is to ensure that TCK is low during a handover between
different tools.
•TDO is an ICD/AICD input. It is connected to the supply translating transceiver.
•nRSTIN is used by the debugger to reset the target CPU or to detect a reset on the target. It is
driven by an open collector buffer. A 47 k pull-up resistor is included in the ICD/AICD connector.
The debugger will only assert a pulse on nSRST when the SYStem.UP, the SYStem.Mode Go or
the SYStem.RESetOUT command is executed. If it is ensured that the DSP is able to enter
debug mode every time (no hangup condition), the nSRST line is optional.
•N/C (= Vsupply) is not connected in the ICD/AICD. This pin is used by debuggers of other
manufacturers for supply voltage input. The ICD/AICD is self-powered.
There is an additional plug in the connector on the debug cable to the debug interface. This signal is tristated
if the JTAG connector is tristated by the debugger and it is pulled low otherwise. This signal is normally not
required, but can be used to detect the tristate state if more than one debug tools are connected to the same
JTAG port.
TPTPikeTec GmbHWindows
CANTATAQA Systems LtdWindows
RAPITIMERapita Systems Ltd.Windows
RHAPSODY IN MICROCIBM Corp.Windows
RHAPSODY IN C++IBM Corp.Windows
TESSYRazorcat Development
DA-CRistanCASEWindows
TRACEANALYZERSymtavision GmbHWindows
ECU-TESTTraceTronic GmbHWindows
UNDODBUndo SoftwareLinux
TA INSPECTORVectorWindows
VECTORCAST UNIT
supports MMDSP
includes software for Windows, Linux and MacOSX
requires Power Debug Module
JTAG Debugger License for MMDSP
supports MMDSP
additional license for all ARM dongles
please add the base serial number of your debug
cable to your order
ARM Converter ARM-20 to Mictor-38
Converter to connect the ARM Debug Cable to a Mictor
connector on the target providing both debug and
trace signals. This is needed if you want to connect
the Debug Cable without a Preprocessor and if there
is only a Mictor on the target. Suitable for MMDSP
and ARC as well.
Order Information
Order No.CodeText
LA-7836JTAG-MMDSPJTAG Debugger for MMDSP (ICD)
LA-7836AJTAG-MMDSP-AJTAG Debugger License for MMDSP
LA-3722CON-JTAG20-MICTORARM Converter ARM-20 to Mictor-38
Additional Options
LA-7744AJTAG-ARM10-AJTAG Debugger License for ARM10 Add.
LA-7765AJTAG-ARM11-AJTAG Debugger License for ARM11 Add.
LA-7746AJTAG-ARM7-AJTAG Debugger License for ARM7 Add.
LA-7742AJTAG-ARM9-AJTAG Debugger License for ARM9 Add.
LA-7843AJTAG-ARMV7-A/R-ADebug Cortex-A/-R (ARMv7 32-bit) Add.
LA-7844AJTAG-CORTEX_M-ADebug Cortex-M (ARMv6/7/8 32-bit) Add.
LA-7960XMULTICORE-LICENSELicense for Multicore Debugging