Forum: Mikrocontroller und Digitale Elektronik Intel-Hex-Format Editor


von TurboPosty (Gast)


Lesenswert?

Hallo.

Ich bin auf der suche nach einem Intel-Hex-Format Editor mit dem man 
kompilierte Hex-File editieren kann ohne den nicht benutzten 
Datenbereich mit FF aufzufüllen.

Der Compiler erstellt eine Intel-Hex Datei nur mit dem Datenbereich der 
auch wirklich benutzt wird. Dabei kann auch von Datenbereich zu 
Datenbereich hin und her verwiesen werden.

Der Editor sollte den Datenbereich nach Adressenbereich anzeigen.
Der nicht benutzte Bereich der auch nicht in der Intel-Hex Datei 
enthalten ist sollte nicht angezeigt werden.

Nun sollte es auch möglich sein den angezeigten Datenbereich zu löschen 
bzw. ggf. zu erweitern.
Die Ausgabe sollte wieder im Intel-Hex-Format mit nur den benutzten 
Datenbereich (ohne ihn mit FF aufzufüllen).

Gibt es einen solchen Editor?


TurboPosty

von uwe (Gast)


Lesenswert?

hex2bin -> Hexeditor -> bin2hex

von Mark B. (markbrandis)


Lesenswert?


von Moby (Gast)


Lesenswert?

Intel Hex Format ist gemeint!

von TurboPosty (Gast)


Lesenswert?

Wird so nicht funktionieren!
Die reinen notwendigen Daten werden mit vielen FF aufgefüllt!

von Georg (Gast)


Lesenswert?

TurboPosty schrieb:
> Der nicht benutzte Bereich der auch nicht in der Intel-Hex Datei
> enthalten ist sollte nicht angezeigt werden.

Das geht meines Wissens mit keinem Editor, ist auch nicht der Sinn der 
Sache - das Hexfile wird geladen (ev. mehrere), aber angezeigt wird der 
Speicherinhalt.

Georg

von Erik L. (erikl)


Lesenswert?

Hallo TurboPosty,

mir ist nicht ganz klar, was du vor hast, aber möglicherweise hilft Dir 
die srecord-Toolkette http://srecord.sourceforge.net/ weiter.
Ist zwar keine grafische Oberfläche, es kann Dir aber Informationen 
(srec_info) über die im Intel Hex beschriebenen Speicherbereiche 
ausgeben.
Auuserdem kannst Du viele Manipulationen vornehmen (srec_cat), dazu 
gehoert auch Speicherbereiche aus dem File entfernen oder mit etwas 
füllen.
Syntax etwas gewöhnungbedürftig ...
Es kann auch viele andere Formate statt Intel Hex .

Gruß Erik

von TurboPosty (Gast)


Lesenswert?

Georg schrieb:
>> Der nicht benutzte Bereich der auch nicht in der Intel-Hex Datei
>> enthalten ist sollte nicht angezeigt werden.
>
> Das geht meines Wissens mit keinem Editor, ist auch nicht der Sinn der
> Sache

Man kann so gezielt kompilierte C-Routinen kopieren und diese zum 
Grundprogramm, das sich im Mikrocontroller befindet, hinzukopieren!

Alternativ wäre auch ein Intel-Hex-Format Converter, was die Daten nach 
dem Adressbereich sortiert, denkbar.

von Erik L. (erikl)


Lesenswert?

TurboPosty schrieb:
> Alternativ wäre auch ein Intel-Hex-Format Converter, was die Daten nach
> dem Adressbereich sortiert, denkbar.

es wird irgenwie nicht klarer was Du willst, in meinen IntelHex Files 
sind die Daten nach Adressen sortiert ...

von Dampfnilp (Gast)


Lesenswert?

Aufgrund der Hexfile spezifikationen kann man sich jederzeit einen 
solchen Editor zusammenkloppen

von Paul2 (Gast)


Lesenswert?

>ohne den nicht benutzten
>Datenbereich mit FF aufzufüllen.

Schwierig.
Was willst du denn erreichen ?

Mit dem bereits genannten SRECORD kann man das höchstwahrscheinlich 
machen.
Syntax dafür ist aber schwierig bis kompliziert.
Und: SRecord ist kein "Editor" wie du evtl. meinst (z.B. WINHEX).

Evtl. einfacher: SRECORD erlaubt es auch, aus "grossen" .HEX Dateien 
alle zusammenhängenden "FF" wieder zu entfernen. Dabei gibt man vor, 
wieviele "FF" mindestens hintereinander sein müssen damit sie entfernt 
werden.


Zum Beitrag von  Erik L. (erikl) sage ich:
>es wird irgenwie nicht klarer was Du willst,
Zustimmung

>in meinen IntelHex Files
>sind die Daten nach Adressen sortiert ...
Nein! Das ist nicht (zwingend) bzw. generell so.
Es gibt auch Linker die lustig unsortierte Adressbereiche nacheinander 
in die .HEX schreiben; ggf. mit 'ner Option kann man (aufsteigend) 
sortierte erzwingen.

Gruss

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

TurboPosty schrieb:
> Man kann so gezielt kompilierte C-Routinen kopieren und diese zum
> Grundprogramm, das sich im Mikrocontroller befindet, hinzukopieren!

Da kann man zwar irgendwas "hinzukopieren", aber solange Dein Controller 
und/oder Compiler keinen vollständig relokatiblen Code kennt bzw. 
erzeugen kann, ist das ziemlich sinnlos.

von Purzel H. (hacky)


Lesenswert?

Die ungeloeschte form eines Flash bytes ist eben 0xFF. Wenn man's auf 
0x00 geschrieben hat kann man nur noch die ganze Seite loeschen.
Deswegen ist uninitialisierter Code 0xFF

von Soul E. (Gast)


Lesenswert?

Georg schrieb:

> Das geht meines Wissens mit keinem Editor, ist auch nicht der Sinn der
> Sache - das Hexfile wird geladen (ev. mehrere), aber angezeigt wird der
> Speicherinhalt.

Es müsste relativ einfach möglich sein, ein Kommandozeilentool zu 
schreiben, dass alle "leeren" Records aus einem gegebenen Hexfile 
löscht. Also die, welche nur aus 0xFF bzw 0x00 bestehen (je nachdem was 
der "gelöschte" Zustand des Speichers ist).

von Erich (Gast)


Lesenswert?

@soul eye (souleye)
Gibt's doch schon, siehe mein obiger Beitrag 
Beitrag "Re: Intel-Hex-Format Editor"

von Georg (Gast)


Lesenswert?

soul eye schrieb:
> Es müsste relativ einfach möglich sein, ein Kommandozeilentool zu
> schreiben, dass alle "leeren" Records aus einem gegebenen Hexfile
> löscht.

Das ist überflüssig, laut TO stehen die im Hexfile ja garnicht drin. Was 
er möchte: in der Anzeige sollen sie auch nicht auftauchen (ziemlicher 
Unsinn, wie soll die Anzeige denn aussehen - jedenfalls nicht so wie bei 
einem üblichen HexEditor).

Nebenbei bemerkt ist das als Lösung sowieso wenig sinnvoll, so ein Tool 
kann nicht unterscheiden, ob es sich um ungenutzten Speicher handelt 
oder um mit 00 oder FF initialisierte Variablen.

Georg

von Günter X. (kolle)


Lesenswert?

warum ist es Unsinn wenn etwas sinnlosen nicht auftauchen soll?

Ich kann den TO gut verstehen, wozu Leerzeilen in eine Datei schreiben ?

Wenn bei einem X KB großen Flash nur ein paar zig bytes benutzt werden 
lang es doch völlig auch nur diese im file zu speichern.

Schließlich bietet das Format doch (genau dafür) die Adressierung an.

Allerdings habe ich noch keinen Editor gesucht/gefunden der das kann.

