Forum: Mikrocontroller und Digitale Elektronik Intel Hex-File-Format umwandeln


von Johann D. (khs)


Lesenswert?

Der Mide51 bzw. Asem51 erzeugt das Hex-File im Intel-Format.
Wie kann ich auf das "richtige", wo außer
dem Maschinensprachecode nichts anderes enthalten ist, kommen?
Gibt es dafür ein Programm, oder müßte ich das selber programmieren?

Gruß
Hans

von Falk B. (falk)


Lesenswert?

@  Johann D. (khs)

>Der Mide51 bzw. Asem51 erzeugt das Hex-File im Intel-Format.

Und wo ist das Problem? Intel Hexfiles sind reiner Maschinencode, nur 
halt ASCII kodiert. Jedes Brennprogramm schreibt die Daten direkt in den 
EEPROM/Flash. Fertig.

>Wie kann ich auf das "richtige", wo außer
>dem Maschinensprachecode nichts anderes enthalten ist, kommen?

Hast du schon.

>Gibt es dafür ein Programm, oder müßte ich das selber programmieren?

Nö.

MFG
Falk

von holger (Gast)


Lesenswert?

hex2bin suchen.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?


von Johann D. (khs)


Lesenswert?

Danke für die Antworten.
Der Grund für die Anfrage ist, daß es Geräte gab und immer noch gibt,
die mit einem 80C31, bzw. 80C32 bestückt sind und die Software im
separaten Eprom ist.
Unter anderem habe ich von einem Nachbarn ein älteres Fax-Speichergerät
erhalten, mit dem man Faxe über den Drucker oder PC empfing.
Das liese sich auch ev. für andere Vorhaben verwenden, ohne daran löten
zu müssen, nur indem man das gesockelte Rom austauscht.
Es hat schon mal 2 serielle Eingänge, einen paralellen Ein- und
Ausgang. Außerdem ein LCD-Display und noch 4 MB Ram.
Dazu braucht man natürlich einen Eprommer, und den habe ich vor über
20 Jahren speziell für einen Casio Taschenrechner zusammengebaut.
Die Software mußte ich dazu natürlich auch selbst programmieren, ebenso
den Assembler für die 8048er, und da wäre bei 40 KB Ram schon aus
Platzgründen kein Intel Format angebracht gewesen.
Habe keine Ahnung, ob es das damals auch schon gab.
Nachdem ich auf das Hterm aufmerksam wurde, kann ich jetzt auch PC und
Taschenrechner miteinander verbinden, doch um über das Intel Format
ein Eprom zu programmieren, müßte ich mich erst wieder hinsetzen und
eine Umwandlungssoftware schreiben.

Darum danke nochmal an Marcus und Holger für die Hinweise.
Habe schon mal auf die SRecord-Seite geschaut, wenn es für Win Me
auch nichts gibt, so wie ich verstanden habe gibt es das auch für
Linux, das ich auch habe.
Bei mehr Zeit werde ich auch noch mal nach hex2bin suchen.

Gruß
Hans

von Alf S. (alfsch)


Lesenswert?


von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Die GNU binutils (speziell: objcopy) können auch Intel-Hex-Dateien
einlesen und Binärdateien ausgeben.

von Johann D. (khs)


Lesenswert?

Habe gleich das hex2bin.exe runtergeladen und versucht es zu testen.
Nachdem ich das hex2bin in den Ordner Windows kopiert hatte, konnte ich 
es
nach dem C:/WINDOWS> schon starten, es kam aber die Fehlermeldung,
CAN NOT OPEN INPUT FILE test.hex
Kenne mich mit MS-DOS wenig aus.
Das test.hex File war im Ordner Eigene Dateien, spielt Groß- Klein-
schreibung eine Rolle, oder wie müßte der richtige Befehl aussehen?

Auf dem Linux-PC habe ich zur Zeit ein Knoppix zum testen, warte noch
auf das neue Debian. Auf dem Knoppix fand ich zwar binutils, konnte es
aber nicht ausführen.

Gruß
Hans

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann D. schrieb:
> Auf dem Knoppix fand ich zwar binutils, konnte es
> aber nicht ausführen.

"binutils" ist auch ein Paket, kein Programm.  Das zugehörige
Programm heißt "objcopy", und dafür sollte es ein Manual geben,
das man mit "man objcopy" aufrufen kann.

Der Aufruf ist denkbar einfach (in deinem Fall):
1
objcopy -I ihex -O binary <inputfile> <outputfile>

von Karl H. (kbuchegg)


Lesenswert?

Johann D. schrieb:

> Das test.hex File war im Ordner Eigene Dateien, spielt Groß- Klein-
> schreibung eine Rolle, oder wie müßte der richtige Befehl aussehen?

