Position: Index > Unclassified >

Shelling The Intel 8-bit Hex File Format

2017-12-21 17:06  
Declaration:We aim to transmit more information by carrying articles . We will delete it soon, if we are involved in the problems of article content ,copyright or other problems.

Intel 8-bit Hex File Format is the most common hex file format used in the world as far as I know. There is also Motorola Hex file format and maybe other. Creating applications with AVR-GCC we usually select ihex output file format what means Intel hex file format. Lets go through it and see whats inside. It is simple as 6 and 6 (six and six), because each Hex file line consists of six parts. And there can be 6 record types in hex file.

Lets go through all six parts of each line:

Intel Hex

Start code is always character ‘:’;

Byte count takes one byte (hex pair) indicating a number of bytes in a data field of the lin. Usually there are 16 or 32 bytes of data in each line;

Address takes two bytes (16 bits – four hex digits). Address shows the beginning of memory position for the data. 16 bits gives a limit of 64kilobytes. This is worked around by specifying higher bits via other record types;

Record type takes one byte (two hex digits). It defines the type of data field;

Data is a sequence of n bytes (2*n hex digits);

Checksum is one byte (two hex digits). It is a last byte in a line. It is calculated from fields: byte count, Address, record type and data and taking its Two’s complement . Start code and checksum itself isn’t included.

Check sum calculation example:

:040F40009F4F089522

Taking all the data bytes above, we have to calculate the checksum based on the following hexadecimal values:

04 0F 40 00 9F 4F 08 95 = 1DE

The value is greater then we leave part which is less than FF,so we get DE.

Then Twos complement is 100h-DE=22

In Intel Hex File Format there are six types of record types:

00 – data record;

01 – End of file record. Usually it is a€?:00000001FFa€?;

02 – Extended Segment address record. This indicates segment base address when 16 bits is not enough for addressing memory;

03 – Start segment address record. Indicates initial segment base address.

04 – Extended Linear Address Record a€“ allows 32 bit addressing.

05 – Start Linear Address Record.

By concluding all of this:

Sample hex file:

:1000000012C02BC02AC029C028C027C026C025C0C6

:1000100024C023C022C021C020C01FC01EC01DC0DC

:100020001CC01BC01AC011241FBECFE5D4E0DEBF28

:10003000CDBF10E0A0E6B0E0ECE9F0E002C0059032

:100040000D92A036B107D9F710E0A0E6B0E001C0EC

:100050001D92A036B107E1F701C0D2CFCAE5D4E0C6

:10006000DEBFCDBFA7E0B0E00BD0802DFE01319602

:10007000A0E0B0E085E0182E0BD080E090E00DC04D

:10008000E199FECFBFBBAEBBE09A11960DB20895C9

:0C009000F7DF01921A94E1F70895FFCF0A

:00000001FF


Reprinted Url Of This Article:
http://www.scienceprog.com/shelling-the-intel-8-bit-hex-file-format/