Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Intel HEX

From Wikipedia, the free encyclopedia
(Redirected fromIntel hex)
File format for conveying binary information
Not to be confused withIntel hexadecimal notation.
".hex" redirects here. For the file format used byGNU Unifont, seeGNU Unifont § .hex format.

Intel hex
Filename extensionsGeneral-purpose:
.hex,[1].mcs,[2].int,[3].ihex,.ihe,.ihx[4]
Platform-specific:
.h80,.h86,[5][6].a43,[7][4].a90[7][4]
Split, banked, or paged:
.hxl.hxh,[8].h00.h15,.p00.pff[9]
Binary or Intel hex:
.obj,.obl,[8].obh,[8].rom,.eep

Intel hexadecimal object file format,Intel hex format orIntellec Hex is afile format that conveysbinary information inASCIItext form,[10] making it possible to store on non-binary media such aspaper tape,punch cards, etc., to display ontext terminals or be printed online-oriented printers.[11] The format is commonly used for programmingmicrocontrollers,EPROMs, and other types of programmable logic devices andhardware emulators. In a typical application, acompiler orassembler converts aprogram'ssource code (such as inC orassembly language) tomachine code and outputs it into anobject orexecutable file in hexadecimal (or binary) format. In some applications, the Intel hex format is also used as acontainer format holdingpackets ofstream data.[12] Common file extensions used for the resulting files are .HEX[1] or .H86.[5][6] The HEX file is then read by aprogrammer to write the machine code into aPROM or is transferred to the target system for loading and execution.[11][13] There are various tools to convert files between hexadecimal and binary format (i.e.HEX2BIN), and vice versa (i.e. OBJHEX, OH, OHX, BIN2HEX).

History

[edit]

The Intel hex format was originally designed forIntel'sIntellec Microcomputer Development Systems[14]: 10–11  (MDS) in 1973 in order to load and execute programs frompaper tape. It was also used to specify memory contents to Intel forROM production,[15] which previously had to beencoded in the much less efficientBNPF (Begin-Negative-Positive-Finish) format.[14]: 11  In 1973, Intel's "software group" consisted only of Bill Byerly and Kenneth Burgett, andGary Kildall as an external consultant doing business asMicrocomputer Applications Associates (MAA) and foundingDigital Research in 1974.[16][17][18][9] Beginning in 1975, the format was utilized byIntellec Series IIISIS-II systems supporting diskette drives, with files using the file extension HEX.[19] ManyPROM andEPROM programming devices accept this format.

Format

[edit]

Intel HEX consists of lines ofASCII text that are separated byline feed orcarriage return characters or both. Each text line contains uppercasehexadecimal characters thatencode multiple binary numbers. The binary numbers may represent data,memory addresses, or other values, depending on their position in the line and the type and length of the line. Each text line is called arecord.

Record structure

[edit]

Arecord (line of text) consists of sixfields (parts) that appear in order from left to right:[11]

  1. Start code, one character, an ASCII colon ':'. All characters preceding this symbol in a record should be ignored.[15][5][20][21][22][23] In fact, very early versions of the specification even asked for a minimum of 25NUL characters to precede the first record and follow the last one, owing to the format's origins as apaper tape format which required sometape leadin and leadout for handling.[15][24][21][22] However, as this was a little known part of the specification, not all software written copes with this correctly. It allows to store other related information in the same file (and even the same line),[15][23] a facility used by various software development utilities to storesymbol tables or additional comments,[25][15][21][26][9][27] and third-party extensions using other characters as start code like the digits '0'..'9' by Intel[28] andKeil,[26] '$' byMostek,[29][30] or '!', '@', '#', '\', '&' and ';' byTDL.[30][31] By convention, '//' is often used for comments.[32][33] Neither of these extensions may contain any ':' characters as part of the payload.
  2. Byte count, two hex digits (one hex digit pair), indicating the number of bytes (hex digit pairs) in the data field. The maximum byte count is 255 (0xFF). The values of 8 (0x08),[9] 16 (0x10)[9] and 32 (0x20) are commonly used byte counts. Not all software copes with counts larger than 16.[2]
  3. Address, four hex digits, representing the 16-bit beginning memory address offset of the data. Thephysical address of the data is computed by adding this offset to a previously establishedbase address, thus allowing memory addressing beyond the 64 kilobyte limit of 16-bit addresses. The base address, which defaults to zero, can be changed by various types of records. Base addresses and address offsets are always expressed asbig endian values.
  4. Record type (seerecord types below), two hex digits,00 to05, defining the meaning of the data field.
  5. Data, a sequence ofn bytes of data, represented by 2n hex digits. Some records omit this field (n equals zero). The meaning and interpretation of data bytes depends on the application. (4-bit data will either have to be stored in the lower or upper half of the bytes, that is, one byte holds only one addressable data item.[15])
  6. Checksum, two hex digits, a computed value that can be used to verify the record has no errors.

Color legend

[edit]

As a visual aid, the fields of Intel HEX records are colored throughout this article as follows:

  Start code  Byte count  Address  Record type  Data  Checksum

Checksum calculation

[edit]

