Hallo Forum, ich habe mir einen Bootloader geschrieben in etwa nach der Anleitung "AVR Bootloader in C - eine einfache Anleitung" aus der Artikelsammung (vielen Dank für diesen tollen Artikel!). Mein Bootloader funktioniert auch soweit und ich kann das Flash korrekt programmieren und anschließend auslesen mit dem ISP-Programmmer. Nur gelingt mir der Rücksprung aus dem Bootloader in die Application nicht. Ich habe gesehen, dass man dazu die Funktion boot_rww_enable (); aufrufen soll. Leider kann ich diese Funktion nicht kompilieren für den ATmega168A (WINAVR,AVR-Studio 4.19, AVRToolchain 3.3.2). Ich bekomme die Fehlermeldung "../main.c:325:6: error: 'RWWSRE' undeclared (first use in this function) " Wenn ich verstehen würde was diese Funktion genau macht und bewirkt, dann würde ich sie mir selbst schreiben. Kann mir das jemand erklären? Aus den Angaben im Datenblatt und der avr-libc-Doku werde ich nicht richtig schlau. Vielen Dank für alle Tips! Henning
:
Verschoben durch Moderator
Könnte das gleiche Problem wie hier sein: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=98595&start=0
Hallo Bernhard, vielen Dank für den Link oben. Scheint ähnlich zu sein. Ich habe wie vorgeschlagen selbst definiert #define RWWSRE 4 und kann nun kompilieren und mit Aufruf der Funktion boot_rww_enable (); klappt dann auch der Rücksprung. Der Bootloader funktioniert nun einwandfrei wie er soll. Mich würde dennoch interessieren was genau da im Hintergrund passiert. Aus dem Datenblatt mit der Beschreibung der RWW und NRWW-Sections werde ich einfach nicht schlau. vielen Dank nochmal, Henning
Henning Petermann schrieb: > Mich würde dennoch interessieren was genau da im Hintergrund passiert. > Aus dem Datenblatt mit der Beschreibung der RWW und NRWW-Sections werde > ich einfach nicht schlau. Während und auch nach dem Schreiben in die RWW-Section kann nicht von dort gelesen (und damit auch kein Code ausgeführt) werden. Die Section muss erst wieder "freigeschaltet" werden.
Henning Petermann schrieb: > AVRToolchain 3.3.2 Da scheint der Support für die A-Devices wohl nicht sauber eingearbeitet worden zu sein. Im avr-libc-Projekt haben wir dafür von Atmel für die "A"s nichts zurückbekommen, sprich: der ATmega8A wird von der reinen avr-libc selbst nicht unterstützt. (Es wäre schön, wenn Atmel hier nicht unnötigerweise sein eigenes Süppchen kochen würde.) ATmega8 und ATmega8A sollten aber softwaremäßig ohnehin identisch sein, du kannst also dein Projekt auch gleich für einen ATmega8 compilieren. Du solltest den Bug also auf jeden Fall bei <avr[at]atmel.com> eintüten.
Hallo, vielen Dank für die beiden Tips und Hinweise. Mir ist noch weiterhin aufgefallen, dass die beiden bits IVSEL und IVCE ebenfalls nicht definiert sind (werden benötigt um die Interruptvektoren in die Bootsection zu legen). Ich nutze diese AVR-Toolchain auch zum ersten Mal. Bisher hatte ich WINAVR und AVR-Studio 4.x. Ging immer hervorragend. Nach der Installation von AVR-Studio 5.1 ging aber nix mehr. Auch nach dem Entfernen und dem Neuinstallieren von AVR-Studio 4.19 habe ich die alte Toolchain nicht wieder zum Laufen gebracht. Goog... lieferte, dass das Problem mit der Installation der AVR-Toolchain 3.3.x behoben sein sollte. War auch so, nur bei den "defines" wurde wohl irgendwo gespart. Bug habe ich gemeldet. vielen Dank nochmal, damit ist der Fall erledigt denke ich. Henning
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.