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