Intel HEX
Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14. joulukuuta 2017 tarkistetusta
versiosta . tarkastukset vaativat
23 muokkausta .
Intel HEX on tiedostomuoto, joka on suunniteltu esittämään mielivaltaisia binääritietoja tekstimuodossa. Historiallisista syistä se on de facto standardi erilaisten muistilla varustettujen mikropiirien ( mikro -ohjaimet , ROM , EEPROM jne.) vilkkumiseen. Näin ollen useimmat laiteohjelmistokuvien valmistelutyökalut ( kääntäjät , editorit, katseluohjelmat jne.) voivat toimia tämän muodon kanssa.
Tiedostolla on yleensä tunniste .hex. Nimiä I8HEX, I16HEX ja I32HEX käytetään joskus tunnistamaan tiedostossa käytetty tietuejoukko. I8HEX käyttää vain merkintöjä, joiden tyyppi on 00/01 (16-bittinen osoitus), I16HEX lisää merkinnät 02/03 (20-bittinen osoitus) ja I32HEX lisää merkinnät 04/05 (32-bittinen osoitus).
Muodin etuna (toisin kuin yksinkertaisessa binäärimuodossa) on kyky määrittää vain tietyt osoitealueet ( tavutarkkuudella ). Monissa mikrokontrolleriarkkitehtuureissa on useita ohjelmointialueita, joiden välillä on laajoja osoiterakoja.
Tallennusmuoto
Selitys yksi
Tiedosto koostuu ASCII - tekstiriveistä. Jokainen rivi edustaa yhtä merkintää. Jokainen merkintä alkaa kaksoispisteellä ( : ), jota seuraa joukko heksadesimaalilukuja , jotka ovat tavun kerrannaisia :
- Tallennuksen aloitus ( : ).
- Tämän merkinnän sisältämien tietojen tavujen määrä. Se vie yhden tavun (kaksi heksadesimaalilukua), joka vastaa 0 ... 255 desimaalilukua .
- Kirjoitettavan tietolohkon aloitusosoite on 2 tavua. Tämä osoite määrittää tämän merkinnän tietojen absoluuttisen sijainnin binääritiedostossa.
- Yksi tavu, joka ilmaisee tietuetyypin. Seuraavat tietuetyypit on määritelty:
- 0 - Merkintä sisältää binääritiedostodataa.
- 1 - tietue osoittaa tiedoston lopun , ei sisällä tietoja. Sillä on tyypillinen muoto ":00000001FF".
- 2 — segmentin osoitteen syöttö (katso tarkemmat tiedot alla).
- 4 - laajennettu osoitteen syöttö (katso alta lisätietoja).
- EPROM -muistiin tallennettavia tavuja dataa (niiden lukumäärä ilmoitetaan tietueen alussa, 0 - 255 tavua).
- Syötteen viimeinen tavu on tarkistussumma . Se lasketaan siten, että tietueen kaikkien tavujen summa on yhtä suuri kuin 0.
- Linja päättyy tavalliseen CR/LF-pariin (0Dh 0Ah).
Selitys kaksi
Intel HEX -tiedosto voi sisältää minkä tahansa määrän merkintöjä. Jokainen merkintä on ASCII -merkkijono, joka koostuu useista heksadesimaalilukupareista. Merkkijonon tulee alkaa kaksoispisteellä ja päättyä CR- ja LF-merkkien pariin. Tietue koostuu viidestä kentästä seuraavassa muodossa:
: LL AAAA TT DD… CC
Jokainen kirjainryhmä (LL, AAAA, TT jne.) on erillinen kenttä. Jokainen kirjain on erillinen heksadesimaaliluku (4 bittiä). Jokainen kenttä koostuu vähintään kahdesta heksadesimaalinumerosta (yhdestä tavusta). Alla on erittely ennätyskentistä:
- : Jokaisen Intel HEX -tiedoston merkinnän on alettava kaksoispisteellä.
- LL Length -kenttä - näyttää tietueen datatavujen määrän (DD).
- AAAA-osoitekenttä - edustaa merkinnän aloitusosoitetta.
- TT Type -kenttä. Se voi ottaa seuraavat arvot:
- 00-merkintä sisältää binääritiedostodataa.
- 01 on tiedoston loppu.
- 02-segmentin osoitesyöttö (katso alta lisätietoja).
- 03 Ohjelman käynnistyksen aloitusosoite 80x86-muodossa (ohjelmalaskurin ja offset-rekisterin CS:IP-rekisterien arvot)
- 04 laajennettu osoite (katso tarkemmat tiedot alta).
- 05 32-bittinen ohjelman aloitusosoite "lineaarisessa" osoiteavaruudessa
- DD Tietokenttä. Tietue voi sisältää useita tavuja dataa. Datatavujen määrän on vastattava LL-kenttää.
- CC tarkistussumma -kenttä. Tarkistussummakenttä lasketaan lisäämällä tietueen modulo 256 kaikkien tavujen (heksadesimaalilukuparien) arvot, minkä jälkeen muunnetaan lisämuotoon (vähennä tuloksena oleva arvo 0:sta). Jos siis summaat kaikki heksadesimaalilukuparit, mukaan lukien LL, AA, TT, DD, CC, saat 0.
Segmentin osoitemerkintä
Intel HEX -muotoinen tiedosto voi sisältää Intel 8086 -suorittimien merkintöjä, jotka määrittävät segmentin osoitteen (toisin sanoen kappaleen numero, yksi kappale on 16 tavua). Jos käytetään H167-direktiiviä, tämä tietuetyyppi korvaa laajennetun lineaarisen osoitetietueen. Kappaleen numeroa käytetään osoitteen siirtymänä kaikille tätä tietuetta seuraaville tietueille. Offset on osoitteen siirtyminen neljä bittiä vasemmalle. Esimerkiksi siirtymä 0x1234 antaisi todellisen osoitteen 0x12340. Tallennusesimerkki:
: 02 0000 02 1000 EY
missä:
- 02 Datatavujen määrä
- 0000 on aina 0000 tässä tietuetyypissä
- 02 Tietueen tyyppi 02 (segmentin osoitetietue).
- 1000 Kappaleen numero (todellinen osoite on 0x10000).
- EY-tarkistussumma
Laajennettu osoitemerkintä
Kun H167-direktiiviä käytetään, Intel HEX -muotoinen tiedosto saattaa sisältää laajennettuja lineaarisia osoitemerkintöjä. Tämä merkintätyyppi määrittää absoluuttisen osoitteen kahden merkittävimmän tavun arvot (bitit 16-31). Näitä kahta tärkeintä osoitteen tavua käytetään osoitepoikkeamana kaikille tätä tietuetta seuraaville tietueille. Tallennusesimerkki:
: 02 0000 04 00FF FB
missä:
- 02 Datatavujen määrä
- 0000 aina 0
- 04 Tietueen tyyppi 04 (laajennettu lineaarinen osoitetietue)
- 00FF Osoitepoikkeama korkea sana (0x00FF0000)
- FB tarkistussumma
Tiedoston lopun tallennus
Intel HEX -muotoisissa tiedostoissa on oltava End of File (EOF) -merkintä.
Tallennusesimerkki:
: 00 0000 01FF_ _
missä:
- 00 kirjoitettavien tavujen määrä
- 0000 Kenttä jätetään huomioimatta. Sillä ei ole väliä mitä sinne kirjoitetaan, mutta se on yleensä aina 0
- 01 Tietueen tyyppi 01 (Tiedoston loppu)
- FF Tarkistussumma laskettu 01h + NOT(00h + 00h + 00h + 01h).
Esimerkkejä
Esimerkki 1
: 10 0100 00 214601360121470136007EFE09D21901 40
: 10 0110 00 2146017EB7C20001FF5F160021480119 88
: 10 0120 00 194E79234623965778239EDA3F01B2CA A7
: 10 0130 00 3F0156702B5E712B722B732146013421 C7
: 00 0000 01 FF
Aloita nauhottaminen
Tietotavumäärä tässä merkinnässä (rivi)
Osoite, josta tämän tietueen tietoja aletaan sijoittaa
Tietueen tyyppi
Data
Kirjaa tarkistussumma
Esimerkki 2
Esimerkki yhdestä tietueesta:
: 10 2462 00 464C5549442050524F46494C4500464C 33
missä
- 10 datatavua (16 tavua)
- 2462 Muistiosoite, johon merkintä sijoitetaan.
- 00 Tietueen tyyppi - tiedot.
- 464C…464C Data
- 33 Kirjoita tarkistussumma
Esimerkki 3
:020000021000EC
:10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93
:10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90
:10C22000F04EF05FF06CF07DCA0050C2F086F097DF
:10C23000F04AF054BCF5204830592D02E018BB03F9
:020000020000FC
:04000000FA00000200
:00000001FF
Tietue segmentin osoitteella (tietuetyyppi 02). 2 tavua dataa sisältävät suurimman osan osoitteesta.
Tietueet datalla (tietuetyyppi 00).
Tietue, joka merkitsee tiedoston lopun (tietuetyyppi 01). Tämän merkinnän jälkeiset rivit ohitetaan.
Katso myös
- SREC on Motorolan käyttämä tiedostomuoto
- ELF on tiedostomuoto, jota useimmat UNIX-tyyppiset järjestelmät käyttävät.
Linkit