diff --git a/bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf b/bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf index 04885943a30bb3ac18ce1362e51e3120879cd552..eedd3bd99828c0548ce09eb1743759b730881fa6 100644 --- a/bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf +++ b/bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf @@ -67,6 +67,9 @@ #define Heap_Size 0x0400 #endif +#define RTT_HEAP_SIZE \ + (m_data_size - ImageLength(RW_m_data) - ImageLength(ARM_LIB_HEAP) - ImageLength(ARM_LIB_STACK)) + LR_m_text m_text_start m_text_size { ; load region size_region ER_m_text m_text_start m_text_size { ; load address = execution address * (RESET,+FIRST) @@ -81,6 +84,8 @@ LR_m_text m_text_start m_text_size { ; load region size_region } ARM_LIB_STACK +0 EMPTY Stack_Size { ; Stack region growing down } + RTT_HEAP +0 EMPTY RTT_HEAP_SIZE { + } RW_m_ncache m_ncache_start m_ncache_size { ; ncache RW data * (NonCacheable.init) diff --git a/bsp/imxrt1052-evk/Libraries/gcc/MIMXRT1052xxxxx_flexspi_nor.ld b/bsp/imxrt1052-evk/Libraries/gcc/MIMXRT1052xxxxx_flexspi_nor.ld index 810d52673fd0c12efc4ebbaa9fa24e815c840276..993d8589a92584aee109de085e786132771ef10c 100644 --- a/bsp/imxrt1052-evk/Libraries/gcc/MIMXRT1052xxxxx_flexspi_nor.ld +++ b/bsp/imxrt1052-evk/Libraries/gcc/MIMXRT1052xxxxx_flexspi_nor.ld @@ -253,12 +253,16 @@ SECTIONS stack_start = .; . += STACK_SIZE; stack_end = .; + __StackTop = .; + } > m_dtcm + + .RTT_HEAP : + { heap_start = .; + . = ALIGN(8); } > m_dtcm - /* Initializes stack on the end of block */ - __StackTop = stack_end; - PROVIDE(__stack = __StackTop); + PROVIDE(heap_end = ORIGIN(m_dtcm) + LENGTH(m_dtcm)); .ARM.attributes 0 : { *(.ARM.attributes) } diff --git a/bsp/imxrt1052-evk/Libraries/iar/MIMXRT1052xxxxx_flexspi_nor.icf b/bsp/imxrt1052-evk/Libraries/iar/MIMXRT1052xxxxx_flexspi_nor.icf index 6a285752ab3464252e4e8f548304306c7a1a4ee3..04bea11a34b1d69d3ad32a4e0e80d8ad3da38927 100644 --- a/bsp/imxrt1052-evk/Libraries/iar/MIMXRT1052xxxxx_flexspi_nor.icf +++ b/bsp/imxrt1052-evk/Libraries/iar/MIMXRT1052xxxxx_flexspi_nor.icf @@ -81,6 +81,7 @@ if (isdefinedsymbol(__heap_size__)) { define exported symbol __VECTOR_TABLE = m_interrupts_start; define exported symbol __VECTOR_RAM = m_interrupts_start; define exported symbol __RAM_VECTOR_TABLE_SIZE = 0x0; +define exported symbol __RTT_HEAP_END = m_dtcm_end; define memory mem with size = 4G; define region TEXT_region = mem:[from m_interrupts_start to m_interrupts_end] diff --git a/bsp/imxrt1052-evk/drivers/board.h b/bsp/imxrt1052-evk/drivers/board.h index 43b2580552243a3ee90558ee4a14a34488b15265..80a61f1a3af153674fd242494cdd313feaec51e6 100644 --- a/bsp/imxrt1052-evk/drivers/board.h +++ b/bsp/imxrt1052-evk/drivers/board.h @@ -21,19 +21,22 @@ #include #ifdef __CC_ARM -extern int Image$$ARM_LIB_STACK$$ZI$$Limit; -#define HEAP_BEGIN (&Image$$ARM_LIB_STACK$$ZI$$Limit) -#define HEAP_END (0x2001FFFFu) +extern int Image$$RTT_HEAP$$ZI$$Base; +extern int Image$$RTT_HEAP$$ZI$$Limit; +#define HEAP_BEGIN (&Image$$RTT_HEAP$$ZI$$Base) +#define HEAP_END (&Image$$RTT_HEAP$$ZI$$Limit) #elif __ICCARM__ #pragma section="HEAP" #define HEAP_BEGIN (__segment_end("HEAP")) -#define HEAP_END (0x2001FFFFu) +extern void __RTT_HEAP_END; +#define HEAP_END (&__RTT_HEAP_END) #else extern int heap_start; +extern int heap_end; #define HEAP_BEGIN (&heap_start) -#define HEAP_END (0x2001FFFFu) +#define HEAP_END (&heap_end) #endif #define HEAP_SIZE ((uint32_t)HEAP_END - (uint32_t)HEAP_BEGIN)