Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1126 savelij 1
.TH p2hex 1
2
 
3
.SH NAME
4
.B p2hex \- convert code files into hex files
5
 
6
.SH SYNTAX
7
.B p2hex
8
[ option(s) ] <name(s)> [ further options/names ]
9
 
10
.SH DESCRIPTION
11
 
12
P2HEX is a tool to convert the contents of one or several code files
13
generated by AS into HEX files.  A HEX file is a common method of
14
representing binary data in a way that is human-readable and
15
transferrable over non-transparent data lines.  Generally spoken,
16
each byte of code or data is represented by two characters that show
17
the byte in its hexadecimal notation.  A HEX file also contains
18
additional information like addresses and checksums that ease
19
processing of the data.  Unfortunately, there is no generally
20
accepted standard format for HEX files.  Instead, every processor
21
manufacturer developed his own format and some of them have become
22
"industry standards".  P2HEX supports all formats that seem to have
23
gained acceptance, with some variations that are commonplace.
24
 
25
Arguments to P2HEX may be either command line parameters or file name
26
specifications.  Any argument that starts with the charactes +, - or
27
/ is regarded as a comand line parameter (which may take an
28
additional command line argument); any other argument is regarded as
29
a file name.  Generally, P2HEX needs at least two file names: An
30
input code file and the name of the HEX output file.  If multiple
31
file names are given, P2HEX will always take the last name as the
32
output file's name.  If an input file name does not have an
33
extension, the extension '.p' is added automatically.  Similarly, the
34
extension '.hex' is added automatically to the target file's name.
35
A special case occurs when only one file name is given: P2HEX will
36
then take its name as the source (possibly extended with '.p'), and
37
the same name as target (with '.hex' as additional or replaced
38
extension).
39
 
40
By default, P2HEX will choose a HEX format that is the most common
41
for the processor family a source file contains code for; this
42
however means that if the source file(s) contain(s) code for different
43
processor families, the HEX file might become an undesirable mixture
44
of formats; use the 
45
.B -F
46
command-line parameter to force a certain format then.
47
 
48
.SH COMMAND-LINE PARAMETERS
49
 
50
If a command-line parameter starts with a slash(/) or minus sign(-),
51
it turns an option on; if a command-line parameter starts with a plus
52
sign(+), it turns a specific option off.  Numeric arguments to
53
parameters can be either written in decimal or hexadecimal notation. 
54
For hexadecimal notation, prefix the number with a dollar($) sign. 
55
In the following list, all options will be shown in the form that is
56
needed to change the default behaviour, which might be a plus or
57
minus sign, depening on wether the option is on or off by default.
58
 
59
.B p2hex
60
accepts the following command-line parameters:
61
.TP
62
.B -a
63
 
64
Tell P2HEX to use relative addressing in the output HEX file.  By
65
default, addresses the HEX file will be exactly the same absolute
66
addresses as they were in the code file.  This may create problems
67
with some EPROM-burners if your code does not start at address 0.  In
68
relative mode, the address filter's start address (see the 
69
.B -r
70
command line switch) is subtracted from all addresses specifications
71
in the HEX file (with the exception of the entry address). 
72
Therefore, addresses in the HEX file again start at 0.
73
.TP
74
.B -d < <start address>-<stop address> >
75
Tell P2HEX that items in the address range given by the argument
76
should be regarded as data rather than code.  This option only has a
77
meaning for the TI-DSK format that can differenciate between code and
78
data.  This option is principally obsolete since P2HEX can now directly
79
process data from the DATA segment.  It should not be used in new projects,
80
since it may be removed in the near future.
81
.TP
82
.B -e <address>
83
 
84
Set an entry address or modify an existing one.  Some HEX file
85
formats can carry a special record for an entry address that tells a
86
program loader where to jump after a program has been loaded. 
87
Normally, this address is generated by AS if the program's END
88
statement has a label as argument, but this options allows to change
89
the entry point or add one if it was forgotten in the program itself.
90
.TP
91
.B -F <Default|Moto|Intel|Intel16|Intel32|MOS|Tek|DSK|C>
92
 
