I'm having a lot of difficulty using the dual boot functionality on the XL devices (I'm using a STM32F103ZG).
This is my process:
- Write working code to the device using the default startup & script files
- Clear the word at 0x08080000 (the start of bank 2)
- Run- everything seems fine
- Use the rlink tools to write 0xF7 into the user byte (this should clear BFB2)
- Restart the processor. I would expect this to boot into system memory, check the word at bank 2 (0x0), check the word at bank 1 (the default top of stack address- 0x20018000), and then vector into the code in bank 1. It doesn't do this, it just sits there.
I have both boot0 and boot1 pins tied to ground through a 100k resistor. When I attempt to reprogram it gives me the error "Wrong boot mode detected: RAM mode" (until I clear the option bytes). I tried with the debugger attached as it jumped into system memory and I end up 'out of code' at 0x1FFFEDCC (which seems right, that's in system memory). If I leave it running it ends up around 0x1FFFEAE4.
What am I missing?