Wyjaśnienie rekordów w formacie Intel HEX: co oznaczają typy 02-05?
Intel hex file format
From: "kicak" <kicak_at_nospam_mops.opa-row.pl>
Subject: Intel hex file format
Date: Sun, 9 Sep 2001 20:53:28 +0200
Mam pytanie dotyczace formatu intel hex.
Jak wiadomo za polem zawierajacym 16 bitowy adres pierwszego bajtu w linii
znajduje
sie pole typu rekordu (Record Type). Pole to moze przyjmowac jedno z
ponizszych wartosci:
'00' Data Record
'01' End of File Record
'02' Extended Segment Address Record
'03' Start Segment Address Record
'04' Extended Linear Address Record
'05' Start Linear Address Record
Co do pierwszych dwoch wartosci 00 i 01 - nie ma problemu.
Niestety nie wiem co oznaczaja pozostale 02...05. Moze ktos moglby mnie
oswiecic i podac jakies przyklady kiedy te wartosi moga pojawic sie w pliku
*.hex i wytlumaczyc jakos po ludzku.
Za wszelka pomoc dzieki.
From: "Jerry" <jerry1111_at_nospam_wp.pl>
Subject: Re: Intel hex file format
Date: Mon, 10 Sep 2001 00:49:51 +0200
'00' Data Record
'01' End of File Record
'02' Extended Segment Address Record
'03' Start Segment Address Record
'04' Extended Linear Address Record
'05' Start Linear Address Record
Co do pierwszych dwoch wartosci 00 i 01 - nie ma problemu.
Niestety nie wiem co oznaczaja pozostale 02...05. Moze ktos moglby mnie
oswiecic i podac jakies przyklady kiedy te wartosi moga pojawic sie w
pliku
*.hex i wytlumaczyc jakos po ludzku.
Za wszelka pomoc dzieki.
To przykladowy plik generowany w intelhex (tylko ze nie pamietam czy lako
32bit linear
czy jako segment- a w tym kompie akurat nie mam kompilatora)
Program siedzi w pamieci od 0xe00000, wektory przerwan sa od 0xffff00
A ... to wyciety kod (nie ma tam zadnych innych rekordow oprocz 00)
020000040000FA --- te rekordy to nie wiem na jaka cholere, ale
zawsze cos takiego
020000040020DA
020000040000FA
020000040020DA
0200000400E01A
020000040000FA
0200000400E01A
020000040000FA
0200000400FFFB --to sa bity adresu 24..16, czyli w tym przypadku do
adresu 0xFF0000
04FF00003ADEE00005 -- a tutaj wektor przerwan wpisujemy pod adresem
0xffff00
0200000400E01A --a tu bity 24..16 do adresu 0xe00000
10DE3A000607086E00086FB10898E008997F0892F3 - to siedzi pod adresem
0xe0de3a
...
10D66400FFFFFBD5EFFFFFFFFFFFC3DBDBC3FFFFC4
020000040020DA -- i znowu nie wiem po jaka cholere to siedzi
0200000400E01A
04000000A8D8E0009C -- to jest pod adresem 0xe00000
1010A800170200073E3CA7268F0C21BE0141A72648
...
08DA8C0072616D753F3F3F0020
0200000400FFFB
04FF8800A810E000DD
020000040020DA
0200000400E01A
04000400BCD8E00084
101FFC002CB7020000973F1400690700000097619E
...
08246C00062122680221230E63
0200000400FFFB
04FF5800DC21E000C8
020000040020DA
0200000400E01A
1024740008170008133F08163F0805000801FF0865
...
102C04009604210C1DA724E0876168E48F016168A4
082C1400C6EF635A5E0F0A00CF
10D8980030313233343536373839414243444546DE
020000040020DA
0200000400E01A
102C1C003E3A39BFF637465C002000BF04664608D2
...
102CFC00AF02263EAF0A24E250442026B6E8C9A80B
052D0C00EF605C5E0EAB
020000040020DA
0200000400E01A
102D140017013C06071D7E25E01D9427E00B0000EB
...
06DAF4003F3F203A28002C
0200000400FFFB
04FF0800492DE0009F
08FF2000142DE0008D2DE0001E
0200000400E01A
102DD4003E3C2B28BFD637BF08363EBF08363EBF21
...
1064D400E01D5E63E0AF01268E0321EF65C8055E13
0164E4000EA9
0200000400FFFB
04FF9400A362E00084
020000040020DA
0200000400E01A
1064E80017033ED2FE45203F03006306F22C4520E9
...
07DDFC00424C3D257520009B
0200000400FFFB
04FF8400E864E0004D
020000040020DA
0200000400E01A
0BDF6C003D1E1400EC8DD7F6E55D0EA5
...
05DE3400003F3F3F002C
020000040020DA
0200000400E01A
10714C003E3D382B3C3CD7F2D86E08440000803FC3
...
1074A40068F7EA8EED89DEA1D9885E595A5D5E0ED1
0400000500E0DE3AFF
00000001FF
Jak musialem napisac program na PC zeby to se przeczytal to po prostu z
rekordow typu 04 ladowalem
tel jeden bajt adresu do bitow 23...16 takiej zmiennej addr_offset i potem
dodawalem do tego adresy z rekordow 00
Uff, nawycinalem sie tego kodu, mam nadzieje ze pomoglem.
Jak cos jeszcze trza to pisz - w tygodniu bede mogl podeslac kawalek w C co
czyta ten intel hex
jerry
From: "Martin Walter" <usrpwalt_at_nospam_kki.net.pl>
Subject: Re: Intel hex file format
Date: Mon, 10 Sep 2001 19:52:21 +0200
| Co do pierwszych dwoch wartosci 00 i 01 - nie ma problemu.
| Niestety nie wiem co oznaczaja pozostale 02...05. Moze ktos moglby mnie
| oswiecic i podac jakies przyklady kiedy te wartosi moga pojawic sie w pliku
| *.hex i wytlumaczyc jakos po ludzku.
Jesli chcesz programować procesory 8'mio-bitowe to rekordy klasy 00 i 01
wystarczą. Opisują jednoznacznie położenie kodu w 64 KBajtowej przestrzeni adresowej.
Pozostałe typy rekordów dotyczą adresowania 32 bitowego.
Dokładny opis tego (rozszerzonego) formatu jest na serwerze Intela.
A opisy różnych ciekawych formatów znajdziesz na http://www.wotsit.org/
Polecam.
Martin Walter