Forum: Mikrocontroller und Digitale Elektronik Bootloader ATmega16 verify-Problem


von Michael K. (aemkai)


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

von aemkai (Gast)


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?

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.