AnsweredAssumed Answered

Jumping to flash address in other bank

Question asked by ghis on Oct 12, 2016
Latest reply on Oct 12, 2016 by Clive One
I work on a Nucelo 144, with STM32F429. I try to make a jump starting from the start application (sector 1, address 0x8000000, bank 1) to another application contained in Sector 17 ( address 0x8120000, bank 2).
I made a code by helping me an example of IAP with jump_to_app function. The jump is not working. The problem might be for the management of the vector table ?

#define SECTOR_5_ADDRESS 0x08020000     //PROG #2
#define SECTOR_17_ADDRESS 0x08120000    //PROG #1
/* Jump_Sector17 Parameters */
typedef void(*pFunction)(void);
pFunction Jump_to_application;
uint32_t Jump_address;
void Jump_Sector17(void);
int main(void)
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  /* Configure the system clock */
  /* Initialize GPIO peripherals */
void Jump_Sector17(void)
    /* Set system control register SCR->VTOR  */
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x12000);
    /*  Jump to user app    */
    Jump_address = (*(__IO uint32_t*) (SECTOR_17_ADDRESS + 4));
    Jump_to_application = (pFunction) Jump_address;
    /*  Initialize to user application  */
    __set_MSP(*(__IO uint32_t*) SECTOR_17_ADDRESS);

#define BL
/* #define VECT_TAB_SRAM */
#ifdef BL
#define VECT_TAB_OFFSET  0x12000 /*!< Vector Table base offset app. */
#define VECT_TAB_OFFSET  0x00   /*!< Vector Table base offset boot.     */
                            /*  This value must be a multiple of 0x200. */

 I hope that my explanation was clear, english is not my native language. Thank you in advance for your help.