Currently, on my ATmega32u4 I am using LUFA Mass Storage bootloader to upload new firmware. While this works great, it's a bit involved, since I have to
1) send special message to micro which then resets the board into "firmware update mode"
2) wait until my PC shows a new disk drive
3) replace existing FLASH.bin with new one
4) eject the "drive" to trigger upload process
I was thinking of using external SPI/I2C/whatever memory to temporarily store new firmware. Process would then be as following:
1) send entire hex file source to micro which would just pass it to external memory
After that step, board would automatically reboot, and bootloader would then just copy contents of external memory to micro, resetting the board again once the process is done. External memory would also be cleared to avoid firmware update loop, of course.
Is this possible? Has it been done before? I couldn't find anything specific, but then again maybe I haven't looked deep enough.