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*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

/* Remap SRAM at 0x00000000 */
SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);

 

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.

 

BR

Paul

Outcomes