Content originally posted in LPCWare by jeffh on Thu Aug 01 15:45:40 MST 2013
I would like to use IAP to update the internal flash boot image at runtime. I am using lpc4357 so one bank will be running the current boot image and the other bank will be used to store/run the new image. I have this working but I have to compile the new image specifically for the intended bank or else it won't work. Is there some way to use relative addressing in Keil so I can compile one image to use for IAP regardless if it is placed in bank 0 or 1?
Two more issues concerning IAP:
1. The IAP section in the manual says:
"IAP commands which result in a flash write/erase operation use 32 bytes of space in the top portion of the on-chip RAM for execution."
Which specific RAM address range is being used for the 32 bytes? The 4357 has local and AHB RAM in non-contiguous regions.
2. When IAP is completed and I set the active flash bank to the new boot image, I want to reset the chip to boot using the new image. I call NVIC_SystemReset() but this seems to just reset and run the old image. What is the correct way to boot to the new image?