www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage hex Datei & Flash Programm Speicher


Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um die echte Codegröße rauszubekommen, kann man avr-size benutzen.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du das etwas näher erklären bitte!

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Hex-Format ist z.B. hier ganz gut erklärt:

http://www.cs.net/lucid/intel.htm

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avr-size ist ja ganz nett, aber wie kann man das errechnen wenn man 
einen PIC Controller hat???

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke, avr-size dürfte es egal sein, für welchen Controller das 
Hex-File ist.
Übrigens: Du hättest auch vorher mal erwähnen können, um welchen 
Controller es eigentlich geht.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist richtig allerdings war ja zunächst die Frage ob es einen 
Zusammenhang zwischen hex und Speicherbedarf gibt....avr-size jammert 
übrigens weil er das Format nicht kennt... :-(

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich benutze avr-size, bzw das normale i386-gcc-size Programm für 
PIC-Hexfiles, kein Probem...

Aufruf mit:
avr-size --target=ihex -t -B xxx.ihx
bzw
size --target=ihex -t -B xxx.ihx

/Ernst

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du das Programm mit MPLAB geschrieben hast, mußt ud dir nach dem 
Übersetzen nur das .lst File ansehen. Da steht am ende der 
Speicherbedarf drin.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Mike: Muss man da irgendwas einstellen daß er diese Datei erstellt???? 
Nach dem Kompilieren kann ich diese Datei nirgends finden...

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicht das ich wüßte.

Ich erstell einfach ein Projekt mit den benötigten Dateien
und nach dem compilieren liegt die Datei im selben Ordner wie das .hex 
File.
Dabei hat sie den gleichen Namen, der Unterschied ist nur, das die 
Endung halt lst lautet.

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es keinen der sich da auskennt?

Autor: Marco S. (masterof)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und mal in die doc geschaut von avr-gcc

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.