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.