Issue while jumping from internal ST bootloader to User bootloader at
So here is what I am doing, I am using IAR Systems to build my code and generate .s19 file and using an in-house tool to load the .s19 to device (STM32F469IG), after the download is complete the tool sends Jump command or “Go command” (0x21 0xDE) to which the device is sending ACK 0x79 and the tool sends the address 0x08000000 where the vector table is located, to which the device is also sending an ACK 0x79 but the Jump from internal bootloader to user bootloader is not happening. I have verified it multiple times using J-Mem if the memory is written properly and the address locations are correct, I do not see any issue there. I also tried downloading the same .s19 file using “ST Flash Loader Demonstrator” and it works properly, only difference is the ST Flash Loader does not send the “Go command” after download, we had to turn off the BOOT switch and power cycle the device after which the user bootloader worked without any issue. I tried debugging using IAR when the jump doesn’t work and found out none of the System registers are getting initialized to any value despite having a vector table in the correct location and receiving the “Go command” after download. Later when I turn off the BOOT switch and power cycle it gives me an exception, but the memory where the vector table is located is still showing the right values(same values when it is working). I am wondering how the internal bootloader is not jumping to the vector table address location despite getting proper address, what can cause this scenario? Is there anything I am missing which needs to be taken care of before download? or in the user code? I believe there is no issue with the user code because the same .s19 works fine when I use J-Flash Lite, or ST Flash Loader, or convert it to .dfu and use USB communication to download, I am seeing the issue only with UART download. Anybody has any idea on what might be happening?
