mikrocontroller.net

Forum: Compiler & IDEs Parser für binary / hex file gesucht


Autor: Thomas Matthes (mth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin auf der, bisher erfolglosen Suche nach einen Parser für Binary 
und/oder hex Dateien. Ich möchte gern Informationen aus diesen Dateien 
auslesen können, wie:
- Zuordungen der Funktionsnamen zu den entsprechenden Funktionsadressen
- Alignment
- ByteOrder
- Stack-Start-Adresse
- globale Variablen und deren Adresse

Hat jemand eventuell schon mal so ein Tool verwendet oder gesehen?

Vielen Dank, Gruß Thomas

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(F)LEX tut genau das.
FLEX findet sich - denke ich - bei den GCC-Tools.

Bernhard

Autor: Hans Fanic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

in bin/hex Dateien ist in den meißten Fällen das nicht mehr enthalten 
was Du suchst. Die werdn nur zum programmieren der Controller oder 
Eeproms benötigt. Debug Informationen werden meißt in anderen Dateien 
untergabracht zB. beim GNU-C in der elf Datei. Der Keil Compilerlegt 
eine AOMF/OMF Datei an wo die Informatioen zu finden sind.

Was erschwerend hinzukommt ist das viele Compiler dies auf seine "Art 
und Weise" macht.

Für GNU-C gibt es ein Tool das Dir die Elf Datei im KLartext ausgibt.

Hans

Autor: Thomas Pircher (tpircher) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich dachte auch zuerst dass der OP einen Parser-Generator sucht, und 
wollte ihm rpcgen oder (schlimmer) einen ASN.1 compiler aufschwatzen.

Ich denke aber er sucht eher einen ELF File Parser, so wie readelf. Das 
ist bei den GCC tools dabei, und ist meistens <platform>-readelf 
genannt, z.B.: avr-readelf, m68k-readelf etc.

Probier ein
avr-readelf -a program.elf

Weiters sind objdump, objcopy, nm etc. interessant.

Autor: Thomas Matthes (mth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für die Unterstützung

Ja, read-elf hilft mir weiter. Schade, dass die Informationen im bin und 
hex file nicht mehr vorhanden sind. Wahrscheinlich kann ich in diesem 
Fall die Symbole nur noch aus den Objektdateien entnehmen. Mit großer 
Wahrscheinlichkeit sind diese aber auch wieder von Compiler zu Compiler 
unterschiedlich und wenn überhaupt sichtbar. Genau deshalb wollte ich an 
einer Stelle ansetzen, wo mir ein Standard-Format wie bin oder hex eine 
einheitliche Basis liefert.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die obj hast, dann gibt es Sachen wie nm und objdump
(bzw. avr-nm und avr-objdump).

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
binary und intel hex haben halt keinerlei Symbole mehr, sondern sie
bilden aus einer Objektdatei nur noch den reinen Inhalt ab.
Information, die nicht da ist, kannst du halt auch nicht darstellen.

ELF ist ein Standardformat.  binary ist gar kein "Format", sondern
einfach nur der Bytestrom des Inhalts, und intel hex ist lediglich
ein de-facto-Standard, für den erst nachträglich formale Spezifikationen
geschrieben worden sind.

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.