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
Moin, einfach mal nach "Intel Hex Format" suchen. z.B. http://www.schulz-koengen.de/biblio/intelhex.htm
Für welchen Controller soll das sein? Wenns um den Aufbau einer Hex-Datei geht: http://www.mikrocontroller.net/forum/read-1-383639.html
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...
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.
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.
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.
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.
>>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.
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 Users Guide (DS33014J-page 28)
@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 !
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
@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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.