mbed library sources

Dependents:   SPI_slave_frdm

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Fri Feb 27 10:00:08 2015 +0000
Revision:
482:d9a48e768ce0
Parent:
390:35c2c1cf29cd
Synchronized with git revision 43d7f387ec8e6fef8c03cb5e3a74f7b1596c8f8c

Full URL: https://github.com/mbedmicro/mbed/commit/43d7f387ec8e6fef8c03cb5e3a74f7b1596c8f8c/

RZ/A1H - Modify to support GCC and Fix some bugs of driver.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 482:d9a48e768ce0 1 /* Linker script for mbed RZ_A1H */
mbed_official 390:35c2c1cf29cd 2
mbed_official 390:35c2c1cf29cd 3 /* Linker script to configure memory regions. */
mbed_official 390:35c2c1cf29cd 4 MEMORY
mbed_official 390:35c2c1cf29cd 5 {
mbed_official 482:d9a48e768ce0 6 ROM (rx) : ORIGIN = 0x00000000, LENGTH = 0x02000000
mbed_official 482:d9a48e768ce0 7 BOOT_LOADER (rx) : ORIGIN = 0x18000000, LENGTH = 0x00004000
mbed_official 482:d9a48e768ce0 8 SFLASH (rx) : ORIGIN = 0x18004000, LENGTH = 0x07FFC000
mbed_official 482:d9a48e768ce0 9 L_TTB (rw) : ORIGIN = 0x20000000, LENGTH = 0x00004000
mbed_official 482:d9a48e768ce0 10 RAM (rwx) : ORIGIN = 0x20020000, LENGTH = 0x00700000
mbed_official 482:d9a48e768ce0 11 RAM_NC (rwx) : ORIGIN = 0x20900000, LENGTH = 0x00100000
mbed_official 390:35c2c1cf29cd 12 }
mbed_official 390:35c2c1cf29cd 13
mbed_official 390:35c2c1cf29cd 14 /* Linker script to place sections and symbol values. Should be used together
mbed_official 390:35c2c1cf29cd 15 * with other linker script that defines memory regions FLASH and RAM.
mbed_official 390:35c2c1cf29cd 16 * It references following symbols, which must be defined in code:
mbed_official 390:35c2c1cf29cd 17 * Reset_Handler : Entry of reset handler
mbed_official 390:35c2c1cf29cd 18 *
mbed_official 390:35c2c1cf29cd 19 * It defines following symbols, which code can use without definition:
mbed_official 390:35c2c1cf29cd 20 * __exidx_start
mbed_official 390:35c2c1cf29cd 21 * __exidx_end
mbed_official 390:35c2c1cf29cd 22 * __etext
mbed_official 390:35c2c1cf29cd 23 * __data_start__
mbed_official 390:35c2c1cf29cd 24 * __preinit_array_start
mbed_official 390:35c2c1cf29cd 25 * __preinit_array_end
mbed_official 390:35c2c1cf29cd 26 * __init_array_start
mbed_official 390:35c2c1cf29cd 27 * __init_array_end
mbed_official 390:35c2c1cf29cd 28 * __fini_array_start
mbed_official 390:35c2c1cf29cd 29 * __fini_array_end
mbed_official 390:35c2c1cf29cd 30 * __data_end__
mbed_official 390:35c2c1cf29cd 31 * __bss_start__
mbed_official 390:35c2c1cf29cd 32 * __bss_end__
mbed_official 390:35c2c1cf29cd 33 * __end__
mbed_official 390:35c2c1cf29cd 34 * end
mbed_official 390:35c2c1cf29cd 35 * __HeapLimit
mbed_official 390:35c2c1cf29cd 36 * __StackLimit
mbed_official 390:35c2c1cf29cd 37 * __StackTop
mbed_official 390:35c2c1cf29cd 38 * __stack
mbed_official 390:35c2c1cf29cd 39 */
mbed_official 390:35c2c1cf29cd 40 ENTRY(Reset_Handler)
mbed_official 390:35c2c1cf29cd 41
mbed_official 390:35c2c1cf29cd 42 SECTIONS
mbed_official 390:35c2c1cf29cd 43 {
mbed_official 482:d9a48e768ce0 44 .boot :
mbed_official 482:d9a48e768ce0 45 {
mbed_official 482:d9a48e768ce0 46 KEEP(*(.boot_loader))
mbed_official 482:d9a48e768ce0 47 } > BOOT_LOADER
mbed_official 482:d9a48e768ce0 48
mbed_official 390:35c2c1cf29cd 49 .text :
mbed_official 390:35c2c1cf29cd 50 {
mbed_official 482:d9a48e768ce0 51
mbed_official 482:d9a48e768ce0 52 Image$$VECTORS$$Base = .;
mbed_official 482:d9a48e768ce0 53 * (RESET)
mbed_official 482:d9a48e768ce0 54 Image$$VECTORS$$Limit = .;
mbed_official 482:d9a48e768ce0 55 . += 0x00000400;
mbed_official 482:d9a48e768ce0 56
mbed_official 390:35c2c1cf29cd 57 KEEP(*(.isr_vector))
mbed_official 482:d9a48e768ce0 58 *(SVC_TABLE)
mbed_official 390:35c2c1cf29cd 59 *(.text*)
mbed_official 390:35c2c1cf29cd 60
mbed_official 390:35c2c1cf29cd 61 KEEP(*(.init))
mbed_official 390:35c2c1cf29cd 62 KEEP(*(.fini))
mbed_official 390:35c2c1cf29cd 63
mbed_official 390:35c2c1cf29cd 64 /* .ctors */
mbed_official 390:35c2c1cf29cd 65 *crtbegin.o(.ctors)
mbed_official 390:35c2c1cf29cd 66 *crtbegin?.o(.ctors)
mbed_official 390:35c2c1cf29cd 67 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
mbed_official 390:35c2c1cf29cd 68 *(SORT(.ctors.*))
mbed_official 390:35c2c1cf29cd 69 *(.ctors)
mbed_official 390:35c2c1cf29cd 70
mbed_official 390:35c2c1cf29cd 71 /* .dtors */
mbed_official 390:35c2c1cf29cd 72 *crtbegin.o(.dtors)
mbed_official 390:35c2c1cf29cd 73 *crtbegin?.o(.dtors)
mbed_official 390:35c2c1cf29cd 74 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
mbed_official 390:35c2c1cf29cd 75 *(SORT(.dtors.*))
mbed_official 390:35c2c1cf29cd 76 *(.dtors)
mbed_official 390:35c2c1cf29cd 77
mbed_official 482:d9a48e768ce0 78 Image$$RO_DATA$$Base = .;
mbed_official 390:35c2c1cf29cd 79 *(.rodata*)
mbed_official 482:d9a48e768ce0 80 Image$$RO_DATA$$Limit = .;
mbed_official 390:35c2c1cf29cd 81
mbed_official 390:35c2c1cf29cd 82 KEEP(*(.eh_frame*))
mbed_official 482:d9a48e768ce0 83 } > SFLASH
mbed_official 390:35c2c1cf29cd 84
mbed_official 390:35c2c1cf29cd 85 .ARM.extab :
mbed_official 390:35c2c1cf29cd 86 {
mbed_official 390:35c2c1cf29cd 87 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 482:d9a48e768ce0 88 } > SFLASH
mbed_official 390:35c2c1cf29cd 89
mbed_official 390:35c2c1cf29cd 90 __exidx_start = .;
mbed_official 390:35c2c1cf29cd 91 .ARM.exidx :
mbed_official 390:35c2c1cf29cd 92 {
mbed_official 390:35c2c1cf29cd 93 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
mbed_official 482:d9a48e768ce0 94 } > SFLASH
mbed_official 390:35c2c1cf29cd 95 __exidx_end = .;
mbed_official 390:35c2c1cf29cd 96
mbed_official 482:d9a48e768ce0 97
mbed_official 482:d9a48e768ce0 98 .copy.table :
mbed_official 482:d9a48e768ce0 99 {
mbed_official 482:d9a48e768ce0 100 . = ALIGN(4);
mbed_official 482:d9a48e768ce0 101 __copy_table_start__ = .;
mbed_official 482:d9a48e768ce0 102 LONG (__etext)
mbed_official 482:d9a48e768ce0 103 LONG (__data_start__)
mbed_official 482:d9a48e768ce0 104 LONG (__data_end__ - __data_start__)
mbed_official 482:d9a48e768ce0 105 LONG (__etext2)
mbed_official 482:d9a48e768ce0 106 LONG (__nc_data_start)
mbed_official 482:d9a48e768ce0 107 LONG (__nc_data_end - __nc_data_start)
mbed_official 482:d9a48e768ce0 108 __copy_table_end__ = .;
mbed_official 482:d9a48e768ce0 109 } > SFLASH
mbed_official 482:d9a48e768ce0 110
mbed_official 482:d9a48e768ce0 111 .zero.table :
mbed_official 482:d9a48e768ce0 112 {
mbed_official 482:d9a48e768ce0 113 . = ALIGN(4);
mbed_official 482:d9a48e768ce0 114 __zero_table_start__ = .;
mbed_official 482:d9a48e768ce0 115 LONG (__bss_start__)
mbed_official 482:d9a48e768ce0 116 LONG (__bss_end__ - __bss_start__)
mbed_official 482:d9a48e768ce0 117 LONG (__nc_bss_start)
mbed_official 482:d9a48e768ce0 118 LONG (__nc_bss_end - __nc_bss_start)
mbed_official 482:d9a48e768ce0 119 __zero_table_end__ = .;
mbed_official 482:d9a48e768ce0 120 } > SFLASH
mbed_official 482:d9a48e768ce0 121
mbed_official 390:35c2c1cf29cd 122 __etext = .;
mbed_official 390:35c2c1cf29cd 123
mbed_official 482:d9a48e768ce0 124 .ttb :
mbed_official 482:d9a48e768ce0 125 {
mbed_official 482:d9a48e768ce0 126 Image$$TTB$$ZI$$Base = .;
mbed_official 482:d9a48e768ce0 127 . += 0x00004000;
mbed_official 482:d9a48e768ce0 128 Image$$TTB$$ZI$$Limit = .;
mbed_official 482:d9a48e768ce0 129 } > L_TTB
mbed_official 482:d9a48e768ce0 130
mbed_official 390:35c2c1cf29cd 131 .data : AT (__etext)
mbed_official 390:35c2c1cf29cd 132 {
mbed_official 482:d9a48e768ce0 133 Image$$RW_DATA$$Base = .;
mbed_official 390:35c2c1cf29cd 134 __data_start__ = .;
mbed_official 390:35c2c1cf29cd 135 *(vtable)
mbed_official 390:35c2c1cf29cd 136 *(.data*)
mbed_official 482:d9a48e768ce0 137 Image$$RW_DATA$$Limit = .;
mbed_official 390:35c2c1cf29cd 138
mbed_official 390:35c2c1cf29cd 139 . = ALIGN(4);
mbed_official 390:35c2c1cf29cd 140 /* preinit data */
mbed_official 390:35c2c1cf29cd 141 PROVIDE (__preinit_array_start = .);
mbed_official 390:35c2c1cf29cd 142 KEEP(*(.preinit_array))
mbed_official 390:35c2c1cf29cd 143 PROVIDE (__preinit_array_end = .);
mbed_official 390:35c2c1cf29cd 144
mbed_official 390:35c2c1cf29cd 145 . = ALIGN(4);
mbed_official 390:35c2c1cf29cd 146 /* init data */
mbed_official 390:35c2c1cf29cd 147 PROVIDE (__init_array_start = .);
mbed_official 390:35c2c1cf29cd 148 KEEP(*(SORT(.init_array.*)))
mbed_official 390:35c2c1cf29cd 149 KEEP(*(.init_array))
mbed_official 390:35c2c1cf29cd 150 PROVIDE (__init_array_end = .);
mbed_official 390:35c2c1cf29cd 151
mbed_official 390:35c2c1cf29cd 152
mbed_official 390:35c2c1cf29cd 153 . = ALIGN(4);
mbed_official 390:35c2c1cf29cd 154 /* finit data */
mbed_official 390:35c2c1cf29cd 155 PROVIDE (__fini_array_start = .);
mbed_official 390:35c2c1cf29cd 156 KEEP(*(SORT(.fini_array.*)))
mbed_official 390:35c2c1cf29cd 157 KEEP(*(.fini_array))
mbed_official 390:35c2c1cf29cd 158 PROVIDE (__fini_array_end = .);
mbed_official 390:35c2c1cf29cd 159
mbed_official 390:35c2c1cf29cd 160 . = ALIGN(4);
mbed_official 390:35c2c1cf29cd 161 /* All data end */
mbed_official 390:35c2c1cf29cd 162 __data_end__ = .;
mbed_official 390:35c2c1cf29cd 163
mbed_official 390:35c2c1cf29cd 164 } > RAM
mbed_official 390:35c2c1cf29cd 165
mbed_official 390:35c2c1cf29cd 166
mbed_official 482:d9a48e768ce0 167 .bss ALIGN(0x400):
mbed_official 390:35c2c1cf29cd 168 {
mbed_official 482:d9a48e768ce0 169 Image$$ZI_DATA$$Base = .;
mbed_official 390:35c2c1cf29cd 170 __bss_start__ = .;
mbed_official 390:35c2c1cf29cd 171 *(.bss*)
mbed_official 390:35c2c1cf29cd 172 *(COMMON)
mbed_official 390:35c2c1cf29cd 173 __bss_end__ = .;
mbed_official 482:d9a48e768ce0 174 Image$$ZI_DATA$$Limit = .;
mbed_official 390:35c2c1cf29cd 175 } > RAM
mbed_official 390:35c2c1cf29cd 176
mbed_official 390:35c2c1cf29cd 177
mbed_official 390:35c2c1cf29cd 178 .heap :
mbed_official 390:35c2c1cf29cd 179 {
mbed_official 390:35c2c1cf29cd 180 __end__ = .;
mbed_official 390:35c2c1cf29cd 181 end = __end__;
mbed_official 390:35c2c1cf29cd 182 *(.heap*)
mbed_official 390:35c2c1cf29cd 183 __HeapLimit = .;
mbed_official 390:35c2c1cf29cd 184 } > RAM
mbed_official 390:35c2c1cf29cd 185
mbed_official 390:35c2c1cf29cd 186 /* .stack_dummy section doesn't contains any symbols. It is only
mbed_official 390:35c2c1cf29cd 187 * used for linker to calculate size of stack sections, and assign
mbed_official 390:35c2c1cf29cd 188 * values to stack symbols later */
mbed_official 390:35c2c1cf29cd 189 .stack_dummy :
mbed_official 390:35c2c1cf29cd 190 {
mbed_official 390:35c2c1cf29cd 191 *(.stack)
mbed_official 390:35c2c1cf29cd 192 } > RAM
mbed_official 390:35c2c1cf29cd 193
mbed_official 482:d9a48e768ce0 194 __etext2 = __etext + SIZEOF(.data);
mbed_official 482:d9a48e768ce0 195 .nc_data : AT (__etext2)
mbed_official 482:d9a48e768ce0 196 {
mbed_official 482:d9a48e768ce0 197 Image$$RW_DATA_NC$$Base = .;
mbed_official 482:d9a48e768ce0 198 __nc_data_start = .;
mbed_official 482:d9a48e768ce0 199 *(NC_DATA)
mbed_official 482:d9a48e768ce0 200
mbed_official 482:d9a48e768ce0 201 . = ALIGN(4);
mbed_official 482:d9a48e768ce0 202 __nc_data_end = .;
mbed_official 482:d9a48e768ce0 203 Image$$RW_DATA_NC$$Limit = .;
mbed_official 482:d9a48e768ce0 204 } > RAM_NC
mbed_official 482:d9a48e768ce0 205
mbed_official 482:d9a48e768ce0 206 .nc_bss (NOLOAD) :
mbed_official 482:d9a48e768ce0 207 {
mbed_official 482:d9a48e768ce0 208 Image$$ZI_DATA_NC$$Base = .;
mbed_official 482:d9a48e768ce0 209 __nc_bss_start = .;
mbed_official 482:d9a48e768ce0 210 *(NC_BSS)
mbed_official 482:d9a48e768ce0 211
mbed_official 482:d9a48e768ce0 212 . = ALIGN(4);
mbed_official 482:d9a48e768ce0 213 __nc_bss_end = .;
mbed_official 482:d9a48e768ce0 214 Image$$ZI_DATA_NC$$Limit = .;
mbed_official 482:d9a48e768ce0 215 } > RAM_NC
mbed_official 482:d9a48e768ce0 216
mbed_official 390:35c2c1cf29cd 217 /* Set stack top to end of RAM, and stack limit move down by
mbed_official 390:35c2c1cf29cd 218 * size of stack_dummy section */
mbed_official 390:35c2c1cf29cd 219 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
mbed_official 390:35c2c1cf29cd 220 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
mbed_official 390:35c2c1cf29cd 221 PROVIDE(__stack = __StackTop);
mbed_official 390:35c2c1cf29cd 222
mbed_official 390:35c2c1cf29cd 223 /* Check if data + heap + stack exceeds RAM limit */
mbed_official 390:35c2c1cf29cd 224 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
mbed_official 390:35c2c1cf29cd 225
mbed_official 390:35c2c1cf29cd 226
mbed_official 390:35c2c1cf29cd 227 }