Nun, irgendwie mußt der Bootloader ja eine Chance bekommen, daß man
ihn nach dem Reset ansprechen kann, um den Flash neu zu schreiben.
Entweder löst man das mit einer Verzögerung, innerhalb derer die
serielle Schnittstelle dann abgefragt wird, ob jetzt jemand den
Bootloader angeworfen haben möchte (wobei 15 Sekunden exzessiv
erscheint, andere benutzen hier ein bis zwei Sekunden), oder man
springt den Bootloader auf andere Weise aus dem Programm heraus an, so
daß er normalerweise transparent bleibt und keine Zeit warten muß.
Letzteres wird beispielsweise beim AVR JTAG ICE gemacht: es gibt einen
Befehl für das JTAG ICE, mit dem der Bootloader explizit aktiviert
wird, danach kann man einen Firmwareupdate durchführen.
Dritte Variante wäre eine hardwaremäßige Aktivierung z. B. mittels
Jumper. Die braucht ein Portpin, damit der Bootloader den Jumper
abfragen kann.
Wichtig bei der Variante mit Wartezeit ist natürlich, daß sie nur bei
externem oder Power-On-Reset warten sollte, bei einem Watchdog-Reset
sollte sie wohl sofort in die eigentliche Applikation springen.