Non-Confidential | ![]() | ARM 100748_0607_00_en | ||
| ||||
Home > Mapping Code and Data to the Target > Reserving an empty block of memory > Example of reserving an empty block of memory |
This example shows how to reserve and empty block of memory for stack and heap using a scatter-loading description. It also shows the related symbols that the linker generates.
In the following example, the execution region definition STACK 0x800000 EMPTY –
defines a region that is called 0x10000
STACK
. The region starts at address
and ends at
address 0x7F0000
:0x800000
LR_1 0x80000 ; load region starts at 0x80000 { STACK 0x800000 EMPTY -0x10000 ; region ends at 0x800000 because of the ; negative length. The start of the region ; is calculated using the length. { ; Empty region for placing the stack } HEAP +0 EMPTY 0x10000 ; region starts at the end of previous ; region. End of region calculated using ; positive length { ; Empty region for placing the heap } … ; rest of scatter-loading description }
EMPTY
execution region is not initialized to zero at
runtime. If the address is in relative (+
) form and the length is negative, the
linker generates an error.offset
The following figure shows a diagrammatic representation for this example.
In this example, the linker generates the following symbols:
Image$$STACK$$ZI$$Base = 0x7f0000 Image$$STACK$$ZI$$Limit = 0x800000 Image$$STACK$$ZI$$Length = 0x10000 Image$$HEAP$$ZI$$Base = 0x800000 Image$$HEAP$$ZI$$Limit = 0x810000 Image$$HEAP$$ZI$$Length = 0x10000
The EMPTY
attribute applies only to
an execution region. The linker generates a warning and ignores an EMPTY
attribute that is used in a load region
definition.
The linker checks that the address space used for the EMPTY
region does not coincide with any other execution
region.