| |||
| Home > Embedded Software Development > Run-time memory models | |||
ARM Compiler toolchain provides the following run-time memory models:
The application stack and heap grow
towards each other in the same region of memory. See Figure 7. In this run-time
memory model, the heap is checked against the value of the stack
pointer when new heap space is allocated, for example, when malloc() is
called.
Example 2. One-region model routine
LOAD_FLASH ...
{
...
ARM_LIB_STACKHEAP 0x20000 EMPTY 0x20000 ; Heap and stack growing towards
{ } ; each other in the same region
...
}
The stack and heap are placed in separate regions of memory,
see Figure 8. For example,
you might have a small block of fast RAM that you want to reserve
for stack use only. For a two-region model you must import __use_two_region_memory.
In this run-time memory model, the heap is checked against the heap limit when new heap space is allocated.
Example 3. Two-region model routine
LOAD_FLASH ...
{
...
ARM_LIB_STACK 0x40000 EMPTY -0x20000 ; Stack region growing down
{ } ;
ARM_LIB_HEAP 0x28000000 EMPTY 0x80000 ; Heap region growing up
{ }
...
}
In both run-time memory models, the stack grows unchecked.
Using ARM® C and C++ Libraries and Floating-Point Support: