@leo
Lo so che il programma può scrivere nella flash ma bisogna stare attenti a dove si andrà a scrivere.... Poiché non si può sapere a priori in quali aree della flash saranno collocate le varie parti del programma si rischia di fare un macello. Bisognerebbe creare un secondo bootloader, ovvero un'area di memoria dedicata alla parte del programma che dovrebbe prendere i dati dalla sd per caricarli nella application, ma non è possibile.
@pablos
La EEPROM può contenere qualunque cosa, ma sono quello che è presente sulla flash può essere eseguito. Potenzialmente si potrebbe copiare lo schetck sulla EEPROM per poi copiarlo sulla flash, ma ha pochissimo spazio...
Comunque per entrare nel bootloader non è necessario scomodare il watchdog, si può prevedere (in asm) un jump alla prima locazione di memoria del bootloader stesso (si guardi la pag. 294 del datasheet
http://www.atmel.com/dyn/resources/prod_documents/doc8271.pdf). Adesso non so a quanto è impostata la dimensione dell'area destinata al bootloader ma, per esempio, se fosse 2048 words per entrare nel bootloader basta una:
asm volatile ("jmp 0x3800"::);