147 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/**
 | 
						|
 * \file
 | 
						|
 *
 | 
						|
 * \brief Linker script for running in internal FLASH on the SAMD21G18A
 | 
						|
 *
 | 
						|
 * Copyright (c) 2017 Microchip Technology Inc.
 | 
						|
 *
 | 
						|
 * \asf_license_start
 | 
						|
 *
 | 
						|
 * \page License
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: Apache-2.0
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
						|
 * not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the Licence at
 | 
						|
 *
 | 
						|
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
 | 
						|
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 *
 | 
						|
 * \asf_license_stop
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
 | 
						|
OUTPUT_ARCH(arm)
 | 
						|
SEARCH_DIR(.)
 | 
						|
 | 
						|
/* Memory Spaces Definitions */
 | 
						|
MEMORY
 | 
						|
{
 | 
						|
  rom      (rx)  : ORIGIN = 0x00000000 + 8K, LENGTH = 0x00040000 - 8K
 | 
						|
  ram      (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
 | 
						|
}
 | 
						|
 | 
						|
/* The stack size used by the application. NOTE: you need to adjust according to your application. */
 | 
						|
STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000;
 | 
						|
 | 
						|
ENTRY(Reset_Handler)
 | 
						|
 | 
						|
/* 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(4);
 | 
						|
        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 = .;
 | 
						|
        end = .;
 | 
						|
    } > ram
 | 
						|
 | 
						|
    /* stack section */
 | 
						|
    .stack (NOLOAD):
 | 
						|
    {
 | 
						|
        . = ALIGN(8);
 | 
						|
        _sstack = .;
 | 
						|
        . = . + STACK_SIZE;
 | 
						|
        . = ALIGN(8);
 | 
						|
        _estack = .;
 | 
						|
    } > ram
 | 
						|
 | 
						|
    . = ALIGN(4);
 | 
						|
    _end = . ;
 | 
						|
}
 |