In my Cortex-M0 project, there are two program images residing at different memory locations: 0x0000_0000 and 0x0010_0000. Each program has its own vector table. M0 will boot from the program at 0x0010_0000 then switch to the other program (0x0000_0000) at the end.
What is the correct way to switch to the porgram at 0x0000_0000? I'm not sure whether the following instructions are correct or not.
LDR R6, =0x1 ; set R6 to 0x0000_0001 due to Thumb mode
LDR R0, [R6]
MOV SP, R0
LDR R1, [R6, #4]
Can someone please point me the right implementation? Thanks a lot.
Now, this question keeps occupying my mind.
If you're only going to copy code to the RAM, then you could also do one of these things:
If you're interested in solution #3, I could send you an example linker-script and some startup-code. I could also write a document about it.
I am trying to write a bootloader for cortex M0 processor and I am interested to follow the #3 route you mention in your previous comment. Could you please send me some guidelines or sample documents on linker script and vector jump code, if possible. Thanks!
View all questions in Cortex-M / M-Profile forum