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

FreeBSD Manual Pages

  
 
  

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

NAME
     srec_aomf - Intel Absolute Object Module Format

DESCRIPTION
     The  Absolute Object Module Format (AOMF) is a subset of the 8051 OMF.  The
     structure of an absolute object file (the order of the records  in  it)  is
     similar to that of a relocatable object file.  There are three main differ-
     ences:  the first is that an absolute object file contains one module only,
     the  second is that not all the records can appear in the absolute file and
     the third is that the records can contain only absolute information.

   Generic Record Format
     Each record starts with a record type  which  indicates  the  type  of  the
     record,  and  record length which contain the number of bytes in the record
     exclusive of the first two fields. The record ends  with  a  checksum  byte
     which contains the 2s complement of the sum (modulo 256) of all other bytes
     in  the  record.  Therefore the sum (modulo 256) of all bytes in the record
     is zero.

     The record length includes the payload and checksum  fields,  but	excludes
     the type and length fields.

     All 16-bit fields are little-endian.
		     +---------+---------+---------+---------+
		     | REC     | Record  | Payload | CHK     |
		     | TYP     | Length  |	   | SUM     |
		     | 8 bits  | 16 bits |	   | 8 bits  |
		     +---------+---------+---------+---------+

     Here are some of the relevant record types:
			  0x01	 Scope Definition Record
			  0x02	 Module Start Record
			  0x04	 Module End Record
			  0x06	 Content Record
			  0x0E	 Segment Definition Record
			  0x12	 Debug Items Record
			  0x16	 Public Definition Record
			  0x18	 External Definition Record

     Names  are not stored as C strings.  Names are stored as a length byte fol-
     lowed by the contents.

   Structure
     An AOMF file consists of a module header record (0x02), followed by one  or
     more  content  (0x06),  scope (0x01) or debug (0x12) records, and ends in a
     module end record (0x04).

     The records with the following types are extraneous (they may appear in the
     file but are ignored):  0x0E, 0x16  and  0x18  (definition  records).   All
     records  which  are not part of the AOMF and are not extraneous are consid-
     ered erroneous.

   Module Header Record
	   +---------+---------+---------+---------+---------+---------+
	   |  REC    | Record  | Module  | TRN ID  | zero    | CHK     |
	   |  TYP    | Length  | Name	 | 8 bits  | 8 bits  | SUM     |
	   |  0x02   | 16 bits |	 |	   |	     | 8 bits  |
	   +---------+---------+---------+---------+---------+---------+

     Each module must starts with a module header record.  It is used  to  iden-
     tify  the	module	for  the RL51 and other future processors of 8051 object
     files.  In addition to the Module Name the record contains:

     TRN ID  The byte identifies the program which has generated this module:
				       0xFD   ASM51
				       0xFE   PL/M-51
				       0xFF   RL51.

   Module End Record
      +---------+---------+---------+---------+---------+---------+---------+
      |  REC	| Record  | Module  | zero    | REG	| zero	  | CHK     |
      |  TYP	| Length  | Name    | 16 bits | MSK	| 8 bits  | SUM     |
      |  0x04	| 16 bits |	    |	      | 8 bits	|	  | 8 bits  |
      +---------+---------+---------+---------+---------+---------+---------+

     The record ends the module sequence and contains the following information:
     characteristics

     MODULE NAME
	     The name of the module is given here for a consistency  check.   It
	     must match the name given in the Module Header Record.

     REGISTER MASK (REG MSK)
	     The field contains a bit for each of the four register banks.  Each
	     bit,  when set specifies that the corresponding bank is used by the
	     module:

	     Bit 0 (the least significant bit)
		     bank #0.

	     Bit 1   bank #1.

	     Bit 2   bank #2.

	     Bit 3   bank #3.

   Content Record
	   +---------+---------+---------+---------+---------+---------+
	   |  REC    | Record  | SEG ID  | Offset  |  DATA   | CHK     |
	   |  TYP    | Length  | 8 bits  | 16 bits |	     | SUM     |
	   |  0x06   | 16 bits |	 |	   |	     | 8 bits  |
	   +---------+---------+---------+---------+---------+---------+

     This record provides one or more bytes of contiguous  data,  from	which  a
     portion of a memory image may be constructed.

     SEG ID  This field must be zero.

     OFFSET  Gives the absolute address of the first byte of data in the record,
	     within the CODE address space.

     DATA    A	sequence  of  data  bytes  to  be  loaded  from  OFFSET  to OFF-
	     SET+RECORDLENGTH-5.

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

SOURCE
     http://www.intel.com/design/mcs96/swsup/omf96_pi.pdf
     ftp://download.intel.com/design/mcs51/SWSUP/omf51.exe (zip archive)
     http://www.elsist.net/WebSite/ftp/various/OMF51EPS.pdf

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_aomf(5)

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

home | help