Forum: Mikrocontroller und Digitale Elektronik HEX File auslesen


von Peter Zirpel (Gast)


Lesenswert?

Hi,

kann mir jemand erklären wie ich aus dieser Datei (HEX File) das
Programm auslesen kann?

:020000040000FA
:020000000828CE
:100010008316FF30850086018312050886000D28AF
:02400E00F93F78
:00000001FF

Gibt es da ein bestimmtes Schema wa in der ersten und 2ten Zeile stehn
muss?
und wie komme ich von diesen Werten zu:

 0000 2808

 0008 5683
 0009 30FF
 000A 0085
 000B 0186
 000C 1283

 000D 4805
 000E 0086
 000F 280D

In dieser Zeile steht ja alles drinne:
8316FF30850086018312050886000D28
Aber wenn man den ersten Befehl anschaut 5683 lautet er in der Zeile
8316? die 83 stimmt ja aber wieso wird die 56 zu einer 16?

und wo steht die Konfiguration?

Vielen dank für eure Hilfe

mfg Peter

von programinator (Gast)


Lesenswert?

Moin,
einfach mal nach "Intel Hex Format" suchen.
z.B. http://www.schulz-koengen.de/biblio/intelhex.htm

von johnny.m (Gast)


Lesenswert?

Für welchen Controller soll das sein?

Wenns um den Aufbau einer Hex-Datei geht:
http://www.mikrocontroller.net/forum/read-1-383639.html

von Xenu (Gast)


Lesenswert?

Eine gute Beschreibung des Intel-Hex-Dateiformats gibt es hier:

http://www.keil.com/support/docs/1584.htm


>und wo steht die Konfiguration?

Welche Konfiguration? Von was?
Mein Kristallkugel ist heute leider beschlagen...

von Peter Zirpel (Gast)


Lesenswert?

Ich möchte mir ein Brennprogramm selber schreiben mit VB.
Für einen Brenner der vorzugsweise PIC16F84 brennen soll.

Dafür muss ich aber wissen welche relevanten Daten ich aus dem HexFile
laden und umformen muss, um sie dann an den Brenner zu senden.

von tastendrücker (Gast)


Lesenswert?

