groesse flash = groese der hex file

Gast
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.
Gast
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.
Gast
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?
Gast
> 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.
Gast
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!?
Gast
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.
Angehängte Dateien:
Gast
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.
Gast
> 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.
Gast
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)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.