ANT002A0

Transcript

ANT002A0
ANT002A0
Formato Intel standard HEX
ELSIST S.r.l.
Via G. Brodolini, 15 (Z.I.)
Internet: http://www.elsist.it
TEL. (39)-142-451987
Sistemi in elettronica
15033 CASALE M.TO
Email: [email protected]
FAX (39)-142-451988
ITALY
BBS (39)-142-453165
PREMESSA
L’Intel-Standard HEX è il formato più comune utilizzato per il salvataggio dei programmi eseguibili nel mondo
dei processori 8052. L’Intel-hex è ad esempio utilizzato per trasferire programmi nei programmatori di EPROM,
PROM ecc., i compilatori ed assemblatori per la famiglia MCS51 solitamente generano files programma in
formato Intel-hex che può poi essere trasferiti su EPROM programmer per la programmazione del chip.
Un file in formato Intel Standard HEX, è un file ASCII che ha un record per linea, ogni linea ha il seguente
formato:
Posizione
Descrizione
Il primo carattere della linea è sempre i «due punti” (ASCII 0x3A), esso identifica
l’inizio del record Intel hex.
Record Length: Questo campo specifica il numero di bytes di dato contenuti nel record, esso è
rappresentato da un valore esadecimale è espresso su 2 digit. Indica il numero totale di bytes di
dato non includendo il byte di checksum ed i primi 9 caratteri del record.
Address: Questo campo specifica l’indirizzo dove i dati devono essere trasferiti nel chip. Il suo
valore esadecimale è espresso su 4 digit ed ha un range da 0 a 65.535.
Record Type: Questo campo specifica il tipo di record dati. I valori possibili sono:
Record Marker:
1
2÷3
4÷7
8÷9
10 ÷ ?
Ultimi 2 car
00=Dati normali.
01=End of File.
02=Indirizzo esteso.
Data Bytes: I bytes successivi rappresentano i dati da scrivere nel chip. Essi sono rappresentati
da un valore esadecimale espresso su 2 digit ed hanno un range da 0 a 255.
Checksum: Gli ultimi due caratteri specificano il checksum del record. Il suo valore esadecimale è
espresso su 2 digit ed ha un range da 0 a 255. Il checksum è calcolato come il complemento a
due della somma di tutti i bytes del record escludendo il Record Marker ed il checksum stesso.
CALCOLO DELCHECKSUM
Come riportato nella tabella precedente gli ultimi due caratteri specificano il checksum del record. Il suo
valore esadecimale è espresso su 2 digit ed ha un range da 0 a 255.
Il checksum è calcolato come la somma di tutti i bytes del record escludendo il
stesso ed eseguendo poi il complemento a due del risultato. Per esempio il record:
Record Marker
ed il checksum
:0300300002337A1E
Dividendo il record nei suoi elementi, avremo:
Record Length: 03 (3 bytes di dato)
Address: 0030 (i 3 bytes saranno trasferiti
Record Type: 00 (dati normali)
Data Bytes: 02, 33, 7A
Checksum: 1E
ANT002A0
agli indirizzi 0030, 0031 e 0032)
PAG. 1 /2
FORMATO INTEL STANDARD HEX
Prendendo come esempio il record precedente, per il calcolo del checksum dovremo eseguire le seguenti
somme:
03 + 00 + 30 + 00 + 02 + 33 + 7A = E2
Il complemento a due di E2 è 1E che rappresenta il valore del checksum.
IL calcolo del complemento a due è molto semplice, esso rappresenta il valore che deve essere sommato ad
un numero per ottenere il valore 256 (decimale) 100 (esadecimale).
Così possiamo dire E2 + 1E = 100.
E’ altresì possibile calcolare il complemento a due sottraendo il numero da 100h,.
Così possiamo dire 100h - E2h = 1Eh.
Se il numero di cui calcolare il checksum è maggiore di FFh, occorre considerarne solo la parte che è minore
di 100h. Per esempio per calcolare il complemento a due del numero 494h, basta considerare il numero 94h
eliminando il 4. Così il complemento a due di 94h è 6Ch.
END OF FILE
Tutti i files Intel hex, terminano con un record di end of file, esso è sempre lo stesso ed è uguale a quello
riportato di seguito:
:00000001FF
ANT002A0
PAG. 2 /2