Na ich würde mal sagen, du musst genau dieses HEX-File (so wie's ist)
senden.

von Heinz (Gast)


Lesenswert?

Wenn du dein Hex file mit ponyprog öffnest, kannst du die Daten ohne
zusätliche Bytes sehen. (crc,...)

Wenn du das File dann als .csm Datei speicherst, kann man die Daten
wesentlich leichter extrahieren.

von Klaus (Gast)


Lesenswert?

Um .HEX Dateien anzusehen kann man diese mit dem Programm WINHEX
(http://www.winhex.de/) in Binärdatei umwandeln.
  --> Bearbeiten --> Konvertieren
Kann auch Motorola-S und andere Formatumwandlungen.

von Peter Zirpel (Gast)


Lesenswert?

ja aber wie? ich habe jetzt z.B. in VB das MS Comm Control eingefügt
welches mit dem Befehl MSComm.output = xxx ein Datenwort bekommen soll.
Geht das, das ich dann einfach die komplette Datei an das CommControl
sende? ich weiß es ehrlichgesagt nicht. Ich dachte ich müsste jeden
befehl oder eine Befehlskette senden.

von Simon K. (simon) Benutzerseite


Lesenswert?

>>Na ich würde mal sagen, du musst genau dieses HEX-File (so wie's
ist)
senden.

Gut, dass du es nur sagst, und nicht machst.

@Peter:

Du musst jede Zeile in einen String einlesen. Anschließend musst du die
irrelevanten Daten rausholen (und ggf verarbeiten). Solange, bis du nur
noch die Datenbytes drin hast. So wie ich das sehe, wirst du auch noch
eine Hex-Dez Umwandlung brauchen.

von tastendrücker (Gast)


Lesenswert?

Selbstverständlich wird die HEX-Datei genau so an den Brenner gesendet.
Da gibt es keine irrelevanten Daten, die "rauszuholen" sind. Die
interpretation der Daten obliegt dem Brenner (Programmiergerät).

Beschreibung der HEX-Formate:
PIC Assembler/Linker/Librarian User’s Guide (DS33014J-page 28)

von Klaus (Gast)


Lesenswert?

@tastendrücker:
Bitte besser aufpassen !
Der Fragestelle möchte selbst ein Programmiergerät bauen.
Dazu will er wissen, welche Teile aus den .HEX Dateien die eigentlichen
Daten sind.
Klar, daß käufliche Programmiergeräte bzw. -Software das schon macht.

--> Doku lesen.
Ausser den Binärdaten (=Bytes) enthält der Hexcode auch noch die
Adressen wo diese Daten hingeschrieben werden sollen.
Jede Zeile enthält "ihre" Startadresse ; ausserdem auch eine
Prüfsumme.

Somit können "Lücken" von einer Zeile der .HEX Datei zur nächsten
auftreten. Üblicherweise werden somit "leere" Stellen im
Speicherbereich übersprungen. Leer bedeutet hier allerdings
"gelöscht", was dem Byte-Inhalt 0xFF entspricht !

von Sebastian__ (Gast)


Lesenswert?

Hallo,
ich habe auch noch eine Frage zu dieser Thematik.
Wenn ich das richtig verstanden habe kann man mit den Format nur Daten
im 16Bit raum, also 64Kb adressieren, wie wird das bei 512Kb oder 256Kb
gemacht.
Es git ja den Record Typ 02, erweiterter Adress-Record. Die adresse ist
0 und dann kommt in den Daten erst mal eine 32Bit adresse. Das soll aber
nicht festgelegt sein bzw. soll es unterschiede geben, wie machen das
die GCC Compiler für die größeren prozessoren? Also Mega 128, LPCxxxx
oder AT91xx mit mehr als 64Kb adressraum.

Sebastian

von tastendrücker (Gast)


Lesenswert?

@Klaus:
Ich habe aber gelesen, dass der Fragesteller nicht das
Programmiergerät, sondern die Software auf dem PC schreiben will.

> "Ich möchte mir ein Brennprogramm selber schreiben mit VB."

Und dann muss das Programmiergerät doch wissen, wo welche Daten
programmiert werden müssen. Also darf die Software doch keine Daten
"weglassen", sondern das komplette HEX-File an das Programmiergerät
übergeben.

von ... (Gast)


Lesenswert?

PIC16F84 -> nehme an MPLAB ist installiert.

MPLAB->Help->Topics->MPASM Assembler
Index->Hex Files

dort sind Intel Hex/Intel Split Hex und Intel Hex 32 beschrieben.

von Peter (Gast)


Lesenswert?

Ersteinmal danke für die vielen Antworten!

Also ein Programmiergerät ist schon vorhanden aber ein Selbstgebautes
von www.sprut.de der Brenner2. Ihn will ich als ausgangs Typ nutzen. In
dem Brenner2 befindet sich bereits ein PIC welches die von der RS232
eingelesenen Daten einliest und an den zubrennenden PIC weiter
schickt.
Eigentlich ist dieses HEX File auch schon vorhanden aber dies möchte
ich auch umschreiben und für mich optimieren und natürlich auf mein
Programm, welches ich am PC schreiben möchte, anpassen.

Nur leider kenn ich micht nicht aus wie das Senden der Daten zum Pic
aussieht. Damit weiß ich dann auch nicht genau was man alles aus dem
HEX File das zu brennen ist benötigt.

Ich weiß dass, der PIC zum Programmieren grundlegend 2 Leitungen
benötigt Clock und Data. Ich denke mir mal das erst die Data Leitung
ein Signal bekommen muss und mit der ansteigenden Flanke von Clock wird
dieser Zustand dann irgendwie in das PIC gebrannt, und so Stück für
Stück das Programm auf den PIC gebrannt.
Leider finde ich auch keine genaue Beschreibung über den PIC
Brennvorgang.

von tastendrücker (Gast)


Lesenswert?

Die Programming Specifications für die PIC's kannst du bei Microchip
runterladen

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1407

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.