]> git.sur5r.net Git - freertos/blobdiff - 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
diff --git a/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/GCC/GNU_LINKER_ATCM.ld b/FreeRTOS/Demo/CORTEX_R4F_RZ_T_GCC_IAR/System/GCC/GNU_LINKER_ATCM.ld
new file mode 100644 (file)
index 0000000..1ec9c36
--- /dev/null
@@ -0,0 +1,215 @@
+/****************************************************************************************************************************************************************\r
+* DISCLAIMER\r
+* This software is supplied by Renesas Electronics Corporation and is only\r
+* intended for use with Renesas products. No other uses are authorized. This\r
+* software is owned by Renesas Electronics Corporation and is protected under\r
+* all applicable laws, including copyright laws.\r
+* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
+* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
+* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE\r
+* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
+* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS\r
+* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE\r
+* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
+* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
+* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
+* Renesas reserves the right, without notice, to make changes to this software\r
+* and to discontinue the availability of this software. By using this software,\r
+* you agree to the additional terms and conditions found by accessing the\r
+* following link:\r
+* http://www.renesas.com/disclaimer\r
+*\r
+* Copyright (C) 2015 Renesas Electronics Corporation. All rights reserved.\r
+****************************************************************************************************************************************************************/\r
+/***********************************************************************************************************************\r
+* File Name     : GNU_LINKER_ATCM.ld\r
+* Device(s)     : RZ/T1 (R7S910018)\r
+* Tool-Chain    : GNUARM-NONEv14.02-EABI\r
+* H/W Platform  : RSK+RZT1 CPU Board\r
+* Description   : Linker file for projects that require to load and run from RAM (ATCM)\r
+***********************************************************************************************************************/\r
+/***********************************************************************************************************************\r
+* History       : DD.MM.YYYY Version Description\r
+*               : 21.05.2015 1.00\r
+***********************************************************************************************************************/\r
+OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")\r
+OUTPUT_ARCH(arm)\r
+ENTRY(start)\r
+\r
+/* Base Address RAM Memory Table 1 Mbyte on-chip RAM */\r
+MEMORY\r
+{\r
+       /* Internal RAM address range H'2000_0000 to H'2001_FFFF is configured as data retention RAM */\r
+       /* Write access to this address range has to be enabled by writing to registers SYSCR1 and SYSCR2 */\r
+       ATCM       (rwx)   : ORIGIN = 0x00000000, LENGTH = 0x00080000  /* (512KB)  H'00000000 to H'0007FFFF */\r
+       BTCM       (rwx)   : ORIGIN = 0x00800000, LENGTH = 0x00800000  /* (32KB)   H'00800000 to H'00807FFF */\r
+       BUFFER_RAM (rwx)   : ORIGIN = 0x20200000, LENGTH = 0x00100000  /* (1024KB) H'08000000 to H'0FFFFFFF */\r
+       DATA_RAM0  (rwx)   : ORIGIN = 0x24000000, LENGTH = 0x00080000  /* (512KB)  H'22000000 to H'2207FFFF */\r
+       DATA_RAM1  (rwx)   : ORIGIN = 0x22000000, LENGTH = 0x00080000  /* (512KB)  H'24000000 to H'2407FFFF */\r
+\r
+       SPIBSC (rw)    : ORIGIN = 0x30000000, LENGTH = 0x04000000  /* attached to H'30000000 to H'33FFFFFF */\r
+       CS0    (rw)    : ORIGIN = 0x40000000, LENGTH = 0x04000000  /* attached to H'40000000 to H'43FFFFFF */\r
+       CS1    (rw)    : ORIGIN = 0x44000000, LENGTH = 0x04000000  /* attached to H'44000000 to H'47FFFFFF */\r
+       CS2    (rw)    : ORIGIN = 0x48000000, LENGTH = 0x04000000  /* attached to H'40000000 to H'4CFFFFFF */\r
+       CS3    (rw)    : ORIGIN = 0x4C000000, LENGTH = 0x04000000  /* attached to H'4C000000 to H'4FFFFFFF */\r
+       CS4    (rw)    : ORIGIN = 0x50000000, LENGTH = 0x04000000  /* attached to H'50000000 to H'53FFFFFF */\r
+       CS5    (rw)    : ORIGIN = 0x54000000, LENGTH = 0x04000000  /* attached to H'54000000 to H'57FFFFFF */\r
+\r
+       /* Mapped memory type */\r
+       SPI_ROM    (rw)    : ORIGIN = 0x30000000, LENGTH = 0x04000000\r
+       CS0_ROM    (rw)    : ORIGIN = 0x40000000, LENGTH = 0x04000000\r
+       CS1_ROM    (rw)    : ORIGIN = 0x44000000, LENGTH = 0x04000000\r
+       SDRAM0_EXT (rw)    : ORIGIN = 0x48000000, LENGTH = 0x04000000\r
+       SDRAM1_EXT (rw)    : ORIGIN = 0x4C000000, LENGTH = 0x04000000\r
+}\r
+\r
+SYS_STACK_SIZE        = 0x200;             /* Application stack size            */\r
+SVC_STACK_SIZE       = 0x200;      /* SVC mode stack                    */\r
+IRQ_STACK_SIZE       = 0x200;      /* IRQ mode stack                    */\r
+FIQ_STACK_SIZE       = 0x200;      /* FRQ mode stack                    */\r
+UND_STACK_SIZE       = 0x200;      /* SVC mode stack                    */\r
+ABT_STACK_SIZE       = 0x200;      /* ABT mode stack                    */\r
+HEAP_STACK_SIZE       = 0x1000;        /* Heap stack size                   */\r
+\r
+ATCM_BASE             = 0x00000000;  /* User application located here          */\r
+BTCM_BASE             = 0x00800000;  /* BTCM base address                      */\r
+\r
+USER_EXEC_BASE        = 0x00000000;  /* Application loads and runs from here   */\r
+\r
+USER_RAM              = 0x20000000;     /* Application's RAM base                 */\r
+\r
+STACK_BASE            = 0x00807800;  /* Stacks located in BTCM                 */\r
+\r
+SDRAM0_BASE           = 0x48000000;  /* SDRAM1 is attached to CS2 space        */\r
+SDRAM1_BASE           = 0x4C000000;  /* SDRAM1 is attached to CS3 space        */\r
+\r
+SECTIONS\r
+{\r
+       .reset USER_EXEC_BASE :\r
+       {\r
+               reset_start = .;\r
+           execute = .;\r
+               _intvec_start = .;\r
+           *start.o (.text);\r
+               .       = ALIGN(0x4);\r
+               _intvec_end = .;\r
+               end_reset = .;\r
+       } > ATCM\r
+\r
+       .text :\r
+       {\r
+               text_start = .;\r
+               *(.text)\r
+               *(.text.startup)\r
+               text_end = .;\r
+       } > ATCM\r
+\r
+       .rodata :\r
+       {\r
+               _rodata_start = .;\r
+               *(.rodata)\r
+               *(.rodata.*)\r
+               .       = ALIGN(0x8);\r
+               _start_data_ROM = .;\r
+           *(.data)\r
+               *(.data.*)\r
+               _end_data_ROM = .;\r
+               *(.got.plt)\r
+               *(.got)\r
+               .       = ALIGN(0x8);\r
+               _rodata_end = .;\r
+        PROVIDE(end = .);\r
+       } > ATCM\r
+\r
+    _ram_data_size = (_end_data_ROM - _start_data_ROM);\r
+\r
+       .data USER_RAM :\r
+       {\r
+               _data_start = .;\r
+               _start_data_RAM = .;\r
+               . += _ram_data_size;\r
+               _data_end = .;\r
+       }\r
+\r
+       .bss _data_end :\r
+       {\r
+         _bss = .;\r
+         PROVIDE(__bss_start__ = .);\r
+         *(.bss)\r
+         *(.bss.**)\r
+         *(COMMON)\r
+         . = ALIGN(0x4);\r
+         PROVIDE(__bss_end__ = .);\r
+         _ebss = .;\r
+         _end = .;\r
+         PROVIDE(end = .);\r
+       }\r
+\r
+       .heap :\r
+       {\r
+           heap_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.heap_stack)\r
+               . += HEAP_STACK_SIZE;\r
+               heap_end = .;\r
+       } > ATCM\r
+\r
+       .sys_stack STACK_BASE :\r
+       {\r
+           sys_stack_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.sys_stack)\r
+               . += SYS_STACK_SIZE;\r
+           sys_stack_end = .;\r
+       } > BTCM\r
+\r
+       .svc_stack sys_stack_end :\r
+       {\r
+           svc_stack_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.svc_stack)\r
+               . += SVC_STACK_SIZE;\r
+           svc_stack_end = .;\r
+       } > BTCM\r
+\r
+       .irq_stack svc_stack_end :\r
+       {\r
+           irq_stack_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.irq_stack)\r
+               . += IRQ_STACK_SIZE;\r
+           irq_stack_end = .;\r
+       } > BTCM\r
+\r
+       .fiq_stack irq_stack_end :\r
+       {\r
+           fiq_stack_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.fiq_stack)\r
+               . += FIQ_STACK_SIZE;\r
+           fiq_stack_end = .;\r
+       } > BTCM\r
+\r
+       .und_stack fiq_stack_end :\r
+       {\r
+           und_stack_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.und_stack)\r
+               . += UND_STACK_SIZE;\r
+               und_stack_end = .;\r
+       } > BTCM\r
+\r
+       .abt_stack und_stack_end :\r
+       {\r
+           abt_stack_start = .;\r
+               .       = ALIGN(0x8);\r
+               *(.abt_stack)\r
+               . += ABT_STACK_SIZE;\r
+               abt_stack_end = .;\r
+       } > BTCM\r
+\r
+       /* NOLOAD directs linker NOT to fill VRAMx_SECTION with 0.          */\r
+       /* Usage of NOLOAD increases speed of linker and download to target */\r
+       .sdram0_section SDRAM0_BASE (NOLOAD) : {} > SDRAM0_EXT\r
+       .sdram1_section SDRAM1_BASE (NOLOAD) : {} > SDRAM1_EXT\r
+}
\ No newline at end of file