Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed by
TARGET_NRF51_DK/TOOLCHAIN_GCC_ARM/NRF51822.ld@122:f9eeca106725, 2016-07-07 (annotated)
- Committer:
- Kojto
- Date:
- Thu Jul 07 14:34:11 2016 +0100
- Revision:
- 122:f9eeca106725
- Parent:
- 99:dbbf35b96557
- Child:
- 123:b0220dba8be7
Release 122 of the mbed library
Changes:
- new targets - Nucleo L432KC, Beetle, Nucleo F446ZE, Nucleo L011K4
- Thread safety addition - mbed API should contain a statement about thread safety
- critical section API addition
- CAS API (core_util_atomic_incr/decr)
- DEVICE_ are generated from targets.json file, device.h deprecated
- Callback replaces FunctionPointer to provide std like interface
- mbed HAL API docs improvements
- toolchain - prexif attributes with MBED_
- add new attributes - packed, weak, forcedinline, align
- target.json - contains targets definitions
- ST - L1XX - Cube update to 1.5
- SPI clock selection fix (clock from APB domain)
- F7 - Cube update v1.4.0
- L0 - baudrate init fix
- L1 - Cube update v1.5
- F3 - baudrate init fix, 3 targets CAN support
- F4 - Cube update v1.12.0, 3 targets CAN support
- L4XX - Cube update v1.5.1
- F0 - update Cube to v1.5.0
- L4 - 2 targets (L476RG/VG) CAN support
- NXP - pwm clock fix for KSDK2 MCU
- LPC2368 - remove ARM toolchain support - due to regression
- KSDK2 - fix SPI , I2C address and repeat start
- Silabs - some fixes backported from mbed 3
- Renesas - RZ_A1H - SystemCoreClockUpdate addition
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kojto | 91:031413cf7a89 | 1 | /* Linker script to configure memory regions. */ |
Kojto | 91:031413cf7a89 | 2 | |
Kojto | 91:031413cf7a89 | 3 | MEMORY |
Kojto | 91:031413cf7a89 | 4 | { |
Kojto | 99:dbbf35b96557 | 5 | FLASH (rx) : ORIGIN = 0x0001C000, LENGTH = 0x24000 |
Kojto | 99:dbbf35b96557 | 6 | RAM (rwx) : ORIGIN = 0x20002800, LENGTH = 0x5800 |
Kojto | 91:031413cf7a89 | 7 | } |
Kojto | 91:031413cf7a89 | 8 | |
Kojto | 91:031413cf7a89 | 9 | OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") |
Kojto | 91:031413cf7a89 | 10 | |
Kojto | 91:031413cf7a89 | 11 | /* Linker script to place sections and symbol values. Should be used together |
Kojto | 91:031413cf7a89 | 12 | * with other linker script that defines memory regions FLASH and RAM. |
Kojto | 91:031413cf7a89 | 13 | * It references following symbols, which must be defined in code: |
Kojto | 91:031413cf7a89 | 14 | * Reset_Handler : Entry of reset handler |
Kojto | 91:031413cf7a89 | 15 | * |
Kojto | 91:031413cf7a89 | 16 | * It defines following symbols, which code can use without definition: |
Kojto | 91:031413cf7a89 | 17 | * __exidx_start |
Kojto | 91:031413cf7a89 | 18 | * __exidx_end |
Kojto | 91:031413cf7a89 | 19 | * __etext |
Kojto | 91:031413cf7a89 | 20 | * __data_start__ |
Kojto | 91:031413cf7a89 | 21 | * __preinit_array_start |
Kojto | 91:031413cf7a89 | 22 | * __preinit_array_end |
Kojto | 91:031413cf7a89 | 23 | * __init_array_start |
Kojto | 91:031413cf7a89 | 24 | * __init_array_end |
Kojto | 91:031413cf7a89 | 25 | * __fini_array_start |
Kojto | 91:031413cf7a89 | 26 | * __fini_array_end |
Kojto | 91:031413cf7a89 | 27 | * __data_end__ |
Kojto | 91:031413cf7a89 | 28 | * __bss_start__ |
Kojto | 91:031413cf7a89 | 29 | * __bss_end__ |
Kojto | 91:031413cf7a89 | 30 | * __end__ |
Kojto | 91:031413cf7a89 | 31 | * end |
Kojto | 91:031413cf7a89 | 32 | * __HeapLimit |
Kojto | 91:031413cf7a89 | 33 | * __StackLimit |
Kojto | 91:031413cf7a89 | 34 | * __StackTop |
Kojto | 91:031413cf7a89 | 35 | * __stack |
Kojto | 91:031413cf7a89 | 36 | */ |
Kojto | 91:031413cf7a89 | 37 | ENTRY(Reset_Handler) |
Kojto | 91:031413cf7a89 | 38 | |
Kojto | 91:031413cf7a89 | 39 | SECTIONS |
Kojto | 91:031413cf7a89 | 40 | { |
Kojto | 91:031413cf7a89 | 41 | .text : |
Kojto | 91:031413cf7a89 | 42 | { |
Kojto | 91:031413cf7a89 | 43 | KEEP(*(.Vectors)) |
Kojto | 91:031413cf7a89 | 44 | *(.text*) |
Kojto | 91:031413cf7a89 | 45 | |
Kojto | 91:031413cf7a89 | 46 | KEEP(*(.init)) |
Kojto | 91:031413cf7a89 | 47 | KEEP(*(.fini)) |
Kojto | 91:031413cf7a89 | 48 | |
Kojto | 91:031413cf7a89 | 49 | /* .ctors */ |
Kojto | 91:031413cf7a89 | 50 | *crtbegin.o(.ctors) |
Kojto | 91:031413cf7a89 | 51 | *crtbegin?.o(.ctors) |
Kojto | 91:031413cf7a89 | 52 | *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) |
Kojto | 91:031413cf7a89 | 53 | *(SORT(.ctors.*)) |
Kojto | 91:031413cf7a89 | 54 | *(.ctors) |
Kojto | 91:031413cf7a89 | 55 | |
Kojto | 91:031413cf7a89 | 56 | /* .dtors */ |
Kojto | 91:031413cf7a89 | 57 | *crtbegin.o(.dtors) |
Kojto | 91:031413cf7a89 | 58 | *crtbegin?.o(.dtors) |
Kojto | 91:031413cf7a89 | 59 | *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) |
Kojto | 91:031413cf7a89 | 60 | *(SORT(.dtors.*)) |
Kojto | 91:031413cf7a89 | 61 | *(.dtors) |
Kojto | 91:031413cf7a89 | 62 | |
Kojto | 91:031413cf7a89 | 63 | *(.rodata*) |
Kojto | 91:031413cf7a89 | 64 | |
Kojto | 91:031413cf7a89 | 65 | KEEP(*(.eh_frame*)) |
Kojto | 91:031413cf7a89 | 66 | } > FLASH |
Kojto | 91:031413cf7a89 | 67 | |
Kojto | 91:031413cf7a89 | 68 | |
Kojto | 91:031413cf7a89 | 69 | .ARM.extab : |
Kojto | 91:031413cf7a89 | 70 | { |
Kojto | 91:031413cf7a89 | 71 | *(.ARM.extab* .gnu.linkonce.armextab.*) |
Kojto | 91:031413cf7a89 | 72 | } > FLASH |
Kojto | 91:031413cf7a89 | 73 | |
Kojto | 91:031413cf7a89 | 74 | __exidx_start = .; |
Kojto | 91:031413cf7a89 | 75 | .ARM.exidx : |
Kojto | 91:031413cf7a89 | 76 | { |
Kojto | 91:031413cf7a89 | 77 | *(.ARM.exidx* .gnu.linkonce.armexidx.*) |
Kojto | 91:031413cf7a89 | 78 | } > FLASH |
Kojto | 91:031413cf7a89 | 79 | __exidx_end = .; |
Kojto | 91:031413cf7a89 | 80 | |
Kojto | 91:031413cf7a89 | 81 | __etext = .; |
Kojto | 91:031413cf7a89 | 82 | |
Kojto | 91:031413cf7a89 | 83 | .data : AT (__etext) |
Kojto | 91:031413cf7a89 | 84 | { |
Kojto | 91:031413cf7a89 | 85 | __data_start__ = .; |
Kojto | 91:031413cf7a89 | 86 | *(vtable) |
Kojto | 91:031413cf7a89 | 87 | *(.data*) |
Kojto | 91:031413cf7a89 | 88 | |
Kojto | 91:031413cf7a89 | 89 | . = ALIGN(4); |
Kojto | 91:031413cf7a89 | 90 | /* preinit data */ |
Kojto | 91:031413cf7a89 | 91 | PROVIDE_HIDDEN (__preinit_array_start = .); |
Kojto | 91:031413cf7a89 | 92 | KEEP(*(.preinit_array)) |
Kojto | 91:031413cf7a89 | 93 | PROVIDE_HIDDEN (__preinit_array_end = .); |
Kojto | 91:031413cf7a89 | 94 | |
Kojto | 91:031413cf7a89 | 95 | . = ALIGN(4); |
Kojto | 91:031413cf7a89 | 96 | /* init data */ |
Kojto | 91:031413cf7a89 | 97 | PROVIDE_HIDDEN (__init_array_start = .); |
Kojto | 91:031413cf7a89 | 98 | KEEP(*(SORT(.init_array.*))) |
Kojto | 91:031413cf7a89 | 99 | KEEP(*(.init_array)) |
Kojto | 91:031413cf7a89 | 100 | PROVIDE_HIDDEN (__init_array_end = .); |
Kojto | 91:031413cf7a89 | 101 | |
Kojto | 91:031413cf7a89 | 102 | |
Kojto | 91:031413cf7a89 | 103 | . = ALIGN(4); |
Kojto | 91:031413cf7a89 | 104 | /* finit data */ |
Kojto | 91:031413cf7a89 | 105 | PROVIDE_HIDDEN (__fini_array_start = .); |
Kojto | 91:031413cf7a89 | 106 | KEEP(*(SORT(.fini_array.*))) |
Kojto | 91:031413cf7a89 | 107 | KEEP(*(.fini_array)) |
Kojto | 91:031413cf7a89 | 108 | PROVIDE_HIDDEN (__fini_array_end = .); |
Kojto | 91:031413cf7a89 | 109 | |
Kojto | 91:031413cf7a89 | 110 | *(.jcr) |
Kojto | 91:031413cf7a89 | 111 | . = ALIGN(4); |
Kojto | 91:031413cf7a89 | 112 | /* All data end */ |
Kojto | 91:031413cf7a89 | 113 | __data_end__ = .; |
Kojto | 91:031413cf7a89 | 114 | |
Kojto | 91:031413cf7a89 | 115 | } > RAM |
Kojto | 91:031413cf7a89 | 116 | |
Kojto | 91:031413cf7a89 | 117 | .bss : |
Kojto | 91:031413cf7a89 | 118 | { |
Kojto | 91:031413cf7a89 | 119 | . = ALIGN(4); |
Kojto | 91:031413cf7a89 | 120 | __bss_start__ = .; |
Kojto | 91:031413cf7a89 | 121 | *(.bss*) |
Kojto | 91:031413cf7a89 | 122 | *(COMMON) |
Kojto | 91:031413cf7a89 | 123 | . = ALIGN(4); |
Kojto | 91:031413cf7a89 | 124 | __bss_end__ = .; |
Kojto | 91:031413cf7a89 | 125 | } > RAM |
Kojto | 91:031413cf7a89 | 126 | |
Kojto | 122:f9eeca106725 | 127 | .heap (NOLOAD): |
Kojto | 91:031413cf7a89 | 128 | { |
Kojto | 91:031413cf7a89 | 129 | __end__ = .; |
Kojto | 91:031413cf7a89 | 130 | end = __end__; |
Kojto | 122:f9eeca106725 | 131 | __HeapBase = .; |
Kojto | 91:031413cf7a89 | 132 | *(.heap*) |
Kojto | 122:f9eeca106725 | 133 | . = ORIGIN(RAM) + LENGTH(RAM) - Stack_Size; |
Kojto | 91:031413cf7a89 | 134 | __HeapLimit = .; |
Kojto | 91:031413cf7a89 | 135 | } > RAM |
Kojto | 91:031413cf7a89 | 136 | |
Kojto | 91:031413cf7a89 | 137 | /* .stack_dummy section doesn't contains any symbols. It is only |
Kojto | 91:031413cf7a89 | 138 | * used for linker to calculate size of stack sections, and assign |
Kojto | 91:031413cf7a89 | 139 | * values to stack symbols later */ |
Kojto | 122:f9eeca106725 | 140 | .stack_dummy (NOLOAD): |
Kojto | 91:031413cf7a89 | 141 | { |
Kojto | 91:031413cf7a89 | 142 | *(.stack*) |
Kojto | 91:031413cf7a89 | 143 | } > RAM |
Kojto | 91:031413cf7a89 | 144 | |
Kojto | 91:031413cf7a89 | 145 | /* Set stack top to end of RAM, and stack limit move down by |
Kojto | 91:031413cf7a89 | 146 | * size of stack_dummy section */ |
Kojto | 91:031413cf7a89 | 147 | __StackTop = ORIGIN(RAM) + LENGTH(RAM); |
Kojto | 91:031413cf7a89 | 148 | __StackLimit = __StackTop - SIZEOF(.stack_dummy); |
Kojto | 91:031413cf7a89 | 149 | PROVIDE(__stack = __StackTop); |
Kojto | 91:031413cf7a89 | 150 | |
Kojto | 91:031413cf7a89 | 151 | /* Check if data + heap + stack exceeds RAM limit */ |
Kojto | 91:031413cf7a89 | 152 | ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") |
Kojto | 91:031413cf7a89 | 153 | } |