ja, man kann den UART benutzen. Bootloader und eigentliches Programm
sind zwei paar Schuhe.
Beim Start des Prozessors (Anlegen der Versorgung) startet - sofern
Fuses usw. alles entsprechend - erst das Programm in der Bootsection
hinten im Speicher und dieses Terminiert üblicherweise mit einem Jump
ins eigentliche Programm (das auch über den Bootloader geschrieben
wird), das vorne im Speicher liegt.
also in etwa so
1 | Versorgen >>
|
2 | jump to FASTBOOT >>
|
3 | execute main() von FASTBOOT >>
|
4 | if(receivingProgrammViaUart) { reprogramm HAUPTPROGRAMM } >>
|
5 | jump main() von HAUPTPROGRAMM
|
6 | >> execute HAUPTPROGRAMM
|
FASTBOOT (in der Bootsection) und HAUPTPROGRAMM (im Flash vorne) sind
die beiden laufenden Programme, in beiden kann die UART unabhängig vom
anderen Programm verwendet werden.