Forum: Mikrocontroller und Digitale Elektronik Startadresse Bootloader Atmega8


von Balter Marco (Gast)


Lesenswert?

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)??

von Jens (Gast)


Lesenswert?

BOOTRST ist doch eine Fuse, die kann man doch garnicht mit Code
verändern, oder?

von Balter Marco (Gast)


Lesenswert?

@Jens

Die BOOTLOCKBITs sind doch auch FUSES und di kann man auch ändern...

von Jens (Gast)


Lesenswert?

Oh, wirklich? Das wußte ich nicht...

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Lockbits sind keine Fusebits. Lesen kann man beide vom Programm aus,
programmieren jedoch nur die Bootloaderlockbits.

Matthias

von Balter Marco (Gast)


Lesenswert?

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??

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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

von Balter Marco (Gast)


Lesenswert?

ok, dass habe ich verstanden aber,
wie implementiere ich "starte das Programm"????

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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

von Balter Marco (Gast)


Lesenswert?

guuut....
vielen dank mal.

Jetzt muss ich nur noch wissen wie man den c code bei der Adresse 1C00
Plaziert?????

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.