|Home > Image Structure and Generation > Simple images > Type 2 image structure, one load region and non-contiguous execution regions|
A Type 2 image consists of a single load region, and three execution regions in execution view. The RW execution region is not contiguous with the RO execution region.
This approach is used, for example, for ROM-based embedded systems, where RW data is copied from ROM to RAM at startup. The following figure shows the load and execution view for a Type 2 image without execute-only (XO) code:
Use the following command for images of this type:
armlink --cpu=8-A.32 --ro_base=0x0 --rw_base=0xA000
In the load view, the single load region consists of the RO and RW output sections placed consecutively, for example, in ROM. Here, the RO region is a root region, and the RW region is non-root. The ZI output section does not exist at load time. It is created at runtime.
In the execution view, the first execution region contains the RO output section and the second execution region contains the RW and ZI output sections.
The execution address of the region containing the RO output section is the same as its load address, so the RO output section does not have to be moved. That is, it is a root region.
The execution address of the region containing the RW output section is different from its load address, so the RW output section is moved from its load address (from the single load region) to its execution address (into the second execution region). The ZI execution region, and its output section, is placed contiguously with the RW execution region.
Use armlink options
--ro_base= to specify the load and execution address for the RO output
--rw_base= to specify the execution address of the RW
output section. If you do not use the
--ro_base option to specify the address, the default value of
armlink. For an embedded system,
is typical for the
--ro_base value. If you do
not use the
--rw_base option to
specify the address, the default is to place RW directly above RO (as in a Type 1
--zi_base command-line option to specify the base address of a ZI
For images that contain XO sections, the XO output section is placed at the
address specified by
The RO and RW output sections are placed consecutively and immediately after the XO
For images that contain XO sections, the XO execution region is placed at the address
--ro_base. The RO execution region is placed contiguously and
immediately after the XO execution region.
If you use
--xo_base , then the XO execution
region is placed in a separate load region at the specified address.