hello all, I have writtten an IAP for STM32F100RBT6B and trying to jump to my LED blinking aplication.
bootloader start address : 0x08000000 application start address:0x08009000
I am using the below code to jump from bootloader to application.. Code:
typedef (void )(*pFunction)(void); pFunction Jump_To_Application; uint32_t JumpAddress;
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000) {
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application(); }
when my pointer reaches "Jump_To_Application();" nothing gets updated in PC,SP.. or please suggest how can i see whether my bootloader code is jumping to application or not.
I have gone through a lot of post here but didn't find my answer. I am running bootloader code in debug mode. and using Atollic IDE. Plz help.. thanks in advance..
Also i've a small doubt, according to ST the 1st 4 bytes are for stack pointer while the next entry is for reset vector. the reset vector address holds 0x08003875,what is this value exactly..
thanks
the reset vector address holds 0x08003875,what is this value exactly
It's the program's entry point plus one. So the first instruction is at 0x08003874. Read up on ARM architecture if you want to know where the "plus one" comes from.
Thanks for the reply, I've compiled my application which is to be loaded at address 0x08009000.For that I made the following changes: Settings done: 1) Linker script file (.ld): FLASH (rx) : ORIGIN = 0x08009000, LENGTH = 80K 2) system_stm32f10x.c Line 132: #define VECT_TAB_OFFSET 0x9000
after all settings after compilation the .isr vector in .map file doesnot change..do i need to make anymore changes?
do i need to make anymore changes?
I wouldn't know. I'm using different tools these days. Let's hope someone else answers this.