93
Force a certain format for the output HEX file.  By default, P2HEX
94
will choose one depending on the target processor.  Using 
95
.B Default
96
as argument will also set this behaviour, which might be useful to
97
revert to P2HEX's default behaviour if the default has been changed
98
(see the discussion of the 
99
.B P2HEXCMD
100
variable below for presetting parameters).
101
 
102
.B Moto
103
stands for the Motorola S-Record format, which allows addresses from
104
16 to 32 bits in length and entry addresses.  It bears its name due
105
to the fact that every record starts with the letter S. 
106
 
107
.B Intel
108
is the "standard" Intellec-MCS8-Format for a variety of Intel
109
8-Bit-CPUs that almost became a standard, but was originally limited
110
to 16-bit addresses.  In later editions, the addressing capability
111
was extended to 20 (
112
.B Intel16
113
) and 32 bits (
114
.B Intel32
115
).
116
 
117
.B MOS
118
is a simple format introduced by the manufacturer MOS for their line
119
of 65xx CPUs.  It is limited to 16-bit addresses, just like the 
120
.B Tek
121
format that was defined by Tektronix.
122
 
123
.B DSK
124
is the format Texas Instruments uses for their line of 16-bit
125
fixed-point signal processors.  In contrast to all other formats, it
126
is word-oriented and can distinguish between data and code segments.
127
.B Atmel
128
is the simple Hex format defined by Atmel for the AVR RISC family.
129
.TP
130
.B -f <number>[,<further numbers>]
131
 
132
Add <number> to the list of record header IDs that allow a record
133
from a source file to be written to the target file.  A certain
134
header ID marks code for a certain target processor family; thus,
135
this filter allows to distill code for a certain processor out of a
136
source file that contains code for different processor families.
137
Negation of this parameter removes certain header IDs from P2HEX's
138
list.  See the user manual of AS for a list of all possible header ID
139
values.  If P2HEX's list of header IDs is empty, no filtering will
140
take place, i.e. all records from a source file will make it into the
141
target file.
142
.TP
143
.B -i <0|1|2>
144
 
145
Change the terminating line for an Intel-HEX file.  Normally, an
146
Intel-HEX file is terminated with the line
147
.B :00000001FF ,
148
but there are sources that also mention 
149
.B :00000001
150
or
151
.B :0000000000
152
as the last line.  The numeric argument of this parameter selects one
153
of these opportunities, with the first one being the default.  This
154
parameter only has an effect if the target file's format is one of
155
the Intel-HEX variants.
156
.TP
157
.B -l <length>
158
 
159
Set the maximum number of bytes per record, and therefore the maximum
160
length of a line in the target file.  Possible values are between 2
161
and 254 bytes, with 16 being the default.
162
.TP
163
.B -m <0..3>
164
 
165
Set one of the four Intel-Hex variants defined by Microchip for the
166
PIC family of microcontrollers.  The Default is the INHX8(0) format,
167
which contains all words in a Lobyte-Hibyte-ordering.  INHX16M(1) does just
168
the opposite, whereas INHX8L(2) and INHX8H(3) only store the lower
169
resp. higher bytes of each word.  This parameter only has an effect
170
if the target file's format is one of the Intel-HEX variants.
171
.TP
172
.B -r < <start>-<stop> >
173
 
174
Set a certain address range to be filtered out of the input file(s). 
175
Code that lies outside this range does not appear in the output file. 
176
As a special option,
177
.B <start>
178
and
179
.B <stop>
180
may consist of just a single dollar sign (escape this
181
in UNIX shells!) or 0x to signify the lowest resp. highest address that
182
occurs in the input file(s).  This is also the default.  Using this
183
option will implicitly enable a second pass over all input files to find
184
the minimum and maximum values before conversion starts, reducing the
185
speed of P2HEX slightly.
186
.TP
187
.B -R <offset>
188
 
189
Relocate all addresses from the source file by adding the given offset.
190
.TP
191
.B -s
192
 
193
In Motorola S-Record format, force P2HEX to write a termination record
194
after each group of data records, which may be necessary in some cases
195
(but creates problems most of the time...)
196
.TP
197
.B +5
198
 
