Hi, ich habe ein custom Board mit atmega16. Diesen möchte ich mit einer neuen Firmware flashen, die alte aber unbedingt vorher speichern. Sollten Fehler auftreten, muss diese wieder geflasht werden. Mein Problem: Die ausgelesene Datei ist 45 kbyte groß?! Kann das sein? Ich war der Ansicht die sollte nicht größer als 16 k sein. Grüsse, Moebius
Samuel P. schrieb: > Die ausgelesene Datei ist 45 kbyte groß?! Kann das sein? Ich war der > Ansicht die sollte nicht größer als 32 k sein. schon mal reingeschaut in die Datei? 1 Byte sind mindestens 2byte in der Hex Datei.
Samuel P. schrieb: > Die ausgelesene Datei ist 45 kbyte groß?! Kann das sein? Das passt sogar recht genau. In einer Hex-Datei, die ja nichts anderes als ein Text-Datei mit einem bestimmten Aufbau ist, werden üblicherweise pro Zeile 16 Original-Bytes beschrieben. Zählt man, wieviele Zeichen dafür notwendig sind (inklusive dem Zeilencorschub mittels 0x0D 0x0A) dann landet man bei 45 Zeichen pro Zeile. Dein Mega 16 hat 16kB und wenn ich wieder davon ausgehe, dass pro Textzeile 16 Bytes beschrieben werden, dann benötigt dieser Speicherinhalt daher 1000 Zeilen in der Hex-Datei. Pro Zeile werden 45 Zeichen benötigt, d.h. die 1000 Textzeilen benötigen 45000 Bytes
Danke für die ausführliche Antwort! Ja, in der Datei sind 1025 Zeilen. Ich war nur verwundert, da wenn ich eine .hex erstelle diese immer sehr viel kleiner ist. Zum Abschluss: Hat jemand schon mal eine solche ausgelesene datei zurückgespielt? Sind hier Probleme zu erwarten bzw. muss die Datei vorher aufbereitet werden? Grüsse, Moebius
Samuel P. schrieb: > Danke für die ausführliche Antwort! > > Ja, in der Datei sind 1025 Zeilen. Ich war nur verwundert, da wenn ich > eine .hex erstelle diese immer sehr viel kleiner ist. Das ist aber auch kein Wunder. Denn deine Erstellwerkzeuge wissen ja, wie gross dein Programm ist. D.h. da steht in der Hex-Datei nur der Teil drinnen, der auch tatsächlich das Programm beinhaltet. Ist dein Programm tatsächlich nur 1kB gross, dann gibt es keinen wirklichen Grund, die restlichen 15kB "Leer"bytes in die Hex-Datei mit reinzugeben. Wird der Inhalt, der dieses 1kB repräsentiert, in den µC gebrannt, dann ist damit das komplette Programm übertragen worden. Wenn man aber vom µC zurück liest, dann weiß man ja a priori nicht, welche Teile des Flash tatsächlich benötigt werden und welche nicht. Die Brennprogramme lesen daher auf jeden Fall die vollen 16kB aus und speichern die in die Datei. > Zum Abschluss: Hat jemand schon mal eine solche ausgelesene datei > zurückgespielt? Sind hier Probleme zu erwarten bzw. muss die Datei > vorher aufbereitet werden? Muss nicht aufbereitet werden. Das wäre sonst ein wenig witzlos. Das Brennprogramm holt ein 1:1 Speicherabbild vom Flash in die Hex-Datei und beim erneuten wiedereinspielen wird dieses 1:1 Speicherabbild auch wieder in den Flash geschrieben. Unabhängig davon, was der Speicherinhalt tatsächlich darstellt.
Samuel P. schrieb: > Ja, in der Datei sind 1025 Zeilen. Ich war nur verwundert, da wenn ich > eine .hex erstelle diese immer sehr viel kleiner ist. Dann guck dir mal die heruntergezogene Datei an. Der Zeileninhalt wird stellenweise ausgesprochen langweilig sein. Außer der Adresse und der Prüfsumme werden die Zeilen über die ungenutzen Bereiche des Flash idenisch sein. Hier noch ein bisschen Lesestoff http://de.wikipedia.org/wiki/Intel_HEX
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.