Forum: Mikrocontroller und Digitale Elektronik Bootloader in ATMEga128 Programmieren


von AROK (Gast)


Lesenswert?

Hallo,

ich habe einen ATMega128 und möchte einen Bootloader darauf 
prgrammieren. Leider habe ich bisher nicht ergründen können wie man das 
macht (mit uisp).
Kennt jemand von euch ein Tutorial oder kann mir das kurz erklären?

Danke!

MFG AROK

von Helmut (Gast)


Lesenswert?

Der Bootloader flashst du wie jedes andere Programm auch. Er liegt im 
Flashspeicher halt nur am Ende des Bereichs. Und um den Bootloader dann 
auch zu nutzen, mußt du noch einige Fuses ändern. Steht aber im 
Datenblatt, welche Fuses das sind.

von AROK (Gast)


Lesenswert?

Hallo,

danke für die Antwort.

Dass er am Ende liegt wußte ich schon, aber im Datenblatt habe ich nicht 
gefunden an welcher Stelle, und ich weiß auch nicht wie ich uisp dazu 
brige es an diese Adresse zu schreiben.

Gibt es nicht irgend ein Dokument wo dieser Vorgang beschrieben ist?

Gruß
AROK

von Wolfgang Weinmann (Gast)


Lesenswert?

Hallo,

ich programmiere den ATMEGA88, aber ich nehme mal an, das das Prinzip 
bei Dir gleich ist. Es gibt beim Bootloader einiges zu beachten:

Wie Helmut sagte ist die Programmierung die gleiche wie beim restlichen 
Flash.

Der Unterschied liegt in den Eigenschaften des Flash-Speichers. Da gibt 
es beim 88er eine NRWW und eine RWW-Sektion. Zu beachten gilt: der Code, 
wo mittels SPM-Befehl das Flash programmiert wird, muß in der 
NRWW-Sektion liegen, sonst hängt sich der uC auf.
Und während der Flash geschrieben wird, darf kein Code in der 
RWW-Sektion ausgeführt werden. Deshalb kann es nötig sein, daß man die 
Interrutvektoren in den Bootloaderbereich verschiebt mittels einer Fuse.

Das Thema ist nicht das leichteste. Am Besten das Manual zu diesem Thema 
des uC ein paarmal durchlesen - irgendwann kapiert man das dann.

Normalerweise sollte bei einem Controller mit einem Bootloader auch ein 
kleines Bootloaderbeispiel im Manual stehen. So ist es zumindest beim 
ATMEGA88

Gruß

Wolfgang
--
www.ibweinmann.de
Ing.-Büro für Mikrocontrollersysteme und Elektronik

von AROK (Gast)


Lesenswert?

Ich hatte eine kueze Version des Datenbalttes. In der Vollversion steht 
alles drin. Hab jetzt die FuseBits gesetzt, Reset-Vektor auf boot, 
Bootsize auf 8k, Lockbits all aus (Wert=1).

Mit den NRWW un dRWW Sektionen hab ich das noch nicht ganz 
verstanden.MAl sehen ob ich das heute noch hinbekomme.

von Wolfgang Weinmann (Gast)


Lesenswert?

Hallo,

"Ich hatte eine kueze Version des Datenbalttes. In der Vollversion steht
alles drin. Hab jetzt die FuseBits gesetzt, Reset-Vektor auf boot,
Bootsize auf 8k, Lockbits all aus (Wert=1)."

Das mit dem Reset-Vektor kann man machen, muß aber nicht immer sein. Der 
Grund:
Wenn eine Page in der RWW-Sektion geschrieben wird, dann darf kein 
Programmcode in der RWW-Sektion ausgeführt werden. In der RWW-Sektion 
steht das Anwenderprogramm. Wenn Du jetzt zum Beispiel einen 
Timerinterrupt während dem Page-Write hättest,und der Sprung des 
Interruptvektor würde in der RWW-Sektion stehen (nämlich am anfang des 
Speichers), würde somit auch RWW-Code ausgeführt werden. Dann hängt sich 
der uC auf. Wenn Das aber während des Page-Write nicht auftreten kann 
(z.B. mit CLI), dann ist das verschieben der Interruptvektoren in den 
Bootloaderbereich auch nicht nötig. Dann genügt darauf zu achten, daß es 
keinen Sprung in die RWW-Sektion gibt.

Gruß

Wolfgang
--
www.ibweinmann.de
Ing.-Büro für Mikrocontrollersysteme und Elektronik


Mit den NRWW un dRWW Sektionen hab ich das noch nicht ganz
verstanden.MAl sehen ob ich das heute noch hinbekomme.

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.