ble nano hid over gatt

Dependencies:   BLE_API mbed-dev nRF51822

Committer:
cho45
Date:
Thu Sep 15 09:31:05 2016 +0900
Revision:
86:e0fab77e669d
Parent:
63:d3cc2e1f558f
support consumer keys

Who changed what in which revision?

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