You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.4 KiB
148 lines
4.4 KiB
/* ---------------------------------------------------------------------------- |
|
* SAM Software Package License |
|
* ---------------------------------------------------------------------------- |
|
* Copyright (c) 2012, Atmel Corporation |
|
* |
|
* All rights reserved. |
|
* |
|
* Redistribution and use in source and binary forms, with or without |
|
* modification, are permitted provided that the following condition is met: |
|
* |
|
* - Redistributions of source code must retain the above copyright notice, |
|
* this list of conditions and the disclaimer below. |
|
* |
|
* Atmel's name may not be used to endorse or promote products derived from |
|
* this software without specific prior written permission. |
|
* |
|
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR |
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE |
|
* DISCLAIMED. IN NO EVENT SHALL ATMEL 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. |
|
* ---------------------------------------------------------------------------- |
|
*/ |
|
|
|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") |
|
OUTPUT_ARCH(arm) |
|
SEARCH_DIR(.) |
|
|
|
/* Memory Spaces Definitions */ |
|
MEMORY |
|
{ |
|
rom (rx) : ORIGIN = 0x08000000, LENGTH = 1024K |
|
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 128K |
|
ccmram (rwx): ORIGIN = 0x10000000, LENGTH = 64K |
|
} |
|
|
|
/* Define the default stack size for interrupt mode. As no context is |
|
saved on this stack and ISRs are supposed to be short, it can be fairly |
|
small. 512 byte should be a save assumption here */ |
|
STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : 0x200; /* 512 byte */ |
|
|
|
|
|
/* Section Definitions */ |
|
SECTIONS |
|
{ |
|
.text : |
|
{ |
|
. = ALIGN(4); |
|
_sfixed = .; |
|
KEEP(*(.vectors .vectors.*)) |
|
*(.text .text.* .gnu.linkonce.t.*) |
|
*(.glue_7t) *(.glue_7) |
|
*(.rodata .rodata* .gnu.linkonce.r.*) |
|
*(.ARM.extab* .gnu.linkonce.armextab.*) |
|
|
|
/* Support C constructors, and C destructors in both user code |
|
and the C library. This also provides support for C++ code. */ |
|
. = ALIGN(4); |
|
KEEP(*(.init)) |
|
. = ALIGN(4); |
|
__preinit_array_start = .; |
|
KEEP (*(.preinit_array)) |
|
__preinit_array_end = .; |
|
|
|
. = ALIGN(4); |
|
__init_array_start = .; |
|
KEEP (*(SORT(.init_array.*))) |
|
KEEP (*(.init_array)) |
|
__init_array_end = .; |
|
|
|
. = ALIGN(0x4); |
|
KEEP (*crtbegin.o(.ctors)) |
|
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) |
|
KEEP (*(SORT(.ctors.*))) |
|
KEEP (*crtend.o(.ctors)) |
|
|
|
. = ALIGN(4); |
|
KEEP(*(.fini)) |
|
|
|
. = ALIGN(4); |
|
__fini_array_start = .; |
|
KEEP (*(.fini_array)) |
|
KEEP (*(SORT(.fini_array.*))) |
|
__fini_array_end = .; |
|
|
|
KEEP (*crtbegin.o(.dtors)) |
|
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) |
|
KEEP (*(SORT(.dtors.*))) |
|
KEEP (*crtend.o(.dtors)) |
|
|
|
. = ALIGN(4); |
|
_efixed = .; /* End of text section */ |
|
} > rom |
|
|
|
/* .ARM.exidx is sorted, so has to go in its own output section. */ |
|
PROVIDE_HIDDEN (__exidx_start = .); |
|
.ARM.exidx : |
|
{ |
|
*(.ARM.exidx* .gnu.linkonce.armexidx.*) |
|
} > rom |
|
PROVIDE_HIDDEN (__exidx_end = .); |
|
|
|
. = ALIGN(4); |
|
_etext = .; |
|
|
|
.relocate : AT (_etext) |
|
{ |
|
. = ALIGN(4); |
|
_srelocate = .; |
|
*(.ramfunc .ramfunc.*); |
|
*(.data .data.*); |
|
. = ALIGN(4); |
|
_erelocate = .; |
|
} > ram |
|
|
|
/* .bss section which is used for uninitialized data */ |
|
.bss (NOLOAD) : |
|
{ |
|
. = ALIGN(4); |
|
_sbss = . ; |
|
_szero = .; |
|
*(.bss .bss.*) |
|
*(COMMON) |
|
. = ALIGN(4); |
|
_ebss = . ; |
|
_ezero = .; |
|
} > ram |
|
|
|
/* stack section */ |
|
.stack (NOLOAD): |
|
{ |
|
. = ALIGN(8); |
|
_sstack = .; |
|
. = . + STACK_SIZE; |
|
. = ALIGN(8); |
|
_estack = .; |
|
} > ram |
|
|
|
/* heap section */ |
|
. = ALIGN(4); |
|
_sheap = . ; |
|
_eheap = ORIGIN(ram) + LENGTH(ram); |
|
}
|
|
|