AnsweredAssumed Answered

STM32F207VC: Issues with jumping to Bootloader from Application code

Question asked by patro.umakanta on Nov 5, 2015
Latest reply on Nov 11, 2015 by patro.umakanta
Hello Forum,
We are using the STM32F207VC in our design. Here in order to support FW upgrade we have written code to jump to bootloader and then to support Flash Read/Write through commands over UART.
We referred  AN3155 and AN2606.
The code we are using to jump to bootloader is:

#define BOOTLOADER_ADDRESS     0x1FFF0000     // Starting address of System memory
uint32_t JumpAddress;
typedef  void (*pFunction)(void);
pFunction JumpToBootloader;
void firmware_jump_bootloader(void)
{
     __disable_irq();
     
     /* Jump to Bootloader */
     JumpAddress = *(__IO uint32_t*) (BOOTLOADER_ADDRESS + 4);     // (BOOTLOADER_ADDRESS + 4) contains the Starting address of Bootloader
     JumpToBootloader = (pFunction) JumpAddress;
     
     /* Initialize Bootloader's Stack Pointer */
     __set_MSP(*(__IO uint32_t*) BOOTLOADER_ADDRESS);     // The BOOTLOADER_ADDRESS contains the initial value of Stack pointer
     
     /* Jump to Bootloader */
     JumpToBootloader();
}

Also, we are using UART1 TX and RX (PA9 and PA10). And the terminal is connected with the configuration 115200 BaudRate, Even parity, 1 Stop etc.
But we are unable to get the Bootloader respond to any commands sent over UART after FW code jumping to Bootloader.
We hope the code we wrote to jump to bootloader is correct.

Also, in order to verify we tried to directly invoke bootloader on power up by changing the BOOT0 and BOOT1 pins to '1' and '0' respectively. In this case the bootloader responds with 0x1F to our command 0x7F. So this confirms that the ports used as well as the circuit used are correct.

But we don't find a response when we try to jump to bootloader from our application FW.

Request members to help us in overcoming this issue with some pointers.

Thanks In Advance.
UPatro

Outcomes