HEX File auslesen

Gast #354306
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
Gast #354310
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.
Gast #354312
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.
Gast #354314
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.
Persönliche Seite #354315
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.
Gast #354316
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)
Gast #354317
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 !
Gast #354318
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
Gast #354319
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.
Gast #354321
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren