The problem of field upgrades has reared its head again; it's something I've never really solved to my satisfaction.
I want what amount to a disposable solution. If the end-user returns the 'upgrade unit' then that's great and we can re-use them. If not, then we're too out of pocket.
The target boards have easy access to a standard 6-pin ISP connector. So that's easy.
The idea I've had for an upgrade unit is a simple PCB containing the following...
*) an AVR
*) a decoupling capacitor
*) a 6-pin ISP header
*) a resistor
...that's it. Nothing else.
In an ideal world the upgrade unit AVR would have more flash than the target although, given that I never completely fill my flash, I could probably get away with the same size.
The 6-pin is wired as standard and is used to program the upgrade unit. It gets programmed with some code in the bootloader section. On power up this code reads the chip signature of the attached target and if correct it will transfer the code from its lower flash area to the target. This is accomplished via bit-banged SPI through the same 6-pin ISP connector.
Why bit banged? Because MISO and MOSI need swapping between the upgrade unit being programmed and it being the programmer. I don't want to mess around with links and jumpers. So it's bit banged SPI using the SPI pins but with MISO and MOSI swapped.
The resistor is there to isolate the reset pin.
Am I missing something as far as the technology goes?