We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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?
Can you write to the PRAM area from a memory window in uVision?
Do you see value changes there?
Most people are using ULINK2 to debug applications on XC166 or XE166 devices.
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.