Forum: Mikrocontroller und Digitale Elektronik groesse flash = groese der hex file


von iswald (Gast)


Lesenswert?

Also angenommen zB ich hab einen Mega32, dann hat der 32KByte flash
speicher. Im Flash wird ja via ISP der Prgrammcode abgelegt in Form
einer *.hex File.
Darf nun bei oben gen. uC die Hex Datei max. 32KByte gross sein oder wo
sind da die Limits?

von Benedikt (Gast)


Lesenswert?

Die Hex Datei ist mehr als doppelt so groß wie der Flash speicher, da
die Daten eben als Hex Code und nicht Binär abgelegt werden.
Ganz grob kann man sagen: Die Hex Datei ist 2-2,5 mal so groß, wie die
wirklichen Daten.

von Dave W. (Gast)


Lesenswert?

Das wäre recht logisch :)

Gehe bei der Größe aber nicht nach der Dateigröße der (Intel-)Hexdatei,
denn da ist noch etwas zusätzlicher Stuff zu den Mnemonics.

Im Spezialfall Bootloader darf es nicht ganz so groß sein.

von iswald (Gast)


Lesenswert?

d.h. heisst meine hex Datei darf 64-80 Kbyte gross werden?
Kann man das nicht irgendwie genauer rauskriegen?

wieso wird denn das prog eig als hex datei abgelegt?
wenn man nun die groesse der binaer datei haette waere das dann genau
entsprechend die groesse des flashspeichers also 32KB?

von Rolf Magnus (Gast)


Lesenswert?

> d.h. heisst meine hex Datei darf 64-80 Kbyte gross werden?

Es heißt, daß es dir egal sein sollte, wie groß die Hex-Datei ist.
Wichtig ist, wie groß der Maschinencode ist.

> Kann man das nicht irgendwie genauer rauskriegen?

Du kannst einfach avr-size benutzen, um dir die Größe des Code in Bytes
anzeigen zu lassen.

von iswald (Gast)


Lesenswert?

avr-size main.o
text    data     bss     dec     hex filename
4985      21      41    5047    13b7 main.o


bzw im non berkely format:

iswald@ewald:~> avr-size -A main.o
main.o  :
section          size   addr
.text            3484      0
.data              21      0
.bss               41      0
.stab            7752      0
.stabstr         4186      0
.progmem.data    1501      0
Total           16985


heist das jetzt dass mein uC 16985 Byte Flash braucht um den Code
aufnehmen zu koennen!?

von Thomas O. (Gast)


Angehängte Dateien:

Lesenswert?

also ich habe einen hex2bin converter falls es dir hilft, damit musste
ich früher meine hexfiles wandeln um sie mit einem Dos commandozeilen
Programm auf den AVR zu flashen.

von Ronny Schulz (Gast)


Lesenswert?

Was ist den reell sdas Problem. Das die Datei binär vorliegen soll oder
warum die Datei so groß ist. Wenn Du sie binär brauchst, kannst Du sie
vom Linker so erstellen lassen. Ich mache das auch so bei Dateien, die
vom Bootloader geflasht werden, da mein Bootloader Binärdateien liest
und ich keine Lust hatte das Intel-Hex-Protokoll mit einzubinden. Binär
ist einfach leichter, wenn man hintereinander flashen will. Mit Hex kann
man aber auf Grund der Struktur an verschiedenen Adressen im Flash
schreiben.

von Rolf Magnus (Gast)


Lesenswert?

> heist das jetzt dass mein uC 16985 Byte Flash braucht um den Code
> aufnehmen zu koennen!?

Nein. Es heißt, daß alle Segmente zusammen inklusive z.B.
Debug-Informationen (stabs) soviel brauchen. Wenn du avr-size mit dem
hex-File aufrufst, gibt er dir nur noch die Flash-Größe an, weil das
als einziges im hex-File übrig bleibt.

von Gerhard Meyer Vorfelder (Gast)


Lesenswert?

avr-size main.hex
   text    data     bss     dec     hex filename
      0    5100       0    5100    13ec main.hex

Sprich mein uC brauch einen Flashspeicher von 5100 Byte um das Programm
aufnehmen zu koennen? (der Mega16 hat ja zB 16 000 Byte)

von Unbekannter (Gast)


Lesenswert?

Ja und Nein.

Wenn keine "Löcher" in der Hex-Datei sind, also alle Daten
sequentiell ins Flash kommen, dann Ja.

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.