summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortanek liang <[email protected]>2017-12-09 11:24:16 +0800
committertanek liang <[email protected]>2017-12-09 11:24:16 +0800
commit3b44eac542c5418537c6fcf0db7e3818351574bd (patch)
tree1ba9accc1a7bd666344daa1847c56e63964ce812
parent75ecc46739787ba20355f44123868e829c02b779 (diff)
[bsp] replace magic number as link script symbol
-rw-r--r--bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf5
-rw-r--r--bsp/imxrt1052-evk/Libraries/gcc/MIMXRT1052xxxxx_flexspi_nor.ld10
-rw-r--r--bsp/imxrt1052-evk/Libraries/iar/MIMXRT1052xxxxx_flexspi_nor.icf1
-rw-r--r--bsp/imxrt1052-evk/drivers/board.h13
4 files changed, 21 insertions, 8 deletions
diff --git a/bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf b/bsp/imxrt1052-evk/Libraries/arm/MIMXRT1052xxxxx_flexspi_nor.scf
index 04885943a3..eedd3bd998 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 810d52673f..993d8589a9 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 6a285752ab..04bea11a34 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 43b2580552..80a61f1a3a 100644
--- a/bsp/imxrt1052-evk/drivers/board.h
+++ b/bsp/imxrt1052-evk/drivers/board.h
@@ -21,19 +21,22 @@
#include <fsl_iomuxc.h>
#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)