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
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
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
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.
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 ...
>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
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.
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
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).
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
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.
...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
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.
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.
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.
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.
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.
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