The hex conversion utility output address
field corresponds to the ROM device address. The EPROM programmer burns the data into the
location specified by the hex conversion utility output file address field. The hex
conversion utility offers some mechanisms to control the starting address in ROM of each
section. However, many EPROM programmers offer direct control of
the location in ROM in which the data is burned.
The address
field of the hex-conversion utility output file is controlled by the following items, which
are listed from low to high priority:
- The linker command file. By
default, the address field of the hex conversion utility output file is the load address
(as given in the linker command file) .
- The paddr parameter of the SECTIONS
directive. When the paddr parameter is specified for a section, the hex conversion
utility bypasses the section load address and places the section in the address specified
by paddr.
- The --zero option. When you use
the --zero option, the utility resets the address origin to 0 for each output file. Since
each file starts at 0 and counts upward, any address records represent offsets from the
beginning of the file (the address within the ROM) rather than actual target addresses of
the data.
You must use the --zero option
in conjunction with the --image option to force the starting address in each output file
to be zero. If you specify the --zero option without the --image option, the utility
issues a warning and ignores the --zero option.
- The --byte option. Some EPROM
programmers may require the output file address field to contain a byte count rather than
a word count. If you use the −byte option, the output file address increments once for
each byte. For example, if the starting address is 0h, the first line contains eight
words, and you use no −byte option, the second line would start at address 8 (8h). If the
starting address is 0h, the first line contains eight words, and you use the −byte option,
the second line would start at address 16 (010h). The data in both examples are the same;
−byte affects only the calculation of the output file address field, not the actual target
processor address of the converted data.
The --byte option causes the address records in an output
file to refer to byte locations within the file, whether the target processor is
byte-addressable or not.