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