Hallo, Ich habe einen Bootloader für einen Atmega8 geschreiben. Ich benutze Winavr und mein Sourcecode ist in C.Ich verwende die library boot.h. Mein Problem ist dass mein Programm nicht an der Adresse 1C00 (Startadresse Bootloader) sonder an der adresse 00 beginnt. Was muss ich tun um die Startadresse zu ändern?? Weiters wie kann ich das bit BOOTRST verändern(C routine)??
BOOTRST ist doch eine Fuse, die kann man doch garnicht mit Code verändern, oder?
@Jens Die BOOTLOCKBITs sind doch auch FUSES und di kann man auch ändern...
Hi Lockbits sind keine Fusebits. Lesen kann man beide vom Programm aus, programmieren jedoch nur die Bootloaderlockbits. Matthias
Achso, ..... Aber wie kann ich dann zwischen einem start der Applikation, bzw. des bootloaders Entscheiden? Wie kann ich dem AVR mittteilen dass ich vo meine Applikaton starten will, bzw wie kann ich meine Applikation beibringen dass ich beim neustart den den bootloader miteinbeziehen will??
Hi der Bootloader startet immer und abhängig von einer Bedingung startet dieser entweder sofort die Anwendung oder wartet auf ein neues Programm. Diese Bedingung kann ein Pin bestimmten Pegels sein, ein Zeichen das spätestens nach x ms über den UART reinkommt oder sonstwas. Matthias
ok, dass habe ich verstanden aber, wie implementiere ich "starte das Programm"????
Hi kommt auf die Sprache an. In ASM dürfte ein {r|e}jmp 0 reichen. In C kannst du das über einen Funktionspointer oder mittles inline ASM lösen. Matthias
guuut.... vielen dank mal. Jetzt muss ich nur noch wissen wie man den c code bei der Adresse 1C00 Plaziert?????
Hi eine komplette Bootloaderimplementierung in C sammt passendem makefile findest du in meinem USBisp Projekt -> www.matwei.de Matthias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.