Forum: Mikrocontroller und Digitale Elektronik Falsche Adressen bei DFU-Bootloader für AT90USB1286


von Philipp M. (spannungsabfall)


Angehängte Dateien:

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.

von Philipp M. (spannungsabfall)


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?

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.