Hallo Thomas,
wenn man einen Bootloader programmiert, dann kann man in drei Fallen tappen:
1: Man hat eine Bautrate im PIC gewählt, die laut Datenblatt eine Abweichung von > 4,5 % von der Standart-Bautrate hat. Wenn man dann grosse Datenblöcke überträgt mit 8N1 und keine Prüfsumme bildet, kann es zu Übertragungfehlern kommen.
2: Der Bootloader liegt im Bereich 0x00 - 0xXXX und man hat vergessen das im Bereich 0x0004 - 0x0008 die Adressen für die ISR gespeichert werden. Wird ein Programm geladen, das Interupts benutzt, dann wird der Bootloader beschädigt.
3: Das C-Porgramm wurde den Adressbereich 0x0000 - 0xXXXX compiliert und an eine Adresse 0X0500 gespeichert, dann hat der Compiler die falschen absoluten Rücksprungadressen generiert
Umgehen könnte man Problem 2 und 3, indem man den Bootloader nach oben schiebt und das eigentliche Programm im Bereich 0X0000 -0xXXXXX laufen lässt.
Proglem 1 kann man nur durch probieren und Kontrollroutinen beheben
Ich hoffe es hilft Dir ein wenig!
GRUSS
INGO
Lesezeichen