A record's checksum byte is thetwo's complement of theleast significant byte (LSB) of the sum of all decoded byte values in the record preceding the checksum. It is computed by summing the decoded byte values and extracting the LSB of the sum (i.e., the data checksum), and then calculating the two's complement of the LSB (e.g., byinverting its bits and adding one).

For example, in the case of the record:0300300002337A1E, the sum of the decoded byte values is03 +00 +30 +00 +02 +33 +7A =E2, which has LSB valueE2. The two's complement ofE2 is1E, which is the checksum byte appearing at the end of the record.

The validity of a record can be checked by computing its checksum and verifying that the computed checksum equals the checksum appearing in the record; an error is indicated if the checksums differ. Since the record's checksum byte is the two's complement — and therefore theadditive inverse — of the data checksum, this process can be reduced to summing all decoded byte values, including the record's checksum, and verifying that the LSB of the sum is zero. When applied to the preceding example, this method produces the following result:03 +00 +30 +00 +02 +33 +7A +1E =100, which has LSB value00.

Text line terminators

[edit]

Intel HEX records are usually separated by one or more ASCII line termination characters so that each record appears alone on a text line. This enhances readability by visuallydelimiting the records and it also provides padding between records that can be used to improve machineparsing efficiency. However, the line termination characters are optional, as the ':' is used to detect the start of a record.[15][5][24][20][21][22][23]

Programs that create HEX records typically use line termination characters that conform to the conventions of theiroperating systems. For example, Linux programs use a single LF (line feed, hex value0A) character to terminate lines, whereas Windows programs use a CR (carriage return, hex value0D) followed by a LF.

Record types

[edit]

Intel HEX has six standard record types:[11]

Hex codeRecord typeDescriptionExample
00DataThe byte count specifies number of data bytes in the record. The example has0B (eleven) data bytes. The 16-bit starting address for the data (in the example at addresses beginning at0010) and the data (61,64,64,72,65,73,73,20,67,61,70).:0B0010006164647265737320676170A7
01End Of FileMust occur exactly once per file in the last record of the file. The byte count is00, the address field is typically0000 and the data field is omitted.:00000001FF
02Extended Segment AddressThe byte count is always02, the address field (typically0000) is ignored and the data field contains a 16-bit segment base address. This is multiplied by 16 and added to each subsequent data record address to form the starting address for the data. This allows addressing up to onemebibyte (1048576 bytes) of address space.:020000021200EA
03Start Segment AddressFor 80x86 processors, specifies the starting execution address. The byte count is always04, the address field is0000 and the first two data bytes are theCS value, the latter two are theIP value. The execution should start at this address.:0400000300003800C1
04Extended Linear AddressAllows for 32 bit addressing (up to 4GiB). The byte count is always02 and the address field is ignored (typically0000). The two data bytes (big endian) specify the upper 16 bits of the 32 bit absolute address for all subsequent type00 records; these upper address bits apply until the next04 record. The absolute address for a type00 record is formed by combining the upper 16 address bits of the most recent04 record with the low 16 address bits of the00 record. If a type00 record is not preceded by any type04 records then its upper 16 address bits default to 0000.:020000040800F2
05Start Linear AddressThe byte count is always04, the address field is0000. The four data bytes represent a 32-bit address value (big endian). In the case of CPUs that support it, this 32-bit address is the address at which execution should start.:04000005000000CD2A

Other record types have been used for variants, including06 ('blinky' messages / transmission protocol container) by Wayne and Layne,[34]0A (block start),0B (block end),0C (padded data),0D (custom data) and0E (other data) by theBBC/Micro:bit Educational Foundation,[35] and81 (data incode segment),82 (data indata segment),83 (data instack segment),84 (data inextra segment),85 (paragraph address for absolute code segment),86 (paragraph address for absolute data segment),87 (paragraph address for absolute stack segment) and88 (paragraph address for absolute extra segment) byDigital Research.[6][20]

Named formats

[edit]

The original 4-bit/8-bitIntellec Hex Paper Tape Format andIntellec Hex Computer Punched Card Format in 1973/1974 supported only one record type00.[36][37][25] This was expanded around 1975[when?] to also support record type01.[15] Sometimes calledsymbolic hexadecimal format,[38] it could include an optional header containing asymbol table forsymbolic debugging,[25][28][26][9] all characters in a record preceding the colon are ignored.[15][5]

Around 1978[when?], Intel introduced the new record types02 and03 (to add support for the segmented address space of the then-new8086/8088 processors) in theirExtended Intellec Hex Format.[when?]

Special names are sometimes used to denote the formats of HEX files that employ specific subsets of record types. For example:

  • I8HEX (akaHEX-80) files use only record types00 and01
  • I16HEX (akaHEX-86) files use only record types00 through03[10]
  • I32HEX (akaHEX-386) files use only record types00,01,04, and05

File example

[edit]

This example shows a file that has four data records followed by an end-of-file record:

:10010000214601360121470136007EFE09D2190140:100110002146017E17C20001FF5F16002148011928:10012000194E79234623965778239EDA3F01B2CAA7:100130003F0156702B5E712B722B732146013421C7:00000001FF

  Start code  Byte count  Address  Record type  Data  Checksum

Variants

[edit]

