This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

STM32F100xx custom bootloader to application jump

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..

Parents
  • I am dumping my application .bin to the address 0x08009000 and later running my bootloader loader code in debug mode.

    You mean you use a flashloader to load the binary at address 0x08009000? Sounds right.

    I tried your code but its giving hardfault.

    Well, it works for me. The hard fault could be in your code. You should establish the exact cause of the hard fault.

    On looking at the hex file of my application i found out that the value at reset vector address 0x0800004 is 0x75380008(on STM32 ST-LINK).

    I'm not sure I understood what you mean. If you are saying that the value of the reset vector looks odd, I agree with you.

Reply
  • I am dumping my application .bin to the address 0x08009000 and later running my bootloader loader code in debug mode.

    You mean you use a flashloader to load the binary at address 0x08009000? Sounds right.

    I tried your code but its giving hardfault.

    Well, it works for me. The hard fault could be in your code. You should establish the exact cause of the hard fault.

    On looking at the hex file of my application i found out that the value at reset vector address 0x0800004 is 0x75380008(on STM32 ST-LINK).

    I'm not sure I understood what you mean. If you are saying that the value of the reset vector looks odd, I agree with you.

Children