mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader ATmega16 verify-Problem


Autor: Michael K. (aemkai)
Datum:

Bewertung
0 lesenswert
nicht 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&i...). 
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

Autor: aemkai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.