From b174edb282ddf3c8090569b448fba465fd5ea4ec Mon Sep 17 00:00:00 2001 From: Lingkai Dong Date: Mon, 23 Nov 2020 18:00:47 +0000 Subject: [PATCH] MCU_NRF52832: use two-region memory layout (stack + heap) to support MicroLib MicroLib is the lightweight C lib for the Arm toolchain and used as the default C lib on bare metal builds with the Arm toolchain. It requires two separate memory regions for stack and heap. The change is based on nRF52840.sct. --- .../device/TOOLCHAIN_ARM_STD/nRF52832.sct | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_ARM_STD/nRF52832.sct b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_ARM_STD/nRF52832.sct index 6081ee6265..b7aa36a7cb 100644 --- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_ARM_STD/nRF52832.sct +++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/device/TOOLCHAIN_ARM_STD/nRF52832.sct @@ -26,22 +26,23 @@ #define MBED_RAM0_START MBED_RAM_START #define MBED_RAM0_SIZE 0xE0 -#define MBED_RAM1_START (MBED_RAM_START + MBED_RAM0_SIZE) +#define MBED_RAM1_START (MBED_RAM0_START + MBED_RAM0_SIZE) #define MBED_RAM1_SIZE (MBED_RAM_SIZE - MBED_RAM0_SIZE) LR_IROM1 MBED_APP_START MBED_APP_SIZE { ER_IROM1 MBED_APP_START MBED_APP_SIZE { *.o (RESET, +First) - *(InRoot$$Sections) + *(InRoot$$Sections) .ANY (+RO) } - RW_IRAM0 MBED_RAM0_START UNINIT MBED_RAM0_SIZE { ;no init section *(*nvictable) } RW_IRAM1 MBED_RAM1_START MBED_RAM1_SIZE { .ANY (+RW +ZI) } - ARM_LIB_STACK MBED_RAM1_START+MBED_RAM1_SIZE EMPTY -Stack_Size { ; Stack region growing down + ARM_LIB_HEAP AlignExpr(+0, 16) EMPTY (MBED_RAM1_START + MBED_RAM1_SIZE - MBED_CONF_TARGET_BOOT_STACK_SIZE - AlignExpr(ImageLimit(RW_IRAM1), 16)) { + } + ARM_LIB_STACK MBED_RAM1_START + MBED_RAM1_SIZE EMPTY - Stack_Size { ; Stack region growing down } }