AnsweredAssumed Answered

stm32f051 IAP problem

Question asked by sangdo.lee on Jan 13, 2017
Latest reply on Jan 13, 2017 by Clive One

Hi, Everyone.


I am testing IAP on stm32f051.


I made IAP code downloading from someone's IAP and did little modify.

IAP code is located on 0x0800 0000 ~ 0x0800 2fff and application is located on 0x0800 3000 ~

I wrote the IAP on 0x0800 0000 and application on 0x0800 3000 by ST-link.

And, I did execute the jumping code to application, jumping to application seemed to be good.

But, interrupt service routine are not operated at all.


I put the code on my application to remap vector table to SRAM as following:


#define APPLICATION_ADDRESS 0x08003000

__IO uint32_t VectorTable[48] __attribute__((section(".RAMVectorTable")));

for(i = 0; i < 48; i++)
  VectorTable[i] = *(__IO uint32_t*)(APPLICATION_ADDRESS + (i<<2));

/* Enable the SYSCFG peripheral clock*/

/* Remap SRAM at 0x00000000 */


If I disable all the interrupt, application is working well.


I checked the 0x2000 0000 address's contents and 0x0800 3000 address contents by using ST-link

After executing the application code, 0x2000 0000 address is not same with 0x0800 3000.


What are the points I missed?


Application has tested loading on 0x0800 0000 without IAP, it is working well including interrupt service.