Bootloader für ATXMEGA schreiben

Gast #3063919
Lesenswert?

Hallo Leute,

ich verwende momentan einen ATXMEGA32A4U Mikrocontroller. Für den µC 
möchte ich einen Bootloader schreiben. Die Daten soll über eine USART 
Schnittstelle in den µC geschrieben werden. Die Antsuerung einer USART 
stellt kein Problem da.

Nun zu meiner Frage. Ich habe ein test.hex Datei. Diese möchte ich jetzt 
uploaden. Kann ich das HEX-File einfach öffnen und immer 1Byte auslesen 
diesen an den Mikrocontroller übertragen und dann ab Adresse 0x0000 
schreiben? Anschließend den Adresszähler erhöhen und schließlich das 
nächste Byte schreiben? Oder ist die Datei codiert?
Gast #3063974
Lesenswert?

Wie setzt man dies dann am besten um? Öffnet man die Datei und liest den 
1. Datensatz aus (vom Startzeichen bis zum Endzeichen) und überträgt 
diesen dann per RS232 an den µC

Anschließend den nächsten Datensatz auslesen und übertragen
Gast #3064000
Lesenswert?

@ Detlev T.

mit aufsteigender Reihenfolge meist Du das die Adressen nicht 
aufsteigend sind?

Das ist ja blöd. Ich dachte ich muss nur die Nutzdaten übertragen und 
kann die Adressen weglassen, damit das Flashen nicht so lange dauert. 
Das kann dann aber leicht in die Hose gehen :-)
Gast #3064007
Lesenswert?

Das Wichtigste ist erst mal das Datenblatt in diesem Bezug zu lesen. 
Dann sollte man sich ueberlegen, wieviel man aufs Mal programmieren 
muss, zB eine Page. Dann sollte man sich ueberlegen wie man was 
uebertraegt. Ich wuerde die Verbindung zB sichern, mit einem CRC oder 
so. Man kann Binaer, Hex, oder sonstwas uebertragen. Und dann sollte man 
die Groesse des RAM Buffers auf der Controllerseite im Auge behalten.
Wie schnell will man uebertragen, mit oder ohne Handshake, usw
#3064016
Lesenswert?

Da du ja den xmega mit USB hast, warum nimmst du nicht einfach den DFU 
Bootloader (gibts ja fertig bei Atmel) und machst die Programmierung 
dann via USB über die FLIP Software?

Oder Schau dir mal die Appnote AVR2054 von Atmel an. Ist ein Serieller 
Bootloader mit Srecord Unterstützung.
Gast #3064048
Lesenswert?

USB habe ich nicht nach Außen geführt. Geht daher schon mal nicht. Aber 
ich werde dies mal im Kopf behalten.

Der Artikel über den Bootloader hat mir schon mal sehr geholfen.

Ich wollte eine CRC-16 Checksummer für die Datenübertragung verwenden. 
Das Parsen der Datei wollte ich dann auf dem PC übernehmen.

Warum steht in der HEX-Datei nach dem ersten Startzeichen eine 04 und 
bei den anderen Paketen immer eine 10? Demnach werden das erste mal 8 
Bytes an Nutzdaten übertragen und danach immer 32Bytes. Warum macht man 
das?
(Firma: matzetronics) #3064095
Lesenswert?

Martin schrieb:
> Warum steht in der HEX-Datei nach dem ersten Startzeichen eine 04 und
> bei den anderen Paketen immer eine 10? Demnach werden das erste mal 8
> Bytes an Nutzdaten übertragen und danach immer 32Bytes. Warum macht man
> das?

Das ist nicht zwangsweise so, aber in deinem Fall werden vermutlich 
erstmal einige Vektoren wie Reset oder IRQs an eine andere Adresse 
übertragen und dann beginnt die Übertragung der Daten des Programmes.


Intel Hex liefert übrigens im letzten Byte jeder Datenzeile eine 
Prüfsumme mit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren