bueno ... siempre puede ejecutar un reinicio iniciado por software para explotar el temporizador de vigilancia ... y poner los datos en eeprom para comunicarse con el código de su cargador de arranque en cuanto a lo que quería hacer ...
enlace
Mirando la página 272 del manual de ATMega168 (sección 6: Ingreso al programa del cargador de arranque), la primera línea indica:
La entrada en el gestor de arranque tiene lugar
Por un salto o llamada desde la aplicación.
programa. Esto puede ser iniciado por un
disparador, como un comando recibido a través de
USART, o interfaz SPI.
Por lo tanto, me parece que definitivamente puede y debe ser capaz de llamar a las funciones del gestor de arranque desde el código de la aplicación. Mientras esté ejecutando el código que reside en la sección de la memoria del cargador de arranque, las instrucciones de SPM se pueden ejecutar y, por lo tanto, debería poder auto-programar cada vez que su programa de aplicación salte al código del cargador de arranque.