I am uploading software via serial ISP in to an LPC81x series microcontroller. This is a Cortex-M0+ chip. After software upload, I would like to start the execution of the uploaded software without having to reset the CPU externally.
There is a "Go " command in the serial ISP and the "lpc21isp" software uses it as such: "G 0 T\r\n". However, this does not seem to work as it has several problems:
- The part of the program residing at address 0x00000000 is the interrupt vector table, not program code. Starting thumb mode execution at that address is just going to fault. However, I do not know what the "go" command really does.
- Somebody needs to set up the interrupt table pointer (VTOR), reset all the pin configurations and invoke the reset handler. This is quite different from starting execution at a certain address.
- The documentation says that using the "go" command on an address below 0x00000200 is not supported. In my case atleast the reset handler resides below that address.
I am open to any suggestions that would allow me to continue execution after ISP.
Just as extra information: the reason I wish to do this is that I do not have spare communication lines for reset or forcing ISP. I can, however, toggle the power to the chip. I would like the chip to unconditionally start in ISP mode, so I can update the software on every chip bootup if I wish.