Forum: Mikrocontroller und Digitale Elektronik Intel-HEX File Type (04)


von mourad e. (mourad_e)


Lesenswert?

Hi Leute,

kann mir jemand hilfen es zu verstehen wie das Type 04 funktioniert.
ich habe die Intel-Hex Dokumentation schon zig mal durch gelesen. alles 
schoon verstanden bloß der Type 04.



Es handelt sich um ein ARM-32 Bit, der mit (µVision Keil) programmiert 
wird.
also die Adressierung sollte im Prinzip 32 bit sein.
bei jeder Hex File sieht am Anfang so aus !

:020000040000FA
:10000000000200106D01000071010000730100008A
:100010007501000077010000790100000000000078
:100020000000000000000000000000007B01000054

danach habe ich in die Konfig vom  (µVision Keil) die startadresse wo
das Programme geschrieben wird geändert vom 0x000 auf 0x1000.

dann sieht das Hex File so aus :


:020000040000FA
:0402FC00FFFFFFFF02
:020000040000FA
:1010000068020010691100006D1100006F110000EE
:101010007111000073110000751100000000000044
:101020000000000000000000000000007711000038


so nun was tut der Type 04  in dem Fall ??

danke euch im Vorraus

von Max K. (makro)


Lesenswert?

guck mal hier, da steht ein bißchen was dazu ...

  http://de.wikipedia.org/wiki/Intel_HEX

von Karl H. (kbuchegg)


Lesenswert?

mourad e. schrieb:

> so nun was tut der Type 04  in dem Fall ??

nicht in dem Fall, immer.

Er sagt dir mit seinem Datenfeld, welches bei dir 0000 ist, dass du die 
16 Bit Adresse im Datenrecord, zb 0020 mit eben diesen im 04 Satz 
angegebenen 0000 ergänzen sollst um aus der 16 Bit Adresse 0020 die 32 
Bit Adresse 00000020 zu machen.

Wenn dort gestanden wäre
:020000040010FA
:1010000068020010691100006D1100006F110000EE

dann wäre die 32 Bit Speicheradresse, an der dieser Datensatz abzulegen 
ist:
  00101000

und der nächste Datensatz
:101010007111000073110000751100000000000044

soll im Speicher an die Adresse
  00101010

usw. usw.

einach die 2 Datenbytes vom 04 Datensatz nehmen und vor die im 00 
angegebene 2 Byte Startadresse hängen.

Das wars dann schon.

von mourad e. (mourad_e)


Lesenswert?

@Karl

zuerst möchte ich dir danken für die Erklärung,

nun fehlt mir leichte das zu verstehen. Außer die Formel, die ich noch 
nicht klar verstehe. !

(LBA+DRLO+DRI) Modulo 2^32


Wenn in einem Record steht :

:02  0000  04 0010 FA

also der ULBA = 0x0010 ist klar laut die Doku.

Die Adressermittlung der folgenden Type 00 Datensätze erfolgt laut der 
Formel :

> Dein Beispiel
>
>:020000040010FA
>: 10 1000 0068020010691100006D1100006F110000EE

also Die Adresse 00101000 = (LBA + DRLO + DRI) Mod 2^32


das einzige was ich von den ersten Record lesen kann ist doch die ULBA( 
also die höchste 2 Byte der 32 Adresse) 0x0010

dann habe ich mir gedacht die LBA werde von dem Programiere definiert, 
also angenommen die Adresse 0x2000.

was macht der Unterschied zwischen LBA und DRLO ??
oder sind die beide gleich ?

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.