Verständnisfrage hex Datei & Flash Programm Speicher

Gast #448839
Lesenswert?

Hi!

Mal eine ganz kurze Frage: Spiegelt die Größe des Flash Programm 
Speichers eines Mikrocontrollers die maximale Größe der kompilierten HEX 
Datei dar??? Sprich also wenn mein Maschinencode etwa 50 kB groß ist und 
mein Flash nur 32kB hat dann dürfte ich Schwierigkeiten bekommen, oder?!

Gruß
Tim
Gast #448844
Lesenswert?

Die Hex-Datei ist nicht im binären Format.Alle benötigten Daten und 
Codes stehen als Hexadezimalwerte in lesbarer Form da.

Beispiel:

:12A32FC54C12.......

Dadurch kann man aus der Grösse des Hexfiles nicht auf die Grösse des 
Programms später im Flash schliessen.Dafür gibt meistens der 
Compiler/Linker eine kleine Info beim erstellen des Hexfiles 
aus,wieviele Bytes Code erzeugt wurden.Und die müssen natürlich ins 
Flash passen.
Gast #449038
Lesenswert?

> Das ist richtig allerdings war ja zunächst die Frage ob es einen
> Zusammenhang zwischen hex und Speicherbedarf gibt....

Zumindest bei dem Hex-Format, das es bei den AVRs gibt, dürfte das 
Hex-File meist so grob 2,5 bis 3 mal so groß wie das eigentliche 
Programm sein, denn jedes Byte wird in Form von zwei Hexziffern 
gespeichert, dazu kommt noch einiges an Overhead durch Adressangaben und 
Checksummen. Allerdings ist das vermutlich nicht zuverlässig.

> avr-size jammert übrigens weil er das Format nicht kennt... :-(

Hmm, also benutzen die ein anderes Hex-Format?
Gast #468378
Lesenswert?

Habe folgendes Kommando ausgeführt:

> "avr-size" --target=ihex -t -B main.hex

und dabei diese Daten erhalten.
Kann mir jemand bitte beschreiben was das genau heißt?

   text     data      bss      dec      hex  filename
      0     1900        0     1900      76c  main.hex
      0     1900        0     1900      76c  (TOTALS)

> Process Exit Code: 0
> Time Taken: 00:00

schöne Grüße
Gast #469569
Lesenswert?

Womit erzeugst Du denn nun das HEX-File?

Wenn du MPLAB/MPASM nimmst, liegt im gleichen Verzeichnis wie das 
HEX-File auch ein LST-File. Da steht alles drinnen. Ich meine sogar, in 
MPLAB wird nach dem Assemblieren das LST-File automatisch angezeigt oder 
zumindest ein Protokoll, in dem die Info auch steht.
Gast #469581
Lesenswert?

ansonsten kann man es auch "zu Fuss" am Hex-file erkenne.
Vorletzte Zeile des Hex-Files anschauen
z.B.:
:1003BE00F0E008951A930A930895099119910895FA
:00000001FF

:10 Anzahl der Datenbytes in dieser Zeile (16)
:03BE Startadresse für diese Datenbytes

Dementsprechend wird der Speicher bis 0x03CE beschrieben.
Kleine Tücke dabei: die einzelnen Datensätze müssen nicht unbedingt in 
streng steigender Form abgespeichert sein, also evtl. höchste 
Startadresse suchen.
Es gibt auch jede Menge Hex-Editoren, das sieht man das dann schön.

Aber eigentlich gibt jeder Assembler/Compiler die erzeugte Codegrösse 
aus, wie schon gesagt wurde.

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