mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Mon Oct 02 15:33:19 2017 +0100
Revision:
174:b96e65c34a4d
Parent:
173:e131a1973e81
Child:
178:79309dc6340a
This updates the lib to the mbed lib v 152

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 173:e131a1973e81 1 /*
AnnaBridge 173:e131a1973e81 2 * Copyright (c) 2013-2016 Realtek Semiconductor Corp.
AnnaBridge 173:e131a1973e81 3 *
AnnaBridge 173:e131a1973e81 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 173:e131a1973e81 5 * you may not use this file except in compliance with the License.
AnnaBridge 173:e131a1973e81 6 * You may obtain a copy of the License at
AnnaBridge 173:e131a1973e81 7 *
AnnaBridge 173:e131a1973e81 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 173:e131a1973e81 9 *
AnnaBridge 173:e131a1973e81 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 173:e131a1973e81 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 173:e131a1973e81 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 173:e131a1973e81 13 * See the License for the specific language governing permissions and
AnnaBridge 173:e131a1973e81 14 * limitations under the License.
AnnaBridge 173:e131a1973e81 15 */
AnnaBridge 173:e131a1973e81 16
AnnaBridge 173:e131a1973e81 17 INCLUDE "rtl8195a_rom.h"
AnnaBridge 173:e131a1973e81 18 /* DATA_RAM: We cannot put Code(.text) in DATA_RAM, this region is reserved for Image1(boot loader).
AnnaBridge 173:e131a1973e81 19 But we can put .data/.bss of Image2 in this region */
AnnaBridge 173:e131a1973e81 20 MEMORY
AnnaBridge 173:e131a1973e81 21 {
AnnaBridge 173:e131a1973e81 22 TCM (rwx) : ORIGIN = 0x1FFF0000, LENGTH = 0x00010000
AnnaBridge 173:e131a1973e81 23 DATA_RAM (rwx) : ORIGIN = 0x10002100, LENGTH = 0x10007000 - 0x10002100
AnnaBridge 173:e131a1973e81 24 SRAM1 (rwx) : ORIGIN = 0x10007000, LENGTH = 0x10070000 - 0x10007000
AnnaBridge 173:e131a1973e81 25 SRAM2 (rwx) : ORIGIN = 0x30000000, LENGTH = 2M
AnnaBridge 173:e131a1973e81 26 }
AnnaBridge 173:e131a1973e81 27
AnnaBridge 173:e131a1973e81 28 /* Stack sizes: */
AnnaBridge 173:e131a1973e81 29 StackSize = 0x1000;
AnnaBridge 173:e131a1973e81 30
AnnaBridge 173:e131a1973e81 31 /* Linker script to place sections and symbol values. Should be used together
AnnaBridge 173:e131a1973e81 32 * with other linker script that defines memory regions FLASH and RAM.
AnnaBridge 173:e131a1973e81 33 * It references following symbols, which must be defined in code:
AnnaBridge 173:e131a1973e81 34 * _reset_init : Entry of reset handler
AnnaBridge 173:e131a1973e81 35 *
AnnaBridge 173:e131a1973e81 36 * It defines following symbols, which code can use without definition:
AnnaBridge 173:e131a1973e81 37 * __exidx_start
AnnaBridge 173:e131a1973e81 38 * __exidx_end
AnnaBridge 173:e131a1973e81 39 * __etext
AnnaBridge 173:e131a1973e81 40 * __data_start__
AnnaBridge 173:e131a1973e81 41 * __preinit_array_start
AnnaBridge 173:e131a1973e81 42 * __preinit_array_end
AnnaBridge 173:e131a1973e81 43 * __init_array_start
AnnaBridge 173:e131a1973e81 44 * __init_array_end
AnnaBridge 173:e131a1973e81 45 * __fini_array_start
AnnaBridge 173:e131a1973e81 46 * __fini_array_end
AnnaBridge 173:e131a1973e81 47 * __data_end__
AnnaBridge 173:e131a1973e81 48 * __bss_start__
AnnaBridge 173:e131a1973e81 49 * __bss_end__
AnnaBridge 173:e131a1973e81 50 * __end__
AnnaBridge 173:e131a1973e81 51 * end
AnnaBridge 173:e131a1973e81 52 * __HeapLimit
AnnaBridge 173:e131a1973e81 53 * __StackLimit
AnnaBridge 173:e131a1973e81 54 * __StackTop
AnnaBridge 173:e131a1973e81 55 * __stack
AnnaBridge 173:e131a1973e81 56 */
AnnaBridge 173:e131a1973e81 57 ENTRY(Reset_Handler)
AnnaBridge 173:e131a1973e81 58
AnnaBridge 173:e131a1973e81 59 SECTIONS
AnnaBridge 173:e131a1973e81 60 {
AnnaBridge 173:e131a1973e81 61 .image2.table :
AnnaBridge 173:e131a1973e81 62 {
AnnaBridge 173:e131a1973e81 63 KEEP(*(SORT(.image2.ram.data*)))
AnnaBridge 173:e131a1973e81 64 KEEP(*(.image2.validate.rodata*))
AnnaBridge 173:e131a1973e81 65 } > SRAM2
AnnaBridge 173:e131a1973e81 66
AnnaBridge 173:e131a1973e81 67 .text.sram1 :
AnnaBridge 173:e131a1973e81 68 {
AnnaBridge 173:e131a1973e81 69 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 70 *rtl8195a_crypto.o (.text* .rodata*)
AnnaBridge 173:e131a1973e81 71 *mbedtls*.o (.text* .rodata*)
AnnaBridge 173:e131a1973e81 72 *libc.a: (.text* .rodata*)
AnnaBridge 173:e131a1973e81 73 *lib_peripheral_mbed_gcc.a: (.text*)
AnnaBridge 173:e131a1973e81 74 } > SRAM1
AnnaBridge 173:e131a1973e81 75
AnnaBridge 173:e131a1973e81 76 .text.sram2 :
AnnaBridge 173:e131a1973e81 77 {
AnnaBridge 173:e131a1973e81 78 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 79 *(.mon.ram.text*)
AnnaBridge 173:e131a1973e81 80 *(.hal.flash.text*)
AnnaBridge 173:e131a1973e81 81 *(.hal.sdrc.text*)
AnnaBridge 173:e131a1973e81 82 *(.hal.gpio.text*)
AnnaBridge 173:e131a1973e81 83 *(.text*)
AnnaBridge 173:e131a1973e81 84
AnnaBridge 173:e131a1973e81 85 KEEP(*(.init))
AnnaBridge 173:e131a1973e81 86 KEEP(*(.fini))
AnnaBridge 173:e131a1973e81 87
AnnaBridge 173:e131a1973e81 88 /* .ctors */
AnnaBridge 173:e131a1973e81 89 *crtbegin.o(.ctors)
AnnaBridge 173:e131a1973e81 90 *crtbegin?.o(.ctors)
AnnaBridge 173:e131a1973e81 91 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
AnnaBridge 173:e131a1973e81 92 *(SORT(.ctors.*))
AnnaBridge 173:e131a1973e81 93 *(.ctors)
AnnaBridge 173:e131a1973e81 94
AnnaBridge 173:e131a1973e81 95 /* .dtors */
AnnaBridge 173:e131a1973e81 96 *crtbegin.o(.dtors)
AnnaBridge 173:e131a1973e81 97 *crtbegin?.o(.dtors)
AnnaBridge 173:e131a1973e81 98 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
AnnaBridge 173:e131a1973e81 99 *(SORT(.dtors.*))
AnnaBridge 173:e131a1973e81 100 *(.dtors)
AnnaBridge 173:e131a1973e81 101
AnnaBridge 173:e131a1973e81 102 *(.rodata*)
AnnaBridge 173:e131a1973e81 103
AnnaBridge 173:e131a1973e81 104 KEEP(*(.eh_frame*))
AnnaBridge 173:e131a1973e81 105 } > SRAM2
AnnaBridge 173:e131a1973e81 106 __etext = .;
AnnaBridge 173:e131a1973e81 107
AnnaBridge 173:e131a1973e81 108 __data_start__ = .;
AnnaBridge 173:e131a1973e81 109
AnnaBridge 173:e131a1973e81 110 .data.sram1 :
AnnaBridge 173:e131a1973e81 111 {
AnnaBridge 173:e131a1973e81 112 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 113 __sram_data_start__ = .;
AnnaBridge 173:e131a1973e81 114 *rtl8195a_crypto*.o (.data*)
AnnaBridge 173:e131a1973e81 115 *mbedtls*.o (.data*)
AnnaBridge 173:e131a1973e81 116 __sram_data_end__ = .;
AnnaBridge 173:e131a1973e81 117 } > SRAM1
AnnaBridge 173:e131a1973e81 118
AnnaBridge 173:e131a1973e81 119 .data.sram2 :
AnnaBridge 173:e131a1973e81 120 {
AnnaBridge 173:e131a1973e81 121 __sdram_data_start__ = .;
AnnaBridge 173:e131a1973e81 122 *(vtable)
AnnaBridge 173:e131a1973e81 123 *(.data*)
AnnaBridge 173:e131a1973e81 124 *(.sdram.data*)
AnnaBridge 173:e131a1973e81 125
AnnaBridge 173:e131a1973e81 126 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 127 /* preinit data */
AnnaBridge 173:e131a1973e81 128 PROVIDE (__preinit_array_start = .);
AnnaBridge 173:e131a1973e81 129 KEEP(*(.preinit_array))
AnnaBridge 173:e131a1973e81 130 PROVIDE (__preinit_array_end = .);
AnnaBridge 173:e131a1973e81 131
AnnaBridge 173:e131a1973e81 132 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 133 /* init data */
AnnaBridge 173:e131a1973e81 134 PROVIDE (__init_array_start = .);
AnnaBridge 173:e131a1973e81 135 KEEP(*(SORT(.init_array.*)))
AnnaBridge 173:e131a1973e81 136 KEEP(*(.init_array))
AnnaBridge 173:e131a1973e81 137 PROVIDE (__init_array_end = .);
AnnaBridge 173:e131a1973e81 138
AnnaBridge 173:e131a1973e81 139 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 140 /* finit data */
AnnaBridge 173:e131a1973e81 141 PROVIDE (__fini_array_start = .);
AnnaBridge 173:e131a1973e81 142 KEEP(*(SORT(.fini_array.*)))
AnnaBridge 173:e131a1973e81 143 KEEP(*(.fini_array))
AnnaBridge 173:e131a1973e81 144 PROVIDE (__fini_array_end = .);
AnnaBridge 173:e131a1973e81 145
AnnaBridge 173:e131a1973e81 146 . = ALIGN(4);
AnnaBridge 173:e131a1973e81 147
AnnaBridge 173:e131a1973e81 148 __sdram_data_end__ = .;
AnnaBridge 173:e131a1973e81 149 /* All data end */
AnnaBridge 173:e131a1973e81 150 } > SRAM2
AnnaBridge 173:e131a1973e81 151 __data_end__ = .;
AnnaBridge 173:e131a1973e81 152 __image2_end__ = .;
AnnaBridge 173:e131a1973e81 153
AnnaBridge 173:e131a1973e81 154 .ARM.extab :
AnnaBridge 173:e131a1973e81 155 {
AnnaBridge 173:e131a1973e81 156 *(.ARM.extab* .gnu.linkonce.armextab.*)
AnnaBridge 173:e131a1973e81 157 } > SRAM2
AnnaBridge 173:e131a1973e81 158
AnnaBridge 173:e131a1973e81 159 __exidx_start = .;
AnnaBridge 173:e131a1973e81 160 .ARM.exidx :
AnnaBridge 173:e131a1973e81 161 {
AnnaBridge 173:e131a1973e81 162 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
AnnaBridge 173:e131a1973e81 163 } > SRAM2
AnnaBridge 173:e131a1973e81 164 __exidx_end = .;
AnnaBridge 173:e131a1973e81 165
AnnaBridge 173:e131a1973e81 166 .bss.sram1 (NOLOAD) :
AnnaBridge 173:e131a1973e81 167 {
AnnaBridge 173:e131a1973e81 168 __bss_sram_start__ = .;
AnnaBridge 173:e131a1973e81 169 *rtl8195a_crypto.o (.bss* COMMON)
AnnaBridge 173:e131a1973e81 170 *mbedtls*.o (.bss* COMMON)
AnnaBridge 173:e131a1973e81 171 *(.bss.thread_stack_main)
AnnaBridge 173:e131a1973e81 172 __bss_sram_end__ = .;
AnnaBridge 173:e131a1973e81 173 } > SRAM1
AnnaBridge 173:e131a1973e81 174
AnnaBridge 173:e131a1973e81 175 .bss.sram2 (NOLOAD) :
AnnaBridge 173:e131a1973e81 176 {
AnnaBridge 173:e131a1973e81 177 __bss_start__ = .;
AnnaBridge 173:e131a1973e81 178 __bss_dram_start__ = .;
AnnaBridge 173:e131a1973e81 179 *(.bss*)
AnnaBridge 173:e131a1973e81 180 *(COMMON)
AnnaBridge 173:e131a1973e81 181 *(.bdsram.data*)
AnnaBridge 173:e131a1973e81 182 __bss_dram_end__ = .;
AnnaBridge 173:e131a1973e81 183 __bss_end__ = .;
AnnaBridge 173:e131a1973e81 184 } > SRAM2
AnnaBridge 173:e131a1973e81 185
AnnaBridge 173:e131a1973e81 186 .bf_data :
AnnaBridge 173:e131a1973e81 187 {
AnnaBridge 173:e131a1973e81 188 __buffer_data_start__ = .;
AnnaBridge 173:e131a1973e81 189 *(.bfsram.data*)
AnnaBridge 173:e131a1973e81 190 __buffer_data_end__ = .;
AnnaBridge 173:e131a1973e81 191 } > SRAM2
AnnaBridge 173:e131a1973e81 192
AnnaBridge 173:e131a1973e81 193 .heap (NOLOAD):
AnnaBridge 173:e131a1973e81 194 {
AnnaBridge 173:e131a1973e81 195 __end__ = .;
AnnaBridge 173:e131a1973e81 196 end = __end__;
AnnaBridge 173:e131a1973e81 197 *(.heap*)
AnnaBridge 173:e131a1973e81 198 . = ORIGIN(SRAM1) + LENGTH(SRAM1) - StackSize;
AnnaBridge 173:e131a1973e81 199 __HeapLimit = .;
AnnaBridge 173:e131a1973e81 200 } > SRAM1
AnnaBridge 173:e131a1973e81 201
AnnaBridge 173:e131a1973e81 202 .TCM_overlay :
AnnaBridge 173:e131a1973e81 203 {
AnnaBridge 173:e131a1973e81 204 __bss_dtcm_start__ = .;
AnnaBridge 173:e131a1973e81 205 *lwip_mem.o (.bss*)
AnnaBridge 173:e131a1973e81 206 *lwip_memp.o (.bss*)
AnnaBridge 173:e131a1973e81 207 *(.tcm.heap*)
AnnaBridge 173:e131a1973e81 208 __bss_dtcm_end__ = .;
AnnaBridge 173:e131a1973e81 209 } > TCM
AnnaBridge 173:e131a1973e81 210
AnnaBridge 173:e131a1973e81 211 /* .stack_dummy section doesn't contains any symbols. It is only
AnnaBridge 173:e131a1973e81 212 * used for linker to calculate size of stack sections, and assign
AnnaBridge 173:e131a1973e81 213 * values to stack symbols later */
AnnaBridge 173:e131a1973e81 214 .stack_dummy (NOLOAD):
AnnaBridge 173:e131a1973e81 215 {
AnnaBridge 173:e131a1973e81 216 __StackLimit = .;
AnnaBridge 173:e131a1973e81 217 *(.stack)
AnnaBridge 173:e131a1973e81 218 . += StackSize - (. - __StackLimit);
AnnaBridge 173:e131a1973e81 219 } > SRAM1
AnnaBridge 173:e131a1973e81 220
AnnaBridge 173:e131a1973e81 221 /* Set stack top to end of RAM, and stack limit move down by
AnnaBridge 173:e131a1973e81 222 * size of stack_dummy section */
AnnaBridge 173:e131a1973e81 223 __StackTop = ORIGIN(SRAM1) + LENGTH(SRAM1);
AnnaBridge 173:e131a1973e81 224 __StackLimit = __StackTop - SIZEOF(.stack_dummy);
AnnaBridge 173:e131a1973e81 225 PROVIDE(__stack = __StackTop);
AnnaBridge 173:e131a1973e81 226
AnnaBridge 173:e131a1973e81 227 /* Check if data + heap + stack exceeds RAM limit */
AnnaBridge 173:e131a1973e81 228 ASSERT(__StackLimit >= __HeapLimit, "region RAM exceeds ram limit")
AnnaBridge 173:e131a1973e81 229 }