Wenn man mit etwas älteren Utilities, speziell Command Line Utilities 
arbeitet, ist es immer unklug
* in Dateinamen Leerzeichen zu haben. Auf einer Command Line ist ein
  Leerzeichen normalerweise ein Trenner von Argumenten.
* in Dateinamen Sonderzeichen oder Umlaute zu haben

Am einfachsten und besten fährt man immer mit der Regel

"Der 7-Bit ASCII Code wurde uns von Gott gegeben, alles andere ist 
fehlerhaftes Menschenwerk"

Sprich: Die Buchstaben 'a' bis 'z' ('A' bis 'Z'), Ziffern ('0' bis '9'), 
ein paar Sonderzeichen (wie '_' '-' '+' '#' ) sind erlaubt, alles andere 
ist eine Ausgeburt des Teufels.

Oh. Und wenn es sich um ein wirklich altes DOS-Programm handelt, dann 
ist ein Dateiname länger als 8 Zeichen (+3 Zeichen Extension) ein NoNo. 
Aber diese Programme sind schon lange am aussterbenden Ast.


> nach dem C:/WINDOWS> schon starten

Der Prompt zeigt dir an, dass dein aktives Verzeichnis zur Zeit auf 
c:\windows liegt.
Mit cd (change directory) musst du erst mal auf das Verzeichnis 
navigieren, auf dem dein Hex-File liegt, oder den kompletten 
Verzeichnisnamen des Hex-Files angeben

C:\WINDOWS>  cd ..

(eine Verzeichnis hierarchie hinaufmanövrieren)

C:\>  cd temp

(in das temp Verzeichnis hinein gehen)

C:\TEMP> dir

(dort mal ein Inhaltsverzeichnis anfordern um nachzusehen, ob das File 
test.hex auch wirklich da ist)

C:\TEMP> hex2bin test.hex

(hex2bin auf test.hex loslassen)

Oft haben diese Utilities auch eine Hilfe eingebaut. Die kriegt man 
meistens, wenn man
* das Utility ohne Argumente aufruft
* oder /? oder /h oder -h oder -? oder Variationen davon benutzt

C:\TEMP hex2bin /h

(keine Ahnung ob /h richtig ist, aber wenn ja, dann wird dir hier 
hex2bin ausgeben, was es alles kann)

von blickwinkelkanone (Gast)


Lesenswert?

Mit Srecord ist es aber auch ganz einfach:

srec_cat hexfile.hex -Intel -o binfile.bin -Binary

von Peter D. (peda)


Lesenswert?

Johann D. schrieb:

> nach dem C:/WINDOWS> schon starten, es kam aber die Fehlermeldung,
> CAN NOT OPEN INPUT FILE test.hex
> Kenne mich mit MS-DOS wenig aus.
> Das test.hex File war im Ordner Eigene Dateien

Und woher soll das hex2bin das wissen?
Soll es etwa die ganze Festplatte und alle CDs, DVDs, USB-Sticks 
durchsuchen?
Das könnte ja Stunden dauern.

Du mußt Programme entweder in dem Verzeichnis ausführen, wo die Datei 
liegt oder den Pfad zu dieser Datei mit angeben.

Auch Windows-Programme finden keine Dateien, die irgendwo anders 
rumliegen.
Und oftmals gibt es auch mehrere Dateien gleichen Namens.


Peter

von Johann D. (khs)


Lesenswert?

Danke für die ausführlichen Antworten.
Nachdem ich das test.hex ebenfalls in den WINDOWS-Ordner kopiert hatte,
hat es schon mal geklappt.
Das mit den Leerstellen und Sonderzeichen im Dateinamen war mir schon 
klar.
Inzwischen habe ich auch schon mit cd in den Ordner MyWorks wechseln
können, weil die Dateien-Suche da schneller geht.
Daß Groß- Kleinschreibung bei MS-DOS keine Rolle spielt habe ich jetzt 
auch
bemerkt, ebenso, daß der Dateiname nicht länger als 8 Zeichen sein darf.

Habe den Ordner MyWorks gewählt, weil ich mir nicht vorstellen kann,
wie der Ordner Eigene Dateien wegen der Leerstelle und der Länge mit
MS-DOS bedient werden könnte.

Das hex2bin dürfte damit für mich ausreichend sein, den passenden 
Download
vom SRecord für Win Me, bzw. Win 98 habe ich nicht gleich gefunden.
Da ich das Knoppix 6.1 nicht weiter einrichte, habe ich die
Linuxmöglichkeiten noch nicht ausprobiert, da wäre das SRecord für 
Debian
ebenfalls möglich.
Das man objcopy habe ich schon gefunden, so daß es auch laufen müßte.
So oder so, solange der Assembler nur auf dem Windows ist, müßte ich zum
Umwandeln jedes mal in den anderen PC wechseln, was doch wieder
umständlicher ist.

Gruß
Hans

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.