von Holm T. (Gast)


Lesenswert?

...weil ein Ihex File auch mit 0 initialisierte Felder im RAM enthalten 
kann, Dein Tool müßte dann wissen das es solche sind auch wo sie sind um 
die Initialisierung bei zu behalten.

Gruß,

Holm

von Olaf (Gast)


Lesenswert?

> Gibt es einen solchen Editor?

Nicht das ich das schonmal gebraucht haette, aber ich wuerde wetten das 
Emacs das kann.

Olaf

von Pandur S. (jetztnicht)


Lesenswert?

Sonst ist so ein editor eher schnell selbst geschrieben. Ein paar 
stunden...
Man muss such erst mal die definitien eines intel hex files suchen, der 
Rest ist einfach.

: Bearbeitet durch User
von Okto Bär (Gast)


Lesenswert?

Ich habe einige Programme getestet, um ein PIC hex nachvollziehen zu 
können:

https://mh-nexus.de/de/hxd/
  Kann leider nur Export, die nächste Version soll es können .. aber 
wann sie kommt?

https://sourceforge.net/projects/hexplorer/
  Keine Expansion, d.h. höhere Adressen werden einfach ans Ende gehängt
  Fürchterliche Schriftart
  Keine Spaltenüberschriften

https://github.com/strobejb/HexEdit
  Keine Expansion, d.h. höhere Adressen werden einfach ans Ende gehängt
  Keine Spaltenüberschriften

https://www.x-ways.net/winhex/index-d.html
  Macht es richtig
  Hex laden und dann edit > convert Intel Hex


Wie schon geschrieben geht es natürlich auch mit hex2bin plus Hex-Editor

Python: https://github.com/bialix/intelhex

win32, v 1.02: http://gnuwin32.sourceforge.net/packages/hex2bin.htm
win64, v 2.3 : https://sourceforge.net/projects/hex2bin/files/hex2bin/

bin2hex finde ich nicht.

Viel Erfolg.

von Jim M. (turboj)


Lesenswert?

Okto Bär schrieb:
> bin2hex finde ich nicht.

Äh, das ist im objcopy aus Binutils schon mit drin.

Binutils haben IIRC alle außer Windoof per default dabei, dort wäre das 
u.a. im Cygwin oder Mingw.

von Peter D. (peda)


Lesenswert?

TurboPosty schrieb:
> Man kann so gezielt kompilierte C-Routinen kopieren und diese zum
> Grundprogramm, das sich im Mikrocontroller befindet, hinzukopieren!

Warum sollte man den Flash mit totem Code füllen?
Ohne Linker lassen sich Code und Daten nicht plazieren und aufrufen.

von Erich (Gast)


Lesenswert?

Peter D. schrieb:
> TurboPosty schrieb:
>> Man kann so gezielt kompilierte C-Routinen kopieren und diese zum
>> Grundprogramm, das sich im Mikrocontroller befindet, hinzukopieren!
>
> Warum sollte man den Flash mit totem Code füllen?
> Ohne Linker lassen sich Code und Daten nicht plazieren und aufrufen.

Vielleich weil man das früher ...
>>>Datum: 19.08.2014 21:02
so gemacht hat.

von Okto Bär (Gast)


Lesenswert?

Okto Bär schrieb:
> https://github.com/strobejb/HexEdit
>   Keine Expansion, d.h. höhere Adressen werden einfach ans Ende gehängt

Geht doch, aber man muss beim Import "Use Address Information when 
pasting Data" wählen.

von Jannyboy (Gast)


Lesenswert?

TurboPosty schrieb:
> Ich bin auf der suche nach einem Intel-Hex-Format Editor mit dem man
> kompilierte Hex-File editieren kann ohne den nicht benutzten
> Datenbereich mit FF aufzufüllen.

Ist zwar kein reines Editor, man kann dafür die Programmersoftware von 
Asix nutzen. Läuft auch ohne Programmer.
http://asix.net/dwnld_up.htm

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.