mirror of https://github.com/ARMmbed/mbed-os.git
uVisor: Standardize available legacy heap and stack
With the RTOS, the STACK_SIZE specified here is unrelated to the stack size available for the main thread (that runs pre_main). Save memory by reducing the stack size to a more reasonable amount. On uVisor, HEAP_SIZE is both a minimum available and maximum available heap size. The heap can't grow beyond the end of the heap into the neighboring stack. On all uVisor-supported platforms, guarantee at least 0x6000 bytes of heap space. This increases the portability of uVisor applications as the memory available for legacy heap allocations is guaranteed. This helps to avoid out of memory errors on platforms that were previously guaranteeing less memory.pull/3755/head
parent
de47c55a19
commit
0bd09b0189
|
@ -53,9 +53,15 @@ ENTRY(Reset_Handler)
|
|||
|
||||
__ram_vector_table__ = 1;
|
||||
|
||||
/* Heap 1/4 of ram and stack 1/8 */
|
||||
__stack_size__ = 0x8000;
|
||||
__heap_size__ = 0x10000;
|
||||
/* With the RTOS in use, this does not affect the main stack size. The size of
|
||||
* the stack where main runs is determined via the RTOS. */
|
||||
__stack_size__ = 0x400;
|
||||
|
||||
/* This is the guaranteed minimum available heap size for an application. When
|
||||
* uVisor is enabled, this is also the maximum available heap size. The
|
||||
* HEAP_SIZE value is set by uVisor porters to balance the size of the legacy
|
||||
* heap and the page heap in uVisor applications. */
|
||||
__heap_size__ = 0x6000;
|
||||
|
||||
HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x0400;
|
||||
STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400;
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
M_VECTOR_RAM_SIZE = 0x400;
|
||||
|
||||
/* Heap: 1/4 of RAM. Stack: 1/8 of RAM. */
|
||||
STACK_SIZE = 0x6000;
|
||||
HEAP_SIZE = 0xC000;
|
||||
/* With the RTOS in use, this does not affect the main stack size. The size of
|
||||
* the stack where main runs is determined via the RTOS. */
|
||||
STACK_SIZE = 0x400;
|
||||
|
||||
/* This is the guaranteed minimum available heap size for an application. When
|
||||
* uVisor is enabled, this is also the maximum available heap size. The
|
||||
* HEAP_SIZE value is set by uVisor porters to balance the size of the legacy
|
||||
* heap and the page heap in uVisor applications. */
|
||||
HEAP_SIZE = 0x6000;
|
||||
|
||||
/* Specify the memory areas */
|
||||
MEMORY
|
||||
|
|
|
@ -9,8 +9,15 @@
|
|||
/* Version 4.2.0 */
|
||||
/* */
|
||||
|
||||
/* With the RTOS in use, this does not affect the main stack size. The size of
|
||||
* the stack where main runs is determined via the RTOS. */
|
||||
STACK_SIZE = 0x400;
|
||||
HEAP_SIZE = 0xC00;
|
||||
|
||||
/* This is the guaranteed minimum available heap size for an application. When
|
||||
* uVisor is enabled, this is also the maximum available heap size. The
|
||||
* HEAP_SIZE value is set by uVisor porters to balance the size of the legacy
|
||||
* heap and the page heap in uVisor applications. */
|
||||
HEAP_SIZE = 0x6000;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue