I'm working on a monitor for XC164CS-32F without external memory.
The monitor should reside in the built in flash (0x0c00000) and use the internal RAM (0x0CE00-0x0CFFF) for its data.
The user application will use the built in PRAM (0x0E00000-0x0E017FF) as program memory and the built in DRAM( 0xC000-0xCDFF) as data memory.
I use following settings in ConfigV2.inc:
%DEFINE (DATA_START) (000CE00H) %DEFINE (CODE_START) (0C00000H) %DEFINE (VECTAB) (0E00000H)
I made the following change to inst_v2.a66 to make sure the monitor starts the user application at its actual address (0x0E00000)
IF (1) ; always use VECTAB RESET_ADR EQU %VECTAB ; RESET IP value ELSE RESET_ADR EQU 0 ENDIF
After flashing the monitor to the internal flash I use a project with the Keil Monitor-166 Driver (Monitor166 in ROM).
The communication between debugger and monitor works pretty well. I can download the program to the designated address and I can manipulate the registers and the memory of the controller. I can't however start the application as the debugger is unable to set a breakpoint:
*** MONITOR ERROR 9: CANNOT WRITE BREAKPOINT VECTOR
I looked all over the documentation and the forum but can't find a hint what i did wrong.
Is the monitor trying to set the trap and interupt vector at the wrong location?
I can modify the PRAM from a memory window in uVision. I disabled all caching of the uVision debugger to make sure it's actually rereading the memory.
I can see the changes in the disassembly window, too.