Bootloader ATmega16 verify-Problem

OP #1909022
Lesenswert?
• ▲
▼
Hallo,

ich habe einen Atmega16 (8Mhz - interner Oszillator) und möchte für 
diesen einen Bootloader entwerfen (mit AVRStudio 4.18 + gcc-Compiler). 
Da ich sowas noch nie gemacht habe, habe ich erstmal mit dem von Atmel 
zur Appnote 109 bereitgestellten Code experimentiert 
(http://www.avrfreaks.net/index.php?func=viewItem&item_id=62&module=Freaks%20Tools). 
Den Code hab ich nicht verändert, nur mit der preprocessor.xls alles 
eingestellt (ATmega16, Bootspeichergröße 1024 words, 8Mhz, Baudrate 
38400, Eingang für Start mit Bootloader). Compilieren und hochladen ging 
ohne Probleme und ohne Fehler / Warnungen. Auch das Starten des 
Bootloaders scheint einwandfrei zu funktionieren, drücke ich bei 
Einschalten der Betriebsspannung die Taste  nicht, erkennt AVRProg kein 
Device, drücke ich die Taste, kommt das bekannte Fenster.

Zum Updaten des Flashs nutze ich wie gesagt AVRProg. Soweit funktioniert 
alles, das erkennen des µC sowie das Programmieren des Flash's 
funktioniert einwandfrei. Aber beim auf das Programmmieren folgende 
Verify kommt - nachdem der Statusbalken ganz durchgelaufen ist - 
folgende Fehlermeldung:
error: address 0x0001, expected 0x????, received 0x????
(Die Fagezeichen nur, weil die Werte nicht immer gleich sind, das hängt 
von der Länge des zu ladenden Programms ab.)

Mit dem Debugger hab ich schon Folgendes herausgefunden:

* Der Fehler tritt (sehr wahrscheinlich) beim Auslesen des 
Flash-Speichers auf, also nicht danach.
* Das Nichtübereinstimmen von Received und Expected ist immer so 
ziemlich oder ganz am Ende der Übertragung, pausiere ich diese mit dem 
Debugger vor dem Ende und wechsel auf Einzelschritt, dann kommt die 
Fehlermeldung trotzdem erst ziemlich am Ende (in Bezug auf den 
Fortschrittsbalken)
* Wenn ich den nicht richtig programmierten Code vom µC in eine neue 
Datei auslese und diese dann wieder programmiere, gibt es keinen Fehler.
* Das Programm läuft (logischerweise) nicht, wenn man nicht im 
Bootloader startet - zumindest kommt nichts auf dem Display.

Ich habe drei verschieden große .hex-Files zum testen, einmal 300 Byte 
(einfache Displayausgabe und Tasterauswertung) und 8kByte bzw. 9kByte 
(die eigentliche Applikation). Mit allen funktioniert es nicht.

In einem weiteren Versuch hab ich dann den Atmel-Bootloader modifiziert 
und die Fuse-und Lockbit-Unterstützung auskommentiert, das hat aber auch 
nichts geholfen, das Verhalten ist unverändert.

Hat jemand einen Plan, woran das liegen könnte oder was ich falsch 
mache?
Danke schonmal,

Michael
Gast #1910567
Lesenswert?
• ▲
▼
Hallo,

hab jetzt mal einen Verify über ISP probiert und mitgeloggt, Flash und 
EEPROM zeigt er OK an, bei Fuses und Lockbits hat er Probleme. (Das 
würde auch erklären, warum der Verify-Balken ganz durchläuft). Scheinbar 
liegt es doch nicht am Applikations-Code.
Was ich jetzt nicht verstehe: Lockbits sind nicht gesetzt (0xFF) und die 
Unterstützung dafür hatte ich im Bootloader ja auskommentiert. Warum 
bringt er mir dann immer den Fehler?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.