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