mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
482:d9a48e768ce0
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

Full URL: https://github.com/mbedmicro/mbed/commit/d5b4d2ab9c47edb4dc5776e7177b0c2263459081/

Initial version of drivers for SAMR21

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 }