Hi,
I'm using Keil uVision. I need my application to start at address 0x08001000 and not on the flash base address 0x08000000. So I changed the R/O Base address in the Linker window to 0x08001000.
After linking and starting debugging (CTL+F5) the Disassembly Window, when stepping through shows addresses at 0x08000000 and up while the .map file shows that code is located at 0x08001000.
How can that be explained?
Thanks
Henk
You don't mention what processor you are using?
Is it even possible to run the application at that address? Where is the interrupt vector table? At address 0? Or at address 0x08000000? Somewhere else?
When testing programs, it's possible to load them to just about any location in RAM, and then use an init file to the debugger to set the PC to the reset address of the program. But when testing a real program by booting the processor, you need to have the reset vector, vector table, ... at expected locations.
I'm using the STM32F103ZE uC.
The valid flash locatins are 512KB ranging from 0x0800 0000 up to 0x0807 FFFF.
The application itself I think is correctly loaded at (B).
The vectortable by default is at address 0x0800 0000 also mapped at address 0x0000 0000 and can be given any offset.
I modified the Reset_Handler so it loads the main() address in (B) but somehow the debugger does not run well. It skips executable code so I can't trace what code path really is executed.
I leave it this way and will ask a new question concerning the debugger because that's the real problem I think.