mikrocontroller.net

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


Autor: Johann D. (khs)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hex2bin suchen.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Johann D. (khs)
Datum:

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

Autor: Alf Sch (alfsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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

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

Autor: Johann D. (khs)
Datum:

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

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

Bewertung
0 lesenswert
nicht 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):
objcopy -I ihex -O binary <inputfile> <outputfile>

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: blickwinkelkanone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Srecord ist es aber auch ganz einfach:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Johann D. (khs)
Datum:

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

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.