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  /* 8K offset to preserve bootloader */
 | |
|   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__ : 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 = . ;
 | |
| }
 | 
