I use UDE with a TriCore target. In some cases the programs stops
or/and one of the following messages erupt in the command window:
-
MSG: UDEDebugServer: holded by CPU exception: ..
-
WARNING: TcCoreTargIntf: cannot set exception handling at start address: ..
-
WARNING: TcCoreTargIntf: exception handling at .. temporary disabled
What is the background of this behavior ?
Usually the program code should handle the TriCore exceptions/traps by
correct initialization of the BTV (Trap Vector Table Pointer) register
and providing a trap vector table. If the program does not handle the
traps the TriCore can crash unexpectedly by occurrence of a trap.
UDE supports the debugging of programs that does not implement the trap
handling. Enable the UDE trap handling by the dialog 'TriCore Traps'
from the menu 'Debug - Setup TriCore Traps' (per default enabled) and set the BTV register to a meaningful value.
The error/warning messages above occur under following circumstances (if UDE implements trap handler): - If a real trap occurs, the TriCore program will be stopped and the first message will be shown.
- If
the BTV register is pointing into the program location and the program
oversteps the trap entry point, the program will be stopped by the UDE
trap handling and the first message will be shown. Set the BTV register
to point in a location outside of the program code.
- If the BTV
register is pointing into read/only memory and the debugger tries to
handle the traps, the second warning message will be occur because the
debugger cannot map the trap routines. Set the BTV register to point in
read/write memory.
- If the program was stopped at the trap entry
code, the trap handling will be disabled temporary because of the
impossible reentry into the trap handling code. The third warning will
be occur.
Please note that the UDE exception/trap handling is
enabled per default. The BTV register is setup via the initialization
commands. |