Falsche Adressen bei DFU-Bootloader für AT90USB1286

OP #3259084
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Frage, bei der ihr mir vllt. helfen könnt.

Ich habe bei einem Experimentierboard mit einem AT90USB1286 irgendwie 
den Booatloader zerschossen. Eigentlich habe ich die Fusebits 
zerschossen, aber um die wieder zu resetten, musste ich vorher den 
ganzen Chip löschen.

Nun versuche ich ihn neu aufzuspielen und habe dabei Probleme. Ich 
benutze zum Programmieren einen USBasp (selbstbau) und das Programm 
extreme Burner. Das Programmieren funktioniert einwandfrei und wenn ich 
selbst geschriebene Software draufspiele, tut die wie gewünscht (sie 
benutzt auch die USB-Schnittstelle korrekt).

Wenn ich aber den DFU-Bootloader draufspiele so startet der nicht.

Mir ist aufgefallen, dass der Code das Bootloaderes an der Adresse 
0xE000 beginnt. Das ist sowohl im Programm (extreme Burner) zu sehen als 
auch aus dem Hex-File zu lesen. Jedoch startet die Boot-Section des 
At90USB128x (je nach Wahl der BOOTSZ-Fuses) frühestens ab der 
Wordadresse 0xF000, was der Byteadresse 0x1E000 entspricht.

Ich habe also die Vermutung, dass der Bootloader an eine falsche Stelle 
im Flash geschrieben wird. Allerdings steht meiner Ansicht nach im 
hex-File von Atmel genau diese falsche Stelle drin.

Wo ist mein Denkfehler? Oder nutze ich die falschen Tools? Nativ 
unterstützt das Programm extreme Burner die At90USB-Chips nicht aber ich 
habe eigene Definitionen in die chips.xml und die fuselayout.xml 
hinzugefügt. Diese scheinen gut zu funkionieren.

P.S.: Wenn andere extreme-Burner Nutzer Bedarf haben, werde ich hier bei 
Gelegenheit die Definition für alle Chips der At90USB-Reihe einstellen.
Angehängte Dateien:
OP #3259136
Lesenswert?
• ▲
▼
Ich glaube ich habe die Ursache selbst gefunden.

Das Hex-File startet mit der Zeile:

:020000021000EC

Was laut Wikipedia (http://de.wikipedia.org/wiki/Intel_HEX) ein
Extended Segment Address Record (Typ 02) ist. Das heißt diese Zeile 
sollte für alle nachfolgenden Zeilen die Adresse um 0x10000 verschieben. 
Somit würde aus 0xE000 die Adresse 0x1E000 was eben die korrekte 
Startadresse der Bootsection ist.

Ich werde einen Bugreport an den Autor von extreme Burner schreiben.

Kennt jemand derweil an anderes Tool, das ähnlich komfortabel zu 
intsallieren und zu bedienen ist und mit dem USBasp arbeitet?

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.