| |||
| Home > Using Scatter-loading Description Files > Equivalent scatter-loading descriptions for simple images > Type 2, one load region and non-contiguous output regions | |||
An image of this type consists of a single load region in the load view and three execution regions in the execution view. It is similar to images of type 1 except that the RW execution region is not contiguous with the RO execution region.
--ro-base specifies
the load and execution address of the region containing the RO output
section. address1--rw-base specifies
the execution address for the RW execution region.address2
Example 5.13 shows the
scatter-loading description equivalent to using --ro-base 0x010000
--rw-base 0x040000.
Example 5.13. Single load region and multiple execution regions
LR_1 0x010000 ; Defines the load region name as LR_1
{
ER_RO +0 ; The first execution region is called ER_RO and starts at end of previous region.
; Since there was no previous region, the address is 0x010000.
{
* (+RO) ; All RO sections are placed consecutively into this region.
}
ER_RW 0x040000 ; Second execution region is called ER_RW and starts at 0x040000.
{
* (+RW) ; All RW sections are placed consecutively into this region.
}
ER_ZI +0 ; The last execution region is called ER_ZI.
; The address is 0x040000 + size of ER_RW region.
{
* (+ZI) ; All ZI sections are placed consecutively here.
}
}
This description creates an image with one load region, named LR_1,
with a load address of 0x010000.
The image has three execution regions, named ER_RO, ER_RW, and ER_ZI,
that contain the RO, RW, and ZI output sections respectively. The
RO region is a root region. The execution address of ER_RO is 0x010000.
The ER_RW execution region is not contiguous
with ER_RO. Its execution address is 0x040000.
The ER_ZI execution region is placed immediately
following the end of the preceding execution region, ER_RW.
This is similar to images of type 2 with --rw-base with
the RW execution region separate from the RO execution region. However, --rwpi marks
the execution regions containing the RW output section as position-independent.
Example 5.14 shows the
scatter-loading description equivalent to using --ro-base 0x010000 --rw-base
0x018000 --rwpi.
Example 5.14. Position-independent data
LR_1 0x010000 ; The first load region is at 0x010000.
{
ER_RO +0 ; Default ABSOLUTE attribute is inherited from parent. The execution address
; is 0x010000 . The code and ro data cannot be moved.
{
* (+RO) ; All the RO sections go here.
}
ER_RW 0x018000 PI ; PI attribute overrides ABSOLUTE
{
* (+RW) ; The RW sections are placed at 0x018000 and they can be moved.
}
ER_ZI +0 ; ER_ZI region placed after ER_RW region.
{
* (+ZI) ; All the ZI sections are placed consecutively here.
}
}
ER_RO, the RO execution region, inherits
the ABSOLUTE attribute from the load region LR_1. The
next execution region, ER_RW, is marked as PI.
Also, because the ER_ZI region has an offset
of +0, it inherits the PI attribute
from the ER_RW region.
Similar scatter-loading descriptions can also be written to
correspond to the usage of other combinations of --ropi and --rwpi with
type 2 and type 3 images.