199
Disable output of Motorola S5-records, which contain the number of
200
data records that were sent and therefore allow an additional level
201
of checking.  However, they are not understood by all programs and
202
therefore might be a source of trouble.
203
.TP
204
.B -M <1|2|3>
205
 
206
Force P2HEX to use a minimum length for the address fields of Motorola
207
S-records.  For example, a value of 2 will effectively disable S1 records,
208
and a value of 3 will force usage of S3 records.  The default is 1, which
209
enables full automatic setting of the S record length.
210
.TP
211
.B -avrlen <2|3>
212
 
213
Set the address field length of Atmel AVR Hex files to either two or three
214
bytes (the latter is the default).
215
.TP
216
.B -k
217
 
218
Instruct P2HEX to erase the program source files after conversion.
219
.TP
220
.B -avrlen <2|3>
221
 
222
Set the width of the address field used for the Atmel hex file format.
223
By default, 3-byte addresses will be used.
224
.TP
225
.B -segment <CODE|DATA|....>
226
 
227
Select the address space hex data is created from.  By default, only records
228
for the CODE segment (plus DATA for TI DSK) will be considered.  Use this
229
option with different arguments if the source file contains data from other
230
address spaces.  This way, multiple HEX files (one per address space) can
231
be produced.
232
.TP
233
.B -cformat <string>
234
If C-style output is selected, this option allows to influence its structure.
235
See the manual for details on this format string.
236
.TP
237
.B -q or -quiet
238
 
239
Enable quiet operation mode, suppressing copyright and purely informative
240
messages.  Only errors will be displayed.
241
 
242
.SH PRESETTING PARAMETERS
243
 
244
Parameters need not neccessarily be given in the command line itself.  Before
245
processing of command line parameters starts, P2HEX will look if the
246
.B P2HEXCMD
247
environment variable is defined.  If it exists, its contents will be
248
treated as additional command line paramters whose syntax is absolutely 
249
equal to normal command line parameters.  As exception is made if the 
250
variable's contents start with a '@' sign; in such a case, the string after
251
the '@' sign is treated as the name of a file that contains the options.
252
Such a file (also called a 'key file') has the advantage that it allows
253
the options to be written in different lines, and it does not have a size
254
limit.  Some operating systems (like MS-DOS) do have a length limit on 
255
command lines and environment variable contents, so the key file may be
256
your only option if you have a lot of lengthy parameters for P2HEX.
257
 
258
.SH RETURN CODES
259
 
260
.B p2hex
261
may return with the following codes:
262
.TP
263
.B 0
264
no errors.
265
.TP
266
.B 1
267
incorrect command line parameters.
268
.TP
269
.B 2
270
I/O-error.
271
.TP
272
.B 3
273
An input file had an incorrect format.
274
 
275
.SH EXAMPLES
276
 
277
To convert a file 
278
.B file1.p
279
fully into its HEX representation on a Unix platform, use
280
.PP
281
.B p2hex -r \e$-\e$ file1
282
.PP
283
If you additionally want to force usage of the Motorola S-Record format, use
284
.PP
285
.B p2hex -r \e$-\e$ -F Moto file1
286
.PP
287
 
288
.SH NATIONAL LANGUAGE SUPPORT
289
 
290
p2hex supports national languages in the same way as AS.  See the manual
291
page for asl(1) for more information about this.
292
 
293
.SH TIPS
294
 
295
Calling P2HEX without any arguments will print a short help
296
listing all command line parameters.
297
 
298
.SH SEE ALSO
299
 
300
asl(1), plist(1), pbind(1), p2bin(1)
301
 
302
.SH HISTORY
303
 
304
P2HEX originally appeared as an AS tool in 1992, written in
305
Borland-Pascal, and was ported to C and UNIX in 1996.
306
 
307
.SH BUGS
308
 
309
Command line interpreters of some operating systems reserve some 
310
characters for their own use, so it might be necessary to give
311
command line parameters with certain tricks (e.g., with the help
312
of escape characters).
313
 
314
P2HEX does not have so far an opportunity to filter records by
315
target segment.  Instead, records that contain data for any other
316
segment than CODE are completely ignored.
317
 
318
.SH AUTHOR(S)
319
 
320
Alfred Arnold (alfred@ccac.rwth-aachen.de)
321