diff options
Diffstat (limited to 'platform/devices/MCIMX7D/linker/gcc/MCIMX7D_M4_tcm.ld')
-rw-r--r-- | platform/devices/MCIMX7D/linker/gcc/MCIMX7D_M4_tcm.ld | 80 |
1 files changed, 66 insertions, 14 deletions
diff --git a/platform/devices/MCIMX7D/linker/gcc/MCIMX7D_M4_tcm.ld b/platform/devices/MCIMX7D/linker/gcc/MCIMX7D_M4_tcm.ld index 5fd3435..b296a42 100644 --- a/platform/devices/MCIMX7D/linker/gcc/MCIMX7D_M4_tcm.ld +++ b/platform/devices/MCIMX7D/linker/gcc/MCIMX7D_M4_tcm.ld @@ -1,31 +1,78 @@ +/* +** ################################################################### +** Processors: MCIMX7D7DVK10SA +** MCIMX7D7DVM10SA +** MCIMX7D3DVK10SA +** MCIMX7D3EVM10SA +** +** Compiler: GNU C Compiler +** Reference manual: IMX7DRM, Rev.A, February 2015 +** Version: rev. 1.0, 2015-05-19 +** +** Abstract: +** Linker file for the GNU C Compiler +** +** Copyright (c) 2015 Freescale Semiconductor, Inc. +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without modification, +** are permitted provided that the following conditions are met: +** +** o Redistributions of source code must retain the above copyright notice, this list +** of conditions and the following disclaimer. +** +** o Redistributions in binary form must reproduce the above copyright notice, this +** list of conditions and the following disclaimer in the documentation and/or +** other materials provided with the distribution. +** +** o Neither the name of Freescale Semiconductor, Inc. nor the names of its +** contributors may be used to endorse or promote products derived from this +** software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +** http: www.freescale.com +** mail: support@freescale.com +** +** ################################################################### +*/ + /* Entry Point */ ENTRY(Reset_Handler) -STACK_SIZE = 0x400; -HEAP_SIZE = 0x200; +HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x0400; +STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400; + /* Specify the memory areas */ MEMORY { - m_text (RX) : ORIGIN = 0x1FFF8000, LENGTH = 0x00007FFF - - m_data (RW) : ORIGIN = 0x20000000, LENGTH = 0x00007FFF - + m_interrupts (RX) : ORIGIN = 0x1FFF8000, LENGTH = 0x00000240 + m_text (RX) : ORIGIN = 0x1FFF8240, LENGTH = 0x00007DC0 + m_data (RW) : ORIGIN = 0x20000000, LENGTH = 0x00008000 } +/* Define output sections */ SECTIONS { + /* The startup code goes first into TCML */ .interrupts : { __VECTOR_TABLE = .; . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4); - } > m_text - - __VECTOR_RAM = __VECTOR_TABLE; - __RAM_VECTOR_TABLE_SIZE_BYTES = 0x0; - + } > m_interrupts + /* The program code and other data goes into TCML */ .text : { . = ALIGN(4); @@ -127,6 +174,8 @@ SECTIONS } > m_data __DATA_END = __DATA_ROM + (__data_end__ - __data_start__); + text_end = ORIGIN(m_text) + LENGTH(m_text); + ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data") /* Uninitialized data section */ .bss : @@ -152,16 +201,19 @@ SECTIONS . += HEAP_SIZE; __HeapLimit = .; } > m_data - .stack : + + .stack : { . = ALIGN(8); . += STACK_SIZE; } > m_data - /* Initializes stack on the end of block */ + + /* Initializes stack on the end of block */ __StackTop = ORIGIN(m_data) + LENGTH(m_data); __StackLimit = __StackTop - STACK_SIZE; PROVIDE(__stack = __StackTop); + .ARM.attributes 0 : { *(.ARM.attributes) } ASSERT(__StackLimit >= __HeapLimit, "region m_data overflowed with stack and heap") - }
\ No newline at end of file +} |