Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
srec_intel16(5) 	       File Formats Manual		 srec_intel16(5)

NAME
     srec_intel16 - Intel Hexadecimal 16-bit file format specification

DESCRIPTION
     This format is also known as the INHX16 format.

     This  document  describes the hexadecimal object file format for 16-bit mi-
     croprocessors.

     This format is very similar to the srec_intel(5) format,  except  that  the
     addresses are word addresses.  The count field is a word count.

     The  hexadecimal  representation  of  binary is coded in ASCII alphanumeric
     characters.  For example, the 8-bit binary value 0011-1111 is 3F  in  hexa-
     decimal.	To  code this in ASCII, one 8-bit byte containing the ASCII code
     for the character '3' (0011-0011 or 0x33) and  one  8-bit	byte  containing
     the)  ASCII  code	for  the character 'F' (0100-0110 or 0x46) are required.
     For each byte value, the high-order hexadecimal digit is always  the  first
     digit  of the pair of hexadecimal digits.	This representation (ASCII hexa-
     decimal) requires twice as many bytes as the binary representation.

     A hexadecimal object file is blocked into records, each of  which	contains
     the  record  type,  length, memory load address and checksum in addition to
     the data.	There are currently six (6) different types of records that  are
     defined,  not  all  combinations  of these records are meaningful, however.
     The record are:

     *
       Data Record

     *
       End of File Record

     *
       Extended Segment Address Record

     *
       Start Segment Address Record

     *
       Extended Linear Address Record

     *
       Start Linear Address Record

   General Record Format
     +--------+--------+--------+--------+--------+--------+
     | Record | Record | Load	| Record |  Data  | Check  |
     | Mark   | Length | Offset | Type	 |	  | sum    |
     +--------+--------+--------+--------+--------+--------+

     Record Mark.
	     Each record begins with a Record Mark field  containing  0x3A,  the
	     ASCII code for the colon (":") character.

     Record Length
	     Each record has a Record Length field which specifies the number of
	     16-bit  words  of information or data which follows the Record Type
	     field of the record.  This field is one byte,  represented  as  two
	     hexadecimal  characters.	The  maximum  value of the Record Length
	     field is hexadecimal 'FF' or 255.

     Load Offset
	     Each record has a Load Offset  field  which  specifies  the  16-bit
	     starting  load  offset  of  the data words, therefore this field is
	     only used for Data Records (if the words are loaded as  bytes,  the
	     address needs to be doubled).  In other records where this field is
	     not  used, it should be coded as four ASCII zero characters ("0000"
	     or 0x30303030).  This field one 16-bit word,  represented	as  four
	     hexadecimal characters.

     Record Type
	     Each record has a Record Type field which specifies the record type
	     of this record.  The Record Type field is used to interpret the re-
	     maining  information  within  the	record.  This field is one byte,
	     represented as two hexadecimal characters.  The  encoding	for  all
	     the current record types are:

	     0	Data Record

	     1	End of File Record

	     5	Execution Start Address Record

     Data    Each  record  has a variable length Data field, it consists of zero
	     or more 16-bit words encoded as set of 4 hexadecimal  digits,  most
	     significant  digit first.	The interpretation of this field depends
	     on the Record Type field.

     Checksum
	     Each record ends with a Checksum  field  that  contains  the  ASCII
	     hexadecimal  representation  of  the two's complement of  the 8-bit
	     bytes that result from converting each pair  of  ASCII  hexadecimal
	     digits  to one byte of binary, from and including the Record Length
	     field to and including the last byte of the Data field.  Therefore,
	     the sum of all the ASCII pairs in a record after converting to  bi-
	     nary,  from  the  Record Length field to and including the Checksum
	     field, is zero.

   Data Record
     (8-, 16- or 32-bit formats)
     +--------+--------+--------+--------+--------+--------+
     | Record | Record | Load	| Record |  Data  | Check  |
     | Mark   | Length | Offset | Type	 |	  | sum    |
     | (":")  |        |	|	 |	  |	   |
     +--------+--------+--------+--------+--------+--------+

     The Data Record provides a set of hexadecimal  digits  that  represent  the
     ASCII code for data bytes that make up a portion of a memory image.

     The contents of the individual fields within the record are:

     Record Mark
	     This  field  contains  0x3A,  the hexadecimal encoding of the ASCII
	     colon (":") character.

     Record Length
	     The field contains two ASCII hexadecimal digits  that  specify  the
	     number  of  16-bit  data words in the record.  The maximum value is
	     255 decimal.

     Load Offset
	     This field contains four ASCII hexadecimal digits representing  the
	     word  address  at which the first word of the data is to be placed.
	     (For an exquivalent bytes address, double it.)

     Record Type
	     This field contains 0x3030, the hexadecimal encoding of  the  ASCII
	     character	"00",  which  specifies  the  record  type  to be a Data
	     Record.

     Data    This field contains sets of four ASCII hexadecimal digits, one  set
	     for each 16-bit data word, most significant digit first.

     Checksum
	     This  field  contains the check sum on the Record Length, Load Off-
	     set, Record Type, and Data fields.

   Execution Start Address Record
     +--------+--------+--------+--------+--------+--------+
     | Record | Record | Load	| Record | EIP (4 | Check  |
     | Mark   | Length | Offset | Type	 | bytes) | sum    |
     | (":")  | (4)    | (0)	| (5)	 |	  |	   |
     +--------+--------+--------+--------+--------+--------+

     The Execution Start Address Record is used to specify the	execution  start
     address  for the object file.  This is where the loader is to jump to begin
     execution once the hex load is complete.

     The Execution Start Address Record can appear anywhere in a hexadecimal ob-
     ject file.  If such a record is not present in a hexadecimal object file, a
     loader is free to assign a default execution start address.

     The contents of the individual fields within the record are:

     Record mark
	     This field contains 0x3A, the hexadecimal	encoding  of  the  ASCII
	     colon (":") character.

     Record length
	     The  field  contains  0x3032, the hexadecimal encoding of the ASCII
	     characters "02", which is the length, in bytes, of the EIP register
	     content within this record.

     Load Offset
	     This field contains 0x30303030, the  hexadecimal  encoding  of  the
	     ASCII  characters	"0000",  since	this  field is not used for this
	     record.

     Record Type
	     This field contains 0x3035, the hexadecimal encoding of  the  ASCII
	     character	"05",  which specifies the record type to be a Start Ad-
	     dress Record.

     EIP     This field contains eight ASCII hexadecimal digits that specify the
	     address.  The field is encoded big-endian (most  significant  digit
	     first).

     Checksum
	     This  field  contains the check sum on the Record length, Load Off-
	     set, Record Type, and EIP fields.

   End of File Record
     This shall be the last record in the file.
     +--------+--------+--------+--------+--------+
     | Record | Record | Load	| Record | Check  |
     | Mark   | Length | Offset | Type	 | sum	  |
     | (":")  | (0)    | (0)	| (1)	 | (0xFF) |
     +--------+--------+--------+--------+--------+

     The End of File Record specifies the end of the hexadecimal object file.

     The contents of the individual fields within the record are:

     Record mark
	     This field contains 0x3A, the hexadecimal	encoding  of  the  ASCII
	     colon (":") character.

     Record Length
	     The  field  contains  0x3030, the hexadecimal encoding of the ASCII
	     characters "00".  Since this  record  does  not  contain  any  Data
	     bytes, the length is zero.

     Load Offset
	     This  field  contains  0x30303030,  the hexadecimal encoding of the
	     ASCII characters "0000", since this field	is  not  used  for  this
	     record.

     Record Type
	     This  field  contains 0x3031, the hexadecimal encoding of the ASCII
	     character "01", which specifies the record type to  be  an  End  of
	     File Record.

     Checksum
	     This  field  contains the check sum an the Record Length, Load Off-
	     set, and Record Type fields.  Since all the fields are static,  the
	     check  sum  can  also  be	calculated  statically, and the value is
	     0x4646, the hexadecimal encoding of the ASCII characters "FF".

   Size Multiplier
     In general, binary data will expand in sized  by  approximately  2.3  times
     when represented with this format.

EXAMPLE
     Here  is an example INHX16 file.  It contains the data "Hello, World" to be
     loaded at address 0.
	    :0700000065486C6C2C6F5720726F646CFF0AA8
	    :00000001FF

COPYRIGHT
     srec_cat version 1.64
     Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,  2006,  2007,
     2008, 2009, 2010, 2011, 2012, 2013, 2014 Peter Miller

     The srec_cat program comes with ABSOLUTELY NO WARRANTY; for details use the
     'srec_cat	-VERSion  License'  command.   This is free software and you are
     welcome to redistribute it under certain conditions; for  details	use  the
     'srec_cat -VERSion License' command.

MAINTAINER
     Scott Finneran   E-Mail:	scottfinneran@yahoo.com.au
     Peter Miller     E-Mail:	pmiller@opensource.org.au

Reference Manual		     SRecord			 srec_intel16(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=srec_intel16&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help