SPRUI03E June 2015 – January 2023
You can convert specific sections of the object file by name with the hex conversion utility SECTIONS directive. You can also specify those sections that you want to locate in ROM at a different address than the load address specified in the linker command file. If you:
Uninitialized sections are never converted, whether or not you specify them in a SECTIONS directive.
Use the SECTIONS directive in a command file. (See Section 11.3.2.) The general syntax is:
SECTIONS { | |
oname(sname)[:] [paddr=value] oname(sname)[:] [paddr= boot] oname(sname)[:] [boot] ... } |
SECTIONS | begins the directive definition. |
oname | identifies the object filename the section is located within. The filename is optional when only a single input file is given, but required otherwise. |
sname | identifies a section in the input file. If you specify a section that does not exist, the utility issues a warning and ignores the name. |
paddr=value | specifies the physical ROM address at which this section should be located. This value overrides the section load address given by the linker. This value must be a decimal, octal, or hexadecimal constant. It can also be the word boot (to indicate a boot table section for use with a boot loader). If your file contains multiple sections, and if one section uses a paddr parameter, then all sections must use a paddr parameter. |
boot | configures a section for loading by a boot loader. This is equivalent to using paddr=boot. Boot sections have a physical address determined by the location of the boot table. The origin of the boot table is specified with the --bootorg option. |
For more similarity with the linker's SECTIONS directive, you can use colons after the section names (in place of the equal sign on the boot keyboard). For example, the following statements are equivalent:
SECTIONS { .text: .data: boot }
SECTIONS { .text: .data = boot }
In the example below, the object file contains six initialized sections: .text, .data, .const, .vectors, .coeff, and .tables. Suppose you want only .text and .data to be converted. Use a SECTIONS directive to specify this:
SECTIONS { .text: .data: }
To configure both of these sections for boot loading, add the boot keyword:
SECTIONS { .text = boot .data = boot }