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