]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/GCC/GNU_LINKER_ATCM.ld
FreeRTOS source:
[freertos] / FreeRTOS / Demo / CORTEX_R4F_RZ_T_GCC_IAR / System / GCC / GNU_LINKER_ATCM.ld
1 /****************************************************************************************************************************************************************\r
2 * DISCLAIMER\r
3 * This software is supplied by Renesas Electronics Corporation and is only\r
4 * intended for use with Renesas products. No other uses are authorized. This\r
5 * software is owned by Renesas Electronics Corporation and is protected under\r
6 * all applicable laws, including copyright laws.\r
7 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
8 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
9 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
10 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
11 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
12 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
13 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
14 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
15 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
16 * Renesas reserves the right, without notice, to make changes to this software\r
17 * and to discontinue the availability of this software. By using this software,\r
18 * you agree to the additional terms and conditions found by accessing the\r
19 * following link:\r
20 * http://www.renesas.com/disclaimer\r
21 *\r
22 * Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
23 ****************************************************************************************************************************************************************/\r
24 /***********************************************************************************************************************\r
25 * File Name     : GNU_LINKER_ATCM.ld\r
26 * Device(s)     : RZ/T1 (R7S910018)\r
27 * Tool-Chain    : GNUARM-NONEv14.02-EABI\r
28 * H/W Platform  : RSK+RZT1 CPU Board\r
29 * Description   : Linker file for projects that require to load and run from RAM (ATCM)\r
30 ***********************************************************************************************************************/\r
31 /***********************************************************************************************************************\r
32 * History       : DD.MM.YYYY Version Description\r
33 *               : 21.05.2015 1.00\r
34 ***********************************************************************************************************************/\r
35 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")\r
36 OUTPUT_ARCH(arm)\r
37 ENTRY(start)\r
38 \r
39 /* Base Address RAM Memory Table 1 Mbyte on-chip RAM */\r
40 MEMORY\r
41 {\r
42         /* Internal RAM address range H'2000_0000 to H'2001_FFFF is configured as data retention RAM */\r
43         /* Write access to this address range has to be enabled by writing to registers SYSCR1 and SYSCR2 */\r
44         ATCM       (rwx)   : ORIGIN = 0x00000000, LENGTH = 0x00080000  /* (512KB)  H'00000000 to H'0007FFFF */\r
45         BTCM       (rwx)   : ORIGIN = 0x00800000, LENGTH = 0x00800000  /* (32KB)   H'00800000 to H'00807FFF */\r
46         BUFFER_RAM (rwx)   : ORIGIN = 0x20200000, LENGTH = 0x00100000  /* (1024KB) H'08000000 to H'0FFFFFFF */\r
47         DATA_RAM0  (rwx)   : ORIGIN = 0x24000000, LENGTH = 0x00080000  /* (512KB)  H'22000000 to H'2207FFFF */\r
48         DATA_RAM1  (rwx)   : ORIGIN = 0x22000000, LENGTH = 0x00080000  /* (512KB)  H'24000000 to H'2407FFFF */\r
49 \r
50         SPIBSC (rw)    : ORIGIN = 0x30000000, LENGTH = 0x04000000  /* attached to H'30000000 to H'33FFFFFF */\r
51         CS0    (rw)    : ORIGIN = 0x40000000, LENGTH = 0x04000000  /* attached to H'40000000 to H'43FFFFFF */\r
52         CS1    (rw)    : ORIGIN = 0x44000000, LENGTH = 0x04000000  /* attached to H'44000000 to H'47FFFFFF */\r
53         CS2    (rw)    : ORIGIN = 0x48000000, LENGTH = 0x04000000  /* attached to H'40000000 to H'4CFFFFFF */\r
54         CS3    (rw)    : ORIGIN = 0x4C000000, LENGTH = 0x04000000  /* attached to H'4C000000 to H'4FFFFFFF */\r
55         CS4    (rw)    : ORIGIN = 0x50000000, LENGTH = 0x04000000  /* attached to H'50000000 to H'53FFFFFF */\r
56         CS5    (rw)    : ORIGIN = 0x54000000, LENGTH = 0x04000000  /* attached to H'54000000 to H'57FFFFFF */\r
57 \r
58         /* Mapped memory type */\r
59         SPI_ROM    (rw)    : ORIGIN = 0x30000000, LENGTH = 0x04000000\r
60         CS0_ROM    (rw)    : ORIGIN = 0x40000000, LENGTH = 0x04000000\r
61         CS1_ROM    (rw)    : ORIGIN = 0x44000000, LENGTH = 0x04000000\r
62         SDRAM0_EXT (rw)    : ORIGIN = 0x48000000, LENGTH = 0x04000000\r
63         SDRAM1_EXT (rw)    : ORIGIN = 0x4C000000, LENGTH = 0x04000000\r
64 }\r
65 \r
66 SYS_STACK_SIZE        = 0x200;      /* Application stack size            */\r
67 SVC_STACK_SIZE        = 0x200;      /* SVC mode stack                    */\r
68 IRQ_STACK_SIZE        = 0x200;      /* IRQ mode stack                    */\r
69 FIQ_STACK_SIZE        = 0x200;      /* FRQ mode stack                    */\r
70 UND_STACK_SIZE        = 0x200;      /* SVC mode stack                    */\r
71 ABT_STACK_SIZE        = 0x200;      /* ABT mode stack                    */\r
72 HEAP_STACK_SIZE       = 0x1000;         /* Heap stack size                   */\r
73 \r
74 ATCM_BASE             = 0x00000000;  /* User application located here          */\r
75 BTCM_BASE             = 0x00800000;  /* BTCM base address                      */\r
76 \r
77 USER_EXEC_BASE        = 0x00000000;  /* Application loads and runs from here   */\r
78 \r
79 USER_RAM              = 0x20000000;      /* Application's RAM base                 */\r
80 \r
81 STACK_BASE            = 0x00807800;  /* Stacks located in BTCM                 */\r
82 \r
83 SDRAM0_BASE           = 0x48000000;  /* SDRAM1 is attached to CS2 space        */\r
84 SDRAM1_BASE           = 0x4C000000;  /* SDRAM1 is attached to CS3 space        */\r
85 \r
86 SECTIONS\r
87 {\r
88         .reset USER_EXEC_BASE :\r
89         {\r
90                 reset_start = .;\r
91             execute = .;\r
92                 _intvec_start = .;\r
93             *start.o (.text);\r
94                 .       = ALIGN(0x4);\r
95                 _intvec_end = .;\r
96                 end_reset = .;\r
97         } > ATCM\r
98 \r
99         .text :\r
100         {\r
101                 text_start = .;\r
102                 *(.text)\r
103                 *(.text.startup)\r
104                 text_end = .;\r
105         } > ATCM\r
106 \r
107         .rodata :\r
108         {\r
109                 _rodata_start = .;\r
110                 *(.rodata)\r
111                 *(.rodata.*)\r
112                 .       = ALIGN(0x8);\r
113                 _start_data_ROM = .;\r
114             *(.data)\r
115                 *(.data.*)\r
116                 _end_data_ROM = .;\r
117                 *(.got.plt)\r
118                 *(.got)\r
119                 .       = ALIGN(0x8);\r
120                 _rodata_end = .;\r
121         PROVIDE(end = .);\r
122         } > ATCM\r
123 \r
124     _ram_data_size = (_end_data_ROM - _start_data_ROM);\r
125 \r
126         .data USER_RAM :\r
127         {\r
128                 _data_start = .;\r
129                 _start_data_RAM = .;\r
130                 . += _ram_data_size;\r
131                 _data_end = .;\r
132         }\r
133 \r
134         .bss _data_end :\r
135         {\r
136          _bss = .;\r
137          PROVIDE(__bss_start__ = .);\r
138          *(.bss)\r
139          *(.bss.**)\r
140          *(COMMON)\r
141          . = ALIGN(0x4);\r
142          PROVIDE(__bss_end__ = .);\r
143          _ebss = .;\r
144          _end = .;\r
145          PROVIDE(end = .);\r
146         }\r
147 \r
148         .heap :\r
149         {\r
150             heap_start = .;\r
151                 .       = ALIGN(0x8);\r
152                 *(.heap_stack)\r
153                 . += HEAP_STACK_SIZE;\r
154                 heap_end = .;\r
155         } > ATCM\r
156 \r
157         .sys_stack STACK_BASE :\r
158         {\r
159             sys_stack_start = .;\r
160                 .       = ALIGN(0x8);\r
161                 *(.sys_stack)\r
162                 . += SYS_STACK_SIZE;\r
163             sys_stack_end = .;\r
164         } > BTCM\r
165 \r
166         .svc_stack sys_stack_end :\r
167         {\r
168             svc_stack_start = .;\r
169                 .       = ALIGN(0x8);\r
170                 *(.svc_stack)\r
171                 . += SVC_STACK_SIZE;\r
172             svc_stack_end = .;\r
173         } > BTCM\r
174 \r
175         .irq_stack svc_stack_end :\r
176         {\r
177             irq_stack_start = .;\r
178                 .       = ALIGN(0x8);\r
179                 *(.irq_stack)\r
180                 . += IRQ_STACK_SIZE;\r
181             irq_stack_end = .;\r
182         } > BTCM\r
183 \r
184         .fiq_stack irq_stack_end :\r
185         {\r
186             fiq_stack_start = .;\r
187                 .       = ALIGN(0x8);\r
188                 *(.fiq_stack)\r
189                 . += FIQ_STACK_SIZE;\r
190             fiq_stack_end = .;\r
191         } > BTCM\r
192 \r
193         .und_stack fiq_stack_end :\r
194         {\r
195             und_stack_start = .;\r
196                 .       = ALIGN(0x8);\r
197                 *(.und_stack)\r
198                 . += UND_STACK_SIZE;\r
199                 und_stack_end = .;\r
200         } > BTCM\r
201 \r
202         .abt_stack und_stack_end :\r
203         {\r
204             abt_stack_start = .;\r
205                 .       = ALIGN(0x8);\r
206                 *(.abt_stack)\r
207                 . += ABT_STACK_SIZE;\r
208                 abt_stack_end = .;\r
209         } > BTCM\r
210 \r
211         /* NOLOAD directs linker NOT to fill VRAMx_SECTION with 0.          */\r
212         /* Usage of NOLOAD increases speed of linker and download to target */\r
213         .sdram0_section SDRAM0_BASE (NOLOAD) : {} > SDRAM0_EXT\r
214         .sdram1_section SDRAM1_BASE (NOLOAD) : {} > SDRAM1_EXT\r
215 }