Besides Intel's own extension, several third-parties have also defined variants and extensions of the Intel hex format, includingDigital Research (as in the so-called "Digital Research hex format"[6][20]),Zilog,Mostek,[29][30]TDL,[30][31]Texas Instruments,Microchip,[39][40]c't, Wayne and Layne,[34] andBBC/Micro:bit Educational Foundation (with its "Universal Hex Format"[35]). These can have information onprogram entry points andregister contents, aswapped byte order in the data fields,fill values for unused areas,fuse bits, and other differences.

The Digital Research hex format for 8086 processors supports segment information by adding record types to distinguish between code, data, stack, and extra segments.[5][6][20]

Most assemblers forCP/M-80 (and alsoXASM09 for theMotorola 6809) don't use record type 01h to indicate the end of a file, but use a zero-lengthdata type 00h entry instead.[41][1] This eases the concatenation of multiple hex files.[42][43][1]

Texas Instruments defines a variant where addresses are based on the bit-width of a processor's registers, not bytes.

Microchip defines variants INTHX8S[44] (INHX8L,[1] INHX8H[1]), INHX8M,[44][1][45] INHX16[44] (INHX16M[1]) and INHX32[46] for theirPIC microcontrollers.

Alfred Arnold's cross-macro-assembler AS,[1] Werner Hennig-Roleff's8051-emulator SIM51,[26] and Matthias R. Paul's cross-converter BINTEL[47] are also known to define extensions to the Intel hex format.

See also

[edit]

References

