m_bedded wrote:
>
1 | if (ApplicationMode) {
|
2 | > ApplicationUSARTRXIntHandler();
|
3 | > } else {
|
4 | > BootloaderUSARTRXIntHandler();
|
5 | > }
|
Das ist Mumpitz, sowas geht nicht.
Bootloader und Applikation sind 2 völlig eingenständige Programme.
Keiner weiß, wo beim anderen welche Funktion steht, welche Variablen
usw.
Und überhaupt, die Applikation ist ja temporär gelöscht, da wäre es grob
fahrlässig wenn der Bootloader irgendwo hinein springt.
Umgekehrt kann die Applikation nie den Bootloader anspringen, wenn grad
der Strom ausfällt, während sie gelöscht wird.
Daher müssen es auch unbedingt 2 eigenständige Programme sein.
Ein Bootloader ist einfacher ohne Interrupts. Er hat nur 2 Aufgaben
hintereinander zu erfüllen, Daten empfangen, Daten in Flash schreiben.
Dazu brauchts keine Interrupts.
Schau Dir mal den Bootloader in der Codesammlung an. Er geht mit 1 oder
2 beliebigen Pins, da die UART in SW ist.
Peter