Hier findest du alle Infos zum Thema.
Kurz gesagt ist die Lösung ziemlich einfach:
Füge
Code:
void softReset(){
  asm volatile ("  jmp 0");
}
in dein Programm ein und rufe dann im Programm an passender Stelle
Code:
softReset();
auf. Damit springt das Programm in den Bootloader.