[edit]
This articlecontainstoo many or overly lengthy quotations. Please helpsummarise the quotations. Consider transferring direct quotations toWikiquote or excerpts toWikisource.(October 2023) (Learn how and when to remove this message)
  1. ^abcdefghiArnold, Alfred "Alf" (2020) [1996, 1989]."6.3. P2HEX".Macro Assembler AS - User's Manual. V1.42. Translated by Arnold, Alfred "Alf"; Hilse, Stefan; Kanthak, Stephan; Sellke, Oliver; De Tomasi, Vittorio. Aachen, Germany.Archived from the original on 2020-02-28. Retrieved2020-02-28.[…] For thePIC microcontrollers, the switch -m <0..3> allows to generate the three different variants of the Intel Hex format. Format 0 is INHX8M which contains all bytes in a Lo-Hi-Order. Addresses become double as large because the PICs have a word-oriented address space that increments addresses only by one per word. […] With Format 1 (INHX16M), bytes are stored in their natural order. This is the formatMicrochip uses for its own programming devices. Format 2 (INHX8L) resp. 3 (INHX8H) split words into their lower resp. upper bytes. […] Unfortunately, one finds different statements about the last line of an Intel-Hex file in literature. Therefore, P2HEX knows three different variants that may be selected […] :00000001FF […] :00000001 […] :0000000000 […] By default, variant 0 is used which seems to be the most common one. […] If the target file name does not have an extension, an extension of HEX is supposed. […]
  2. ^ab"AR#476 PROMGen - Description of PROM/EEPROM file formats: MCS, EXO, HEX, and others".Xilinx. 2010-03-08. Intel MCS-86 Hexadecimal Object - File Format Code 88.Archived from the original on 2020-03-03. Retrieved2020-03-03.
  3. ^Sabnis, Abhishek (2011-02-04)."How to convert .out file to .int, .hex, .a43".Code Composer Studio forum.Texas Instruments.Archived from the original on 2023-10-20. Retrieved2023-10-20.TI-gang programmer needs .int, .hex, .a43 file format.
  4. ^abcSchuldt, Michael (2018)."intel-hex-mode".github.com.Archived from the original on 2020-10-24. Retrieved2023-10-20.By default, this mode is enabled for files with a .a90, .hex, .a43, or .ihx extension.
  5. ^abcdef"3.1. Intel 8086 Hex File Format".CP/M-86 Operating System - System Guide(PDF) (2nd printing, 1st ed.). Pacific Grove, California, USA:Digital Research. June 1981. pp. 15–16.Archived(PDF) from the original on 2020-02-28. Retrieved2020-02-28. p. 16:[…] The following are output from ASM-86 only: 81 same as 00, data belongs tocode segment […] 82 same as 00, data belongs todata segment […] 83 same as 00, data belongs tostack segment […] 84 same as 00, data belongs toextra segment […] 85paragraph address for absolute code segment […] 86 paragraph address for absolute data segment […] 87 paragraph address for absolute stack segment […] 88 paragraph address for absolute extra segment […] All characters preceding the colon for each record are ignored. […] (17 pages)
  6. ^abcde"Appendix C. ASM-86 Hexadecimal Output Format".CP/M-86 - Operating System - Programmer's Guide(PDF) (3 ed.). Pacific Grove, California, USA:Digital Research. January 1983 [1981]. pp. 97–100.Archived(PDF) from the original on 2020-02-27. Retrieved2020-02-27. pp. 97–99:[…] TheIntel format is identical to the format defined by Intel for the8086. TheDigital Research format is nearly identical to the Intel format, but adds segment information to hexadecimal records. Output of either format can be input toGENCMD, but the Digital Research format automatically provides segment identification. A segment is the smallest unit of a program that can be relocated. […] It is in the definition of record types 00 and 02 that Digital Research's hexadecimal format differs from Intel's. Intel defines one value each for the data record type and the segment address type. Digital Research identifies each record with the segment that contains it. […] 00H for data belonging to all 8086 segments […] 81H for data belonging to theCODE segment […] 82H for data belonging to theDATA segment […] 83H for data belonging to theSTACK segment […] 84H for data belonging to theEXTRA segment […] 02H for all segment address records […] 85H for a CODE absolute segment address […] 86H for a DATA segment address […] 87H for a STACK segment address […] 88H for an EXTRA segment address […][1] (1+viii+122+2 pages)
  7. ^abRamos, Rubens (2010) [2008]."intel-hex-mode.el --- Mode for Intel Hex files". Retrieved2023-10-20.
  8. ^abc"The Interactive Disassembler - Hexadecimal fileformats".Hex-Rays. 2006. Archived fromthe original on 2020-03-01. Retrieved2020-03-01.[2]Archived 2021-11-16 at theWayback Machine
  9. ^abcdefRoche, Emmanuel (2020-04-01)."The Intel HEX File Format". France:Newsgroupcomp.os.cpm. INTELHEX.WS4.Archived from the original on 2021-12-08. Retrieved2021-12-08.[…] theIntel HEX file format can contain much more than the "data bytes". As long as the lines do not start with a colon (":"), they can contain anything that you want. […] I once saw a big HEX file […] It contained, at the beginning, the source code of aPL/M program, followed, at the end, by the resulting HEX file produced by the PL/M compiler. […] I found another HEX file containing several lines of comments, not at the beginning or at the end, but separating several lines of "absolute records". […] it was from an "(Intel)8008 Simulator". So, at the beginning of its use, it was well known that HEX files could contain explanations. […] underCP/M or any 8-bit 64K system, there remains one case: "Page addresses". Since CP/M, it is standard to display memory addresses using the hexadecimal system […] as we said for BIN/COM files, the memory addresses are 0000/0100. […] those memory addresses can be written 00-00/01-00 […] to say: Page zero, address zero / Page one, address zero. […] the highest memory address in a 8-bit 64K computer is FFFF […] Page FF, address FF […] the lowest addresses are in Page zero (or 00) and the highest addresses are in Page FF. […] CP/M filetypes are 3-letters long, one could use filetypes of the form P00–PFF […] to indicate at which memory address where to load the HEX file. […] I noticed that most of my addresses were ending with "00", so the loading address could be reduced to the Page address, which […] could be put inside the filetype […]
  10. ^ab"Appendix D. MCS-86 Absolute Object File Formats: Hexadecimal Object File Format".8086 Family Utilities - User's Guide for 8080/8085-Based Development Systems(PDF). Revision E (A620/5821 6K DD ed.). Santa Clara, California, USA:Intel Corporation. May 1982 [1980, 1978]. pp. D-8 –D-13. Order Number 9800639-04.Archived(PDF) from the original on 2020-02-29. Retrieved2020-02-29.
  11. ^abcdHexadecimal Object File Format Specification. Revision A.Intel Corporation. 1998 [1988-01-06]. Retrieved2019-07-23.[3][4][5][6][7] (11 pages)
  12. ^"LT Programming Hex File Format Documentation -- In Circuit Programming".Analog Devices, Inc. /Linear Technology. 2021.Archived from the original on 2021-03-07. Retrieved2021-12-11.
  13. ^"General: Intel Hex File Format".ARM Keil.ARM Germany GmbH. 2018-05-07 [2012]. KA003292. Archived fromthe original on 2020-02-27. Retrieved2017-09-06.[8]
  14. ^abCrosby, Kip (January–March 1994)."Dawn of the Micro: Intel's Intellecs"(PDF).The Analytical Engine.1 (3). Computer History Association of California:10–14.ISSN 1071-6351.Archived(PDF) from the original on 2023-10-17. Retrieved2023-10-17. pp. 10–11:[…] theIntel Intellec 8 […] first appeared sometime in 1972 or 1973, two years or more before theAltair 8800 often credited as the "first microcomputer" by standard histories […]Intel maintains that the 8 Mod 8 was first produced in 1973 and discontinued in 1975. Tony Duell has an 8 Mod 80 CPU board dated 1972, and the 8 Mod 8 and 4 Mod 40 are both listed in the Intel Data Catalog published in February 1976, so the actual period of production may have been somewhat longer. (Pertinent Intel docs must be read carefully because the names MCS4, MCS40, MCS8 and MCS80 were used almost indiscriminately to refer to chipsets, computers or full systems.) […] (52 pages) (NB. This article does not mention Intel Hex, but specifically mentions that Intel's Intellec system was officially introduced in 1973, but some units dated 1972 exist.)
  15. ^abcdefghi"Chapter 6. Microcomputer System Component Data Sheet - EPROMs and ROMs: I. PROM and ROM Programming Instructions - B1. Intellec Hex Paper Tape Format / C1. Intellec Hex Computer Punched Card Format".MCS-80 User's Manual (With Introduction to MCS-85). Santa Clara, California, USA:Intel Corporation. October 1977 [1975]. pp. 6-75 –6-78. 98-153D. Retrieved2020-02-27. p. 6-76:[…] In the Intel Intellec Hex Format, a data field can contain either 8 or 4-bit data. Two ASCII hexadecimal characters must be used to represent both 8 and 4-bit data. In the case of 4-bit data, only one of the characters is meaningful and must be specified on the Intel PROM/ROM Order Form. […] Preceding the first data field and following the last data field there must be a leader/trailer length of at least 25 null characters. Comments (except for a colon) may be placed on thetape leader. […] If the data is 4 bit, then either the high or low-order digit represents the data and the other digit of the pair may be any ASCII hexadecimal digit. […][9][10] (468 pages) (NB. This manual also describes a "BPNF Paper Tape Format", a "Non-Intellec Hex Paper Tape Format" and a "PN Computer Punched Card Format".)
  16. ^Kildall, Gary Arlen (January 1980)."The History of CP/M, The Evolution of an Industry: One Person's Viewpoint".Dr. Dobb's Journal of Computer Calisthenics & Orthodontia.5 (1):6–7. #41.Archived from the original on 2016-11-24. Retrieved2013-06-03.[…] Programs had been written and tested by Intel's software group, consisting of myself and two other people, and we were ready for the real machine. […]
  17. ^Kildall, Gary Arlen (2016-08-02) [1993].Kildall, Scott; Kildall, Kristin (eds.).Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry (Manuscript, part 1). Kildall Family.Archived(PDF) from the original on 2016-11-17. Retrieved2016-11-17. (NB. Part 2 not released due to family privacy reasons.)
  18. ^Burgett, Kenneth "Ken" (2017-11-10)."Development of Intel ISIS Operating System - An interview with Ken Burgett".Archived from the original on 2023-11-24. Retrieved2023-11-25.[11][12]
  19. ^Feichtinger, Herwig (1987). "1.8.5. Lochstreifen-Datenformate: Das Intel-Hex-Format" [1.8.5. Paper tape data formats].Arbeitsbuch Mikrocomputer [Microcomputer work book] (in German) (2 ed.). Munich, Germany:Franzis-Verlag GmbH. pp. 240–243 [243].ISBN 3-7723-8022-0.
  20. ^abcde"4.3 Intel Hexadecimal File Format".Concurrent CP/M Operating System - Programmer's Reference Guide(PDF) (1 ed.). Pacific Grove, California, USA:Digital Research Inc. January 1984. pp. 4-9 –4-12.Archived(PDF) from the original on 2021-12-11. Retrieved2021-12-11. pp. 4-11 –4-12:[…] The following are output from ASM-86 only: 81 same as 00, data belongs toCode Segment […] 82 same as 00, data belongs toData Segment […] 83 same as 00, data belongs toStack Segment […] 84 same as 00, data belongs toExtra Segment […] *85paragraph address for absolute Code Segment […] *86 paragraph address for absolute Data Segment […] *87 paragraph address for absolute Stack Segment […] *88 paragraph address for absolute Extra Segment […] * 85, 86, 87, and 88 are Digital Research Extensions. […] All characters preceding the colon for each record are ignored. […] (346 pages) (NB. This manual marks only types 85, 86, 87 and 88 as Digital Research extensions, as if types 81, 82, 83, 84 were not.)
  21. ^abcd"2.8. Microprocessor Formats, 2.8.1. Input Requirements: Intel Intellec 8/MDS Format. Select Code 83".Operator Guide To Serial I/O Capabilities of Data I/O Programmers - Translation-Format Package(PDF). Revision C.Data I/O Corporation. October 1980. p. 2-10. 055-1901.Archived(PDF) from the original on 2020-03-01. Retrieved2020-03-01. p. 2-10:[…] Input […] This space can be used for line feed, carriage return or comments. […] Output […] 2) Each line ends with nonprinting line feed, carriage returns and nulls. […] (1+ii+19 pages)
  22. ^abc"Intel Intellec 8/MDS Format, Code 83".Translation File Formats(PDF).Data I/O Corporation. 1987-09-03. pp. 22,26–27,52–53, 54.Archived(PDF) from the original on 2021-07-28. Retrieved2020-03-01. pp. 22, 26, 52:[…] Nonprinting Carriage Return, line feed, and nulls determined by null count […] (56 pages)
  23. ^abc"Appendix B: Intel Hex and Intel Extended Hex Format - B.1 Common Format".Fujitsu Semiconductor Controller Manual: FR/F2MC Family Softune Linkage Kit Manual for V3(PDF).Fujitsu Limited. 2001. pp. 319–525 [320–321].Archived(PDF) from the original on 2021-12-12. Retrieved2021-12-12. p. 321:[…] (g) Generally, a control code (such as CR and LF) is added. Data in this field is skipped until the start character ":" of (a) appears. Since the (a), (b), (c), (d), and (f) fields always exist, the minimum length of a record is 11 bytes long and the maximum length is 521 bytes long. […] (4+x+350 pages)
  24. ^ab"1.6.4 PIP".CP/M Operating System Manual (First printing ed.). Pacific Grove, California, USA:Digital Research. July 1982 [1976]. pp. 17–23. Retrieved2021-12-12. pp. 19–21:[…]PIP performs a special function if the destination is a disk file with type "HEX" (anIntel hex-formatted machine code file), and the source is an external peripheral device, such as apaper tape reader. In this case, the PIP program checks to ensure that the source file contains a properly formed hex file, with legal hexadecimal values and checksum records. When an invalid input record is found, PIP reports an error message at theconsole and waits for corrective action. It is usually sufficient to open the reader and rerun a section of the tape (pull the tape back about 20 inches). When the tape is ready for the reread, a singlecarriage return is typed at the console, and PIP will attempt another read. If the tape position cannot be properly read, the user continues the read (by typing a return following the error message), and enters the record manually with theED program after the disk file is constructed. For convenience, PIP allows theend-of-file to be entered from the console if the source file is anRDR: device. In this case, the PIP program reads the device and monitors the keyboard. Ifctl-Z is typed at the keyboard the read operation is terminated normally. […]PIPPUN:=NUL:,X.ASM,EOF:,NUL: […] Send 40nulls to thepunch device; copy the X.ASM file to the punch, followed by an end-of-file (ctl-Z) and 40 more null characters. […]H […] HEX data transfer: all data are checked for proper Intel hex file format. Nonessential characters between hex records are removed during the copy operation. The console will be prompted for corrective action in case errors occur. […]I […] Ignore ":00" records in the transfer of Intel hex format file (the I parameter automatically sets the H parameter). […]PIP PUN:=X.HEX[i],Y.ZOT[h] […] First copy X.HEX to the PUN: device and ignore the trailing ":00" record in X.HEX; continue the transfer of data by reading Y.ZOT, which contains HEX records, including any ":00" records it contains. […][13] (6+250 pages)
  25. ^abc
        1 CARRY 05714    2 ZERO 05715    3 SIGN 05716    4 PARITY 05717    5 MEMORY 06000   23 SQUAREROOT 04003[…]   83 MONITORUSES 05766 $****************************************:1008000044520A2E0B36D0F930FA31CF30D730F9B6[…]:100AF0000936F4C730D70401C8C20C0031F930F808:040B0000445E0AFF46****************************************:0000000000 $

    — "Appendix A: A Sample Program in PL/M: Hexidecimal Object Tape".MCS-8 A Guide to PL/M programming(PDF). Rev 1 (printed September 1974 ed.). Santa Clara, California, USA:Intel Corporation. 1974-03-15 [September 1973]. p. 102. MCS180-0774-1K, MCS280-0974-1K.Archived(PDF) from the original on 2022-01-29. Retrieved2022-05-18.

    (1+i+100+1+11+1 pages) (NB. Shows an example containingasterisk-based separators and a space-indented header with symbol names to be processed byIntel ISIS'sHEXOBJ command as well as byINTERP/8 orINTERP/80 forsymbolic debugging. This optional header is not documented as part of Intel hex orBNPF formats but in Intel'sPL/M and assembler programming manuals producing such symbol tables.)
  26. ^abcdHennig-Roleff, Werner (1993-02-01) [1988]."HEX.DOC: Intel-HEX-Format".SIM51. 1.04 (in German).Archived from the original on 2017-08-11. Retrieved2021-12-08.[…] Beim Absolut-Hex Konvertierprogramm vonKeil können optional […] Symbol-Informationen in den Hex-File aufgenommen werden. Die Symbol-Informationen stehen dabei am Anfang des Files, vor dem ersten ':'. Die Symbol-Informationen sind allerdings nicht sehr aussagekräftig, da nicht unterschieden wird zwischen Modul-Name, CODE, XDATA, DATA, IDATA, BIT, NUMBER. Für jeden Symboleintrag werden nur ASCII-Zeichen verwendet. Pro Zeile ist 1 Symbol angeschrieben und zwar in der Form: "0 SymbolName Wert" […][14][15] (NB. This is an older version of SIM51, the software and documentation was maintained up to 1996.)
  27. ^G., Georg (2021-09-05) [2021-09-04]."Hex-File Flashen". Mikrocontroller und Digitale Elektronik.mikrocontroller.net (in German). Retrieved2023-11-23.[…] Debug Infos fingen bei Intel mit einem "$" an. Dann kamen der Name des Symbols und die Adresse. Kommentare hatten als erstes Zeichen ein ";". […] DerASM48 unterISIS-2 produzierte solche Hexfiles, […] derASM86 auch. […]
  28. ^ab"Appendix A. Example of Listing Format / Appendix C. Hexadecimal Object File Format".2920 Assembly Language Manual(PDF). Santa Clara, California, USA:Intel Corporation. August 1979. pp. A-3,C-1 –C-2. Order Number 9800987-01.Archived(PDF) from the original on 2023-11-26. Retrieved2023-11-26. p. C-1:[…] The code is formatted in hexadecimal bytes of data. The file contains the ASCII representation of the hexadecimal bytes of data. The object code itself is preceded by a symbol table. These two parts may be loaded or saved together or separately. The symbol table is a series of records, terminated by a dollar sign. Each record contains three fields separated by one or more ASCII spaces: […] a number field […] a label field containing the ASCII representation of a source program symbol […] an address field containing the hexadecimal address assigned to the symbol […] The symbol table is terminated by a record whose first nonblank character is a dollar sign. The object code […] follows the symbol table […] Each of these records or physical lines is six logical fields of varying length in characters or frames. […] (90 pages) (NB. TheIntel 2920 was adigital signal processor released in 1979.)
  29. ^abFormaniak, Peter G.; Leitch, David (July 1977)."A Proposed Microprocessor Software Standard".BYTE - the small systems journal. Technical Forum. Vol. 2, no. 7. Peterborough, New Hampshire, USA:Byte Publications, Inc. pp. 34,62–63. ark:/13960/t32245485. Retrieved2021-12-06. (3 pages) (NB. Describes an extension of the Intel hex format byMostek.)
  30. ^abcdOgdin, Carol Anne; Colvin, Neil; Pittman, Tom; Tubb, Philip (November 1977)."Relocatable Object Code Formats".BYTE - the Small Systems Journal. Technical Forum.2 (11). Peterborough, New Hampshire, USA:Byte Publications, Inc.:198–205. ark:/13960/t59c88b4h, ark:/13960/t3kw76j24. Retrieved2021-12-06. (8 pages) (NB. Besides others describes an incompatible extension of the Intel hex format used byTechnical Design Labs (TDL).)
  31. ^abKreidl, Günter (June 1981)."Relocator: Das TDL-Format". Hardware.Nascom journal - Zeitschrift für Anwender des NASCOM 1 oder NASCOM 2 (in German).2 (6). Germersheim, Germany: Verlag NASCOM Journal, MK-Systemtechnik: 12–14 [12].Archived from the original on 2021-12-01. Retrieved2021-12-11. (20 pages) (NB. Shows a variant of theTDL format, which itself is a variant of the Intel hex format.)
  32. ^Rüger, Stefan M. (2022-06-16)."Provide file format I: Intel HEX with comments that ignores checksum errors".AVRDUDE.Archived from the original on 2023-11-25. Retrieved2023-11-25. (NB. AVRDUDE's comment option :I can incorrectly produce ":" characters as part of thehex dump.)
  33. ^Bull, Hans Eirik; Dean, Brian S.; Rüger, Stefan M.; Wunsch, Jörg (2023-07-15)."AVRDUDE - A program for downloading/uploading AVR microcontroller flash, EEPROM and more for AVRDUDE"(PDF). Version 7.2.Archived(PDF) from the original on 2023-11-23. Retrieved2023-11-23. p. 12:[…] I […] Intel Hex with comments on download and tolerance of checksum errors on upload […] (66 pages)
  34. ^abBeckler, Matthew L. (2016-07-25) [2016-07-19]."Blinky Grid - serial optical bit stream".Discourse. Minneapolis, Minnesota, USA: Wayne and Layne, LLC.Archived from the original on 2021-12-11. Retrieved2021-12-11.
  35. ^ab"micro:bit Universal Hex Format Specification - Specification for the micro:bit Universal Hex Format".micro:bit. 0.4.0.Micro:bit Educational Foundation. 2021-01-26 [2020].Archived from the original on 2021-08-14. Retrieved2021-12-08.[16][17] (NB. This represents kind of afat hex file format.)
  36. ^Intellec 8 Microcomputer System Operator's Manual.Intel Corporation. November 1973.
  37. ^"Appendix D. Hexadecimal Program Tape Format".Intellec 8/MOD 80 Operators Manual.Intel. June 1974. 98-003A.[…] Frames 7,8: Record Type […] Two ASCII characters. Currently (1974), all records are type 0. This field is reserved for future expansion […][18]
  38. ^Development Tools Catalog 1988(PDF).Intel Corporation. 1988. pp. 25–26,30–32. Order Number 280199-004.Archived(PDF) from the original on 2023-11-26. Retrieved2023-11-26. (46 pages)
  39. ^"PIC Microcontrollers: PIC Hex File Format".Kanda Electronics Blog. Canolafan, Llanafan, Aberystwyth, Wales, UK: Embedded Results Ltd. 2012-04-26.Archived from the original on 2021-08-16. Retrieved2021-12-11.
  40. ^"15.3 XC16-BIN2HEX Utility - 15.3.3 Input/Output Files".MPLAB XC16 Assembler, Linker and Utilities - User's Guide(PDF).Microchip Technology Inc. 2018 [2013]. pp. 240–241.ISBN 978-1-5224-2828-2. DS50002106D.Archived(PDF) from the original on 2019-01-22. Retrieved2023-12-05. p. 240:[…] Because the Intel hex file format is byte-oriented, and the 16-bit PC is not, program memory sections require special treatment. Each 24-bit program word is extended to 32 bits by inserting a so-called "phantom byte". Each program memory address is multiplied by 2 to yield a byte address. For example, a section that is located at 0x100 in program memory will be represented in the hex file as 0x200. Consider the following assembly language source: […] ; file test.s […] .section foo,code,address(0x100) […] .pword 0x112233 […] The file […] will be produced, with the following contents: […] :020000040000fa […] :040200003322110096 […] :00000001FF […] the data record (line 2) has a load address of 0200, while the source code specified address 0x100. […]t the data is represented in "little-endian" format, meaning the least significant byte appears first. The phantom byte appears last, just before the checksum. […] (277 pages)
  41. ^Kildall, Gary Arlen (February 1978) [1976]."A simple technique for static relocation of absolute machine code".Dr. Dobb's Journal of Computer Calisthenics & Orthodontia.3 (2).People's Computer Company: 10–13 (66–69).ISBN 0-8104-5490-4. #22 ark:/13960/t8hf1g21p. Retrieved2017-08-19.[19][20][21]. Originally presented at:Kildall, Gary Arlen (1977) [22–24 November 1976]. "A Simple Technique for Static Relocation of Absolute Machine Code". Written atNaval Postgraduate School, Monterey, California, USA. In Titus, Harold A. (ed.).Conference Record: Tenth Annual Asilomar Conference on Circuits, Systems and Computers: Papers Presented November 22–24, 1976.Asilomar Conference on Signals, Systems & Computers. Asilomar Hotel and Conference Grounds, Pacific Grove, California, USA: Western Periodicals Company. pp. 420–424.ISSN 1058-6393. Retrieved2021-12-06. (609 pages)
  42. ^Zschocke, Jörg (November 1987). "Nicht nur Entwicklungshilfe - Down-Loading für Einplatinencomputer am Beispiel des EPAC-09: Intel-Hex-Format".c't - magazin für computertechnik (in German). Vol. 1987, no. 11.Verlag Heinz Heise GmbH & Co. KG. pp. 198, 200,202–203, [200].ISSN 0724-8679.[…] Den Vorspann beschließt ein Byte, dessen Wert den Typ des Blockes angibt: 0 = Datenblock, 1 = Endblock. Auf diese Unterscheidung kann jedoch verzichtet werden, wenn sich ein Endblock auch durch eine Blocklänge gleich Null eindeutig kennzeichnen läßt. (So verfahren die meisten Assembler unterCP/M, auch der XASM09; das Typbyte ist dann immer Null). […][22] (NB.XASM09 is aMotorola 6809 assembler.)
  43. ^Prior, James E. (1989-02-24)."Re: Intel hex (*.HEX) format questions".Newsgroupcomp.os.cpm. Retrieved2020-02-27.
  44. ^abc"PIC16C5X Programming Specification 5.0 - PIC16C5X Hex Data Formats: 5.1. 8-Bit Split Intellec Hex Format (INHX8S) / 5.2. 8-Bit Merged Intellec Hex Format (INHX8M) / 5.3. 16-Bit Hex Format / 5.4. 8-Bit Word Format / 5.5. 16-Bit Word Format".Microchip Databook (1994 ed.).Microchip Technology Inc. April 1994. pp. 3-10 –3-11, 9-10, 9-15, 9-17, 9-21, 9-23, 9-27. DS00018G. Retrieved2020-02-28.[…] Assemblers for the PIC16C5X can produce PIC16C5X object files in various formats. A PIC16C5X programmer must be able to accept and send data in at least one of following formats. The 8-bit merged (INHX8M) format is preferred. […] format […] INHX8S […] produces two 8-bit Hex files. One file will contain the address / data pairs for the high order 8-bits and the other file will contain the low order 8-bits. File extensions for the object code will be '.obl' and '.obh' for low and high order files […] format […] INHX8M […] produces one 8-bit Hex file with a low byte / high byte combination. Since each address can only contain 8 bits in this format, all addresses will be doubled. File extensions for the object code will be '.obj' […] format […] INHX16 […] produces one 16-bit Hex file. File extension for the object code will be '.obj'. […][23][24]
  45. ^Beard, Brian (2016) [2010]."Microchip INHX8M HEX-record Format".Lucid Technologies.Archived from the original on 2020-02-28. Retrieved2020-02-28.
  46. ^Beard, Brian (2016) [2013]."Microchip INHX32 HEX-record Format".Lucid Technologies.Archived from the original on 2020-02-28. Retrieved2020-02-28.
  47. ^Paul, Matthias R. (1992).BINTEL: Binär-Image-Konverter mit Intel-Hex-Unterstützung - Bedienungsanleitung [Binary image converter with Intel Hex support - User manual] (in German). (NB. As a consequence of the tool's use to process, analyze, compare, split, cut, fill, combine, relocate or convert binary firmware images (f.e. for or from one or more ROMs) with deliberately sticky (fixed "1" or "0"), inverted, omitted ("don't care"), interconnected or swapped data or address lines (as sometimes used to easePCB routing ofparallel buses or forobfuscation reasons to makedisassembly more difficult), this binary image converter supported a number of extensions to the Intel Hex format.)

Further reading

[edit]

External links

[edit]
  • binex - a converter between Intel HEX and binary for Windows.
  • SRecord, a converter between Intel HEX and binary for Linux (usage), C++ source code.
  • kk_ihex, open source C library for reading and writing Intel HEX
  • libgis, open source C library that converts Intel HEX, Motorola S-Record, Atmel Generic files.
  • bincopy is a Python package for manipulating Intel HEX files.
  • SwiftIntelHex - a Swift package to parse Intel HEX files for iOS and macOS.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Intel_HEX&oldid=1310545218"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp