Rather than updating the code via JTAG, I would like my application to be able to update itself, in-system. I don't think I can use the standard boot loader routines, because the UART, I2C, and SSI interfaces aren't available, and I doubt I can implement their protocol on top of ours
Since I'll be overwriting my code memory, I will need to leverage existing ROM routines, or put something like BLInternalFlashErase() and BLInternalFlashProgram() into RAM, or keep such a routine in a preserved part of Flash (that only gets programmed via JTAG).
My application would load the (<32K) code image into RAM, verify it, disable interrupts, call the programming routine(s), then reset.
Does this sound reasonable, or am I reinventing the wheel?