Hi,
I implement IAP function in this way:
fist,modify the bootloader program provided in SDK ,so,the bootloader can be loaded from QSPI nor flash and run from DTCM.then download this program into QSPI NOR Flash through J-FLASH at a fixed address(0x60180000).
In my application code,when received a special command,execute SVC instruction and go to the bootloader entry address(the address of bootloader reset_handler ).After finish appliaction imag downloading,the host send a reset command.then the CPU executes the new application imag.
When debug the IAP function,the CPU did enter into the bootloader reset handler,but it was reseted during executing code of copying data from FLASH into RAM for unknown reason.Before entering bootloader reset handler,I already disable the watchdogs and all interrupts.
Is it wrong to implement IAP in my way?why ?
During the time to found the solution,i found some developer implement the IAP according to AN12604.
I also have some problem about the second bootloader descriped in AN12604.
(1)After power on reset,does the CPU always perform the second bootloader? or is any way to jump over the second bootloader and execute the application directily?
(2)How can my application jump to second bootloader when upgrade code?
Best regards.