]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_SAMV71_Xplained_AtmelStudio/LinkerScripts/sam_flash.ld
Add SAMV7 (Cortex-M7) demo for Atmel Studio.
[freertos] / FreeRTOS / Demo / CORTEX_M7_SAMV71_Xplained_AtmelStudio / LinkerScripts / sam_flash.ld
1 /* ---------------------------------------------------------------------------- */\r
2 /*                  Atmel Microcontroller Software Support                      */\r
3 /*                       SAM Software Package License                           */\r
4 /* ---------------------------------------------------------------------------- */\r
5 /* Copyright (c) 2014, Atmel Corporation                                        */\r
6 /*                                                                              */\r
7 /* All rights reserved.                                                         */\r
8 /*                                                                              */\r
9 /* Redistribution and use in source and binary forms, with or without           */\r
10 /* modification, are permitted provided that the following condition is met:    */\r
11 /*                                                                              */\r
12 /* - Redistributions of source code must retain the above copyright notice,     */\r
13 /* this list of conditions and the disclaimer below.                            */\r
14 /*                                                                              */\r
15 /* Atmel's name may not be used to endorse or promote products derived from     */\r
16 /* this software without specific prior written permission.                     */\r
17 /*                                                                              */\r
18 /* DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR   */\r
19 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */\r
20 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE   */\r
21 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,      */\r
22 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */\r
23 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,  */\r
24 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    */\r
25 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING         */\r
26 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */\r
27 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           */\r
28 /* ---------------------------------------------------------------------------- */\r
29 \r
30 /* Section Definitions */\r
31 SECTIONS\r
32 {\r
33     .text :\r
34     {\r
35         . = ALIGN(4);\r
36         _sfixed = .;\r
37         KEEP(*(.vectors .vectors.*))\r
38         *(.text .text.* .gnu.linkonce.t.*)\r
39         *(.glue_7t) *(.glue_7)\r
40         *(.rodata .rodata* .gnu.linkonce.r.*)\r
41         *(.ARM.extab* .gnu.linkonce.armextab.*)\r
42 \r
43         /* Support C constructors, and C destructors in both user code\r
44            and the C library. This also provides support for C++ code. */\r
45         . = ALIGN(4);\r
46         KEEP(*(.init))\r
47         . = ALIGN(4);\r
48         __preinit_array_start = .;\r
49         KEEP (*(.preinit_array))\r
50         __preinit_array_end = .;\r
51 \r
52         . = ALIGN(4);\r
53         __init_array_start = .;\r
54         KEEP (*(SORT(.init_array.*)))\r
55         KEEP (*(.init_array))\r
56         __init_array_end = .;\r
57 \r
58         . = ALIGN(0x4);\r
59         KEEP (*crtbegin.o(.ctors))\r
60         KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))\r
61         KEEP (*(SORT(.ctors.*)))\r
62         KEEP (*crtend.o(.ctors))\r
63 \r
64         . = ALIGN(4);\r
65         KEEP(*(.fini))\r
66 \r
67         . = ALIGN(4);\r
68         __fini_array_start = .;\r
69         KEEP (*(.fini_array))\r
70         KEEP (*(SORT(.fini_array.*)))\r
71         __fini_array_end = .;\r
72 \r
73         KEEP (*crtbegin.o(.dtors))\r
74         KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))\r
75         KEEP (*(SORT(.dtors.*)))\r
76         KEEP (*crtend.o(.dtors))\r
77 \r
78         . = ALIGN(4);\r
79         _efixed = .;            /* End of text section */\r
80     } > rom\r
81 \r
82     /* .ARM.exidx is sorted, so has to go in its own output section.  */\r
83     PROVIDE_HIDDEN (__exidx_start = .);\r
84     .ARM.exidx :\r
85     {\r
86       *(.ARM.exidx* .gnu.linkonce.armexidx.*)\r
87     } > rom\r
88     PROVIDE_HIDDEN (__exidx_end = .);\r
89 \r
90     . = ALIGN(4);\r
91     _etext = .;\r
92 \r
93     .relocate : AT (_etext)\r
94     {\r
95         . = ALIGN(4);\r
96         _srelocate = .;\r
97         *(.ramfunc .ramfunc.*);\r
98         *(.data .data.*);\r
99         . = ALIGN(4);\r
100         _erelocate = .;\r
101     } > ram\r
102 \r
103     /* .bss section which is used for uninitialized data */\r
104     .bss (NOLOAD) :\r
105     {\r
106         . = ALIGN(4);\r
107         _sbss = . ;\r
108         _szero = .;\r
109         *(.bss .bss.*)\r
110         *(COMMON)\r
111         . = ALIGN(4);\r
112         _ebss = . ;\r
113         _ezero = .;\r
114     } > ram\r
115 \r
116     /* stack section */\r
117     .stack (NOLOAD):\r
118     {\r
119         . = ALIGN(8);\r
120         _sstack = .;\r
121         . = . + STACK_SIZE;\r
122         . = ALIGN(8);\r
123         _estack = .;\r
124     } > ram\r
125 \r
126     /* heap section */\r
127     .heap (NOLOAD):\r
128     {\r
129         . = ALIGN(8);\r
130          _sheap = .;\r
131         . = . + HEAP_SIZE;\r
132         . = ALIGN(8);\r
133         _eheap = .;\r
134     } > ram\r
135 \r
136     . = ALIGN(4);\r
137     _end = . ;\r
138     _ram_end_ = ORIGIN(ram) + LENGTH(ram) -1 ;\r
139 }\r