1srec_aomf(5) File Formats Manual srec_aomf(5)
2
3
4
6 srec_aomf - Intel Absolute Object Module Format
7
9 The Absolute Object Module Format (AOMF) is a subset of the 8051 OMF.
10 The structure of an absolute object file (the order of the records in
11 it) is similar to that of a relocatable object file. There are three
12 main differences: the first is that an absolute object file contains
13 one module only, the second is that not all the records can appear in
14 the absolute file and the third is that the records can contain only
15 absolute information.
16
17 Generic Record Format
18 Each record starts with a record type which indicates the type of the
19 record, and record length which contain the number of bytes in the
20 record exclusive of the first two fields. The record ends with a check‐
21 sum byte which contains the 2s complement of the sum (modulo 256) of
22 all other bytes in the record. Therefore the sum (modulo 256) of all
23 bytes in the record is zero.
24
25 The record length includes the payload and checksum fields, but
26 excludes the type and length fields.
27
28 All 16‐bit fields are little‐endian.
29
30 ┌────────┬─────────┬─────────┬─────────┐
31 │REC │ Record │ Payload │ CHK │
32 │TYP │ Length │ │ SUM │
33 │8 bits │ 16 bits │ │ 8 bits │
34 └────────┴─────────┴─────────┴─────────┘
35 Here are some of the relevant record types:
36
37 0x01 Scope Definition Record
38 0x02 Module Start Record
39 0x04 Module End Record
40 0x06 Content Record
41 0x0E Segment Definition Record
42 0x12 Debug Items Record
43 0x16 Public Definition Record
44 0x18 External Definition Record
45
46 Names are not stored as C strings. Names are stored as a length byte
47 followed by the contents.
48
49 Structure
50 An AOMF file consists of a module header record (0x02), followed by one
51 or more content (0x06), scope (0x01) or debug (0x12) records, and ends
52 in a module end record (0x04).
53
54 The records with the following types are extraneous (they may appear in
55 the file but are ignored): 0x0E, 0x16 and 0x18 (definition records).
56 All records which are not part of the AOMF and are not extraneous are
57 considered erroneous.
58
59 Module Header Record
60 ┌────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
61 │ REC │ Record │ Module │ TRN ID │ zero │ CHK │
62 │ TYP │ Length │ Name │ 8 bits │ 8 bits │ SUM │
63 │ 0x02 │ 16 bits │ │ │ │ 8 bits │
64 └────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
65 Each module must starts with a module header record. It is used to
66 identify the module for the RL51 and other future processors of 8051
67 object files. In addition to the Module Name the record contains:
68
69 TRN ID The byte identifies the program which has generated this mod‐
70 ule:
71
72 0xFD ASM51
73 0xFE PL/M-51
74 0xFF RL51.
75
76 Module End Record
77 ┌────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
78 │ REC │ Record │ Module │ zero │ REG │ zero │ CHK │
79 │ TYP │ Length │ Name │ 16 bits │ MSK │ 8 bits │ SUM │
80 │ 0x04 │ 16 bits │ │ │ 8 bits │ │ 8 bits │
81 └────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
82 The record ends the module sequence and contains the following informa‐
83 tion: characteristics
84
85 MODULE NAME
86 The name of the module is given here for a consistency check.
87 It must match the name given in the Module Header Record.
88
89 REGISTER MASK (REG MSK)
90 The field contains a bit for each of the four register banks.
91 Each bit, when set specifies that the corresponding bank is
92 used by the module:
93
94 Bit 0 (the least significant bit)
95 bank #0.
96
97 Bit 1 bank #1.
98
99 Bit 2 bank #2.
100
101 Bit 3 bank #3.
102
103 Content Record
104 ┌────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
105 │ REC │ Record │ SEG ID │ Offset │ DATA │ CHK │
106 │ TYP │ Length │ 8 bits │ 16 bits │ │ SUM │
107 │ 0x06 │ 16 bits │ │ │ │ 8 bits │
108 └────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
109 This record provides one or more bytes of contiguous data, from which a
110 portion of a memory image may be constructed.
111
112 SEG ID This field must be zero.
113
114 OFFSET Gives the absolute address of the first byte of data in the
115 record, within the CODE address space.
116
117 DATA A sequence of data bytes to be loaded from OFFSET to OFF‐
118 SET+RECORDLENGTH−5.
119
120 Size Multiplier
121 In general, raw binary data will expand in sized by approximately 1.02
122 times when represented with this format.
123
125 http://www.intel.com/design/mcs96/swsup/omf96_pi.pdf
126 ftp://download.intel.com/design/mcs51/SWSUP/omf51.exe (zip archive)
127 http://www.elsist.net/WebSite/ftp/various/OMF51EPS.pdf
128
130 srec_cat version 1.64
131 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
132 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Peter Miller
133
134 The srec_cat program comes with ABSOLUTELY NO WARRANTY; for details use
135 the 'srec_cat -VERSion License' command. This is free software and you
136 are welcome to redistribute it under certain conditions; for details
137 use the 'srec_cat -VERSion License' command.
138
140 Scott Finneran E‐Mail: scottfinneran@yahoo.com.au
141 Peter Miller E‐Mail: pmiller@opensource.org.au
142
143
144
145Reference Manual SRecord srec_aomf(5)