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:
425:91481e778ca2
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 419:d1a75cbecf6e 1 /* Linker script to configure memory regions. */
mbed_official 419:d1a75cbecf6e 2 MEMORY
mbed_official 419:d1a75cbecf6e 3 {
mbed_official 425:91481e778ca2 4 /* 512KB FLASH, 80KB RAM, Reserve up till 0x13C. There are 0x73 vectors = 292
mbed_official 425:91481e778ca2 5 * bytes (0x124) in RAM. But all GCC scripts seem to require BootRAM @0x138
mbed_official 425:91481e778ca2 6 */
mbed_official 425:91481e778ca2 7 FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512k
mbed_official 425:91481e778ca2 8 RAM (rwx) : ORIGIN = 0x2000013C, LENGTH = 0x14000-0x13C
mbed_official 419:d1a75cbecf6e 9 }
mbed_official 419:d1a75cbecf6e 10
mbed_official 419:d1a75cbecf6e 11 /* Linker script to place sections and symbol values. Should be used together
mbed_official 419:d1a75cbecf6e 12 * with other linker script that defines memory regions FLASH and RAM.
mbed_official 419:d1a75cbecf6e 13 * It references following symbols, which must be defined in code:
mbed_official 419:d1a75cbecf6e 14 * Reset_Handler : Entry of reset handler
mbed_official 419:d1a75cbecf6e 15 *
mbed_official 419:d1a75cbecf6e 16 * It defines following symbols, which code can use without definition:
mbed_official 419:d1a75cbecf6e 17 * __exidx_start
mbed_official 419:d1a75cbecf6e 18 * __exidx_end
mbed_official 419:d1a75cbecf6e 19 * __etext
mbed_official 419:d1a75cbecf6e 20 * __data_start__
mbed_official 419:d1a75cbecf6e 21 * __preinit_array_start
mbed_official 419:d1a75cbecf6e 22 * __preinit_array_end
mbed_official 419:d1a75cbecf6e 23 * __init_array_start
mbed_official 419:d1a75cbecf6e 24 * __init_array_end
mbed_official 419:d1a75cbecf6e 25 * __fini_array_start
mbed_official 419:d1a75cbecf6e 26 * __fini_array_end
mbed_official 419:d1a75cbecf6e 27 * __data_end__
mbed_official 419:d1a75cbecf6e 28 * __bss_start__
mbed_official 419:d1a75cbecf6e 29 * __bss_end__
mbed_official 419:d1a75cbecf6e 30 * __end__
mbed_official 419:d1a75cbecf6e 31 * end
mbed_official 419:d1a75cbecf6e 32 * __HeapLimit
mbed_official 419:d1a75cbecf6e 33 * __StackLimit
mbed_official 419:d1a75cbecf6e 34 * __StackTop
mbed_official 419:d1a75cbecf6e 35 * __stack
mbed_official 419:d1a75cbecf6e 36 * _estack
mbed_official 419:d1a75cbecf6e 37 */
mbed_official 419:d1a75cbecf6e 38 ENTRY(Reset_Handler)
mbed_official 419:d1a75cbecf6e 39
mbed_official 419:d1a75cbecf6e 40 SECTIONS
mbed_official 419:d1a75cbecf6e 41 {
mbed_official 419:d1a75cbecf6e 42 .text :
mbed_official 419:d1a75cbecf6e 43 {
mbed_official 419:d1a75cbecf6e 44 KEEP(*(.isr_vector))
mbed_official 419:d1a75cbecf6e 45 *(.text*)
mbed_official 419:d1a75cbecf6e 46 KEEP(*(.init))
mbed_official 419:d1a75cbecf6e 47 KEEP(*(.fini))
mbed_official 419:d1a75cbecf6e 48
mbed_official 419:d1a75cbecf6e 49 /* .ctors */
mbed_official 419:d1a75cbecf6e 50 *crtbegin.o(.ctors)
mbed_official 419:d1a75cbecf6e 51 *crtbegin?.o(.ctors)
mbed_official 419:d1a75cbecf6e 52 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
mbed_official 419:d1a75cbecf6e 53 *(SORT(.ctors.*))
mbed_official 419:d1a75cbecf6e 54 *(.ctors)
mbed_official 419:d1a75cbecf6e 55
mbed_official 419:d1a75cbecf6e 56 /* .dtors */
mbed_official 419:d1a75cbecf6e 57 *crtbegin.o(.dtors)
mbed_official 419:d1a75cbecf6e 58 *crtbegin?.o(.dtors)
mbed_official 419:d1a75cbecf6e 59 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
mbed_official 419:d1a75cbecf6e 60 *(SORT(.dtors.*))
mbed_official 419:d1a75cbecf6e 61 *(.dtors)
mbed_official 419:d1a75cbecf6e 62
mbed_official 419:d1a75cbecf6e 63 *(.rodata*)
mbed_official 419:d1a75cbecf6e 64
mbed_official 419:d1a75cbecf6e 65 KEEP(*(.eh_frame*))
mbed_official 419:d1a75cbecf6e 66 } > FLASH
mbed_official 419:d1a75cbecf6e 67
mbed_official 419:d1a75cbecf6e 68 .ARM.extab :
mbed_official 419:d1a75cbecf6e 69 {
mbed_official 419:d1a75cbecf6e 70 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 419:d1a75cbecf6e 71 } > FLASH
mbed_official 419:d1a75cbecf6e 72
mbed_official 419:d1a75cbecf6e 73 __exidx_start = .;
mbed_official 419:d1a75cbecf6e 74 .ARM.exidx :
mbed_official 419:d1a75cbecf6e 75 {
mbed_official 419:d1a75cbecf6e 76 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
mbed_official 419:d1a75cbecf6e 77 } > FLASH
mbed_official 419:d1a75cbecf6e 78 __exidx_end = .;
mbed_official 419:d1a75cbecf6e 79
mbed_official 419:d1a75cbecf6e 80 __etext = .;
mbed_official 419:d1a75cbecf6e 81 _sidata = .;
mbed_official 419:d1a75cbecf6e 82
mbed_official 419:d1a75cbecf6e 83 .data : AT (__etext)
mbed_official 419:d1a75cbecf6e 84 {
mbed_official 419:d1a75cbecf6e 85 __data_start__ = .;
mbed_official 419:d1a75cbecf6e 86 _sdata = .;
mbed_official 419:d1a75cbecf6e 87 *(vtable)
mbed_official 419:d1a75cbecf6e 88 *(.data*)
mbed_official 419:d1a75cbecf6e 89
mbed_official 419:d1a75cbecf6e 90 . = ALIGN(4);
mbed_official 419:d1a75cbecf6e 91 /* preinit data */
mbed_official 419:d1a75cbecf6e 92 PROVIDE_HIDDEN (__preinit_array_start = .);
mbed_official 419:d1a75cbecf6e 93 KEEP(*(.preinit_array))
mbed_official 419:d1a75cbecf6e 94 PROVIDE_HIDDEN (__preinit_array_end = .);
mbed_official 419:d1a75cbecf6e 95
mbed_official 419:d1a75cbecf6e 96 . = ALIGN(4);
mbed_official 419:d1a75cbecf6e 97 /* init data */
mbed_official 419:d1a75cbecf6e 98 PROVIDE_HIDDEN (__init_array_start = .);
mbed_official 419:d1a75cbecf6e 99 KEEP(*(SORT(.init_array.*)))
mbed_official 419:d1a75cbecf6e 100 KEEP(*(.init_array))
mbed_official 419:d1a75cbecf6e 101 PROVIDE_HIDDEN (__init_array_end = .);
mbed_official 419:d1a75cbecf6e 102
mbed_official 419:d1a75cbecf6e 103
mbed_official 419:d1a75cbecf6e 104 . = ALIGN(4);
mbed_official 419:d1a75cbecf6e 105 /* finit data */
mbed_official 419:d1a75cbecf6e 106 PROVIDE_HIDDEN (__fini_array_start = .);
mbed_official 419:d1a75cbecf6e 107 KEEP(*(SORT(.fini_array.*)))
mbed_official 419:d1a75cbecf6e 108 KEEP(*(.fini_array))
mbed_official 419:d1a75cbecf6e 109 PROVIDE_HIDDEN (__fini_array_end = .);
mbed_official 419:d1a75cbecf6e 110
mbed_official 419:d1a75cbecf6e 111 KEEP(*(.jcr*))
mbed_official 419:d1a75cbecf6e 112 . = ALIGN(4);
mbed_official 419:d1a75cbecf6e 113 /* All data end */
mbed_official 419:d1a75cbecf6e 114 __data_end__ = .;
mbed_official 419:d1a75cbecf6e 115 _edata = .;
mbed_official 419:d1a75cbecf6e 116
mbed_official 419:d1a75cbecf6e 117 } > RAM
mbed_official 419:d1a75cbecf6e 118
mbed_official 419:d1a75cbecf6e 119 .bss :
mbed_official 419:d1a75cbecf6e 120 {
mbed_official 419:d1a75cbecf6e 121 . = ALIGN(4);
mbed_official 419:d1a75cbecf6e 122 __bss_start__ = .;
mbed_official 419:d1a75cbecf6e 123 _sbss = .;
mbed_official 419:d1a75cbecf6e 124 *(.bss*)
mbed_official 419:d1a75cbecf6e 125 *(COMMON)
mbed_official 419:d1a75cbecf6e 126 . = ALIGN(4);
mbed_official 419:d1a75cbecf6e 127 __bss_end__ = .;
mbed_official 419:d1a75cbecf6e 128 _ebss = .;
mbed_official 419:d1a75cbecf6e 129 } > RAM
mbed_official 419:d1a75cbecf6e 130
mbed_official 419:d1a75cbecf6e 131 .heap (COPY):
mbed_official 419:d1a75cbecf6e 132 {
mbed_official 419:d1a75cbecf6e 133 __end__ = .;
mbed_official 419:d1a75cbecf6e 134 end = __end__;
mbed_official 419:d1a75cbecf6e 135 *(.heap*)
mbed_official 419:d1a75cbecf6e 136 __HeapLimit = .;
mbed_official 419:d1a75cbecf6e 137 } > RAM
mbed_official 419:d1a75cbecf6e 138
mbed_official 419:d1a75cbecf6e 139 /* .stack_dummy section doesn't contains any symbols. It is only
mbed_official 419:d1a75cbecf6e 140 * used for linker to calculate size of stack sections, and assign
mbed_official 419:d1a75cbecf6e 141 * values to stack symbols later */
mbed_official 419:d1a75cbecf6e 142 .stack_dummy (COPY):
mbed_official 419:d1a75cbecf6e 143 {
mbed_official 419:d1a75cbecf6e 144 *(.stack*)
mbed_official 419:d1a75cbecf6e 145 } > RAM
mbed_official 419:d1a75cbecf6e 146
mbed_official 419:d1a75cbecf6e 147 /* Set stack top to end of RAM, and stack limit move down by
mbed_official 419:d1a75cbecf6e 148 * size of stack_dummy section */
mbed_official 419:d1a75cbecf6e 149 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
mbed_official 419:d1a75cbecf6e 150 _estack = __StackTop;
mbed_official 419:d1a75cbecf6e 151 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
mbed_official 419:d1a75cbecf6e 152 PROVIDE(__stack = __StackTop);
mbed_official 419:d1a75cbecf6e 153
mbed_official 419:d1a75cbecf6e 154 /* Check if data + heap + stack exceeds RAM limit */
mbed_official 419:d1a75cbecf6e 155 ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
mbed_official 419:d1a75cbecf6e 156 }