mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HEX File auslesen


Autor: Peter Zirpel (Gast)
Datum:

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

Autor: programinator (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

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

Autor: Xenu (Gast)
Datum:

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

Autor: Peter Zirpel (Gast)
Datum:

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

Autor: tastendrücker (Gast)
Datum:

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

Autor: Heinz (Gast)
Datum:

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

Autor: Klaus (Gast)
Datum:

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

Autor: Peter Zirpel (Gast)
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: tastendrücker (Gast)
Datum:

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

Autor: Klaus (Gast)
Datum:

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

Autor: Sebastian__ (Gast)
Datum:

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

Autor: tastendrücker (Gast)
Datum:

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

Autor: ... (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:

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

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Programming Specifications für die PIC's kannst du bei Microchip
runterladen

http://www.microchip.com/stellent/idcplg?IdcServic...

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.