|ARM Technical Support Knowledge Articles|
Applies to: MON166 Target Monitor
Information in this article applies to:
When using MON166 and executing code, the monitor stops responding after starting the target program.
This problem may be caused by the following:
Overwriting the interrupt vectors used by the monitor.
If you use the Monitor in Bootstrap mode, you must reserve the interrupt vectors and the monitor code area. In most cases you have to RESERVE at least the serial interrupt 0 and the NMI trap with L166. Under uVision2 you need to enter this information under Options - L166 Misc - Reserve:
Overwriting the monitor code or data areas.
You should also reserve the monitor code and data area. Please check the configuration of your monitor to figure out which areas you need to reserve. For most boards you will find this information under uVision2 in the dialog Options - Debug - Monitor Settings - Description.
Changing the port 3 direction register (used by the serial port).
I/O port 3 is used by the monitor for the serial port (typically) but may also be used in your application. Therefore, you need to make sure that the register P3 and DP3 are configured as follows:
P3 = 0x0400; // P3.10 must be 'high' DP3 = 0x0400; // P3.10 must be 'output'
The application causes a Class A or Class B Trap.
Class A or Class B traps have a higher priority than the monitor's UART interrupt. Because of that, the monitor cannot get control over the CPU.
Even setting a breakpoint in a trap handler function and debugging this function will not work reliable because the monitor needs to disable interrupts while it is active. Since Class A and Class B traps cannot be disabled the monitor will run into recursivity problems and will show wrong results / behavior.
Article last edited on: 2010-11-23 09:09:33
Did you find this article helpful? Yes No
How can we improve this article?