The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
<>
Date:
Wed Apr 12 16:07:08 2017 +0100
Revision:
140:97feb9bacc10
Parent:
138:093f2bd7b9eb
Release 140 of the mbed library

Ports for Upcoming Targets

3841: Add nRf52840 target https://github.com/ARMmbed/mbed-os/pull/3841
3992: Introducing UBLOX_C030 platform. https://github.com/ARMmbed/mbed-os/pull/3992

Fixes and Changes

3951: [NUCLEO_F303ZE] Correct ARDUINO pin https://github.com/ARMmbed/mbed-os/pull/3951
4021: Fixing a macro to detect when RTOS was in use for the NRF52840_DK https://github.com/ARMmbed/mbed-os/pull/4021
3979: KW24D: Add missing SPI defines and Arduino connector definitions https://github.com/ARMmbed/mbed-os/pull/3979
3990: UBLOX_C027: construct a ticker-based wait, rather than calling wait_ms(), in the https://github.com/ARMmbed/mbed-os/pull/3990
4003: Fixed OBOE in async serial tx for NRF52 target, fixes #4002 https://github.com/ARMmbed/mbed-os/pull/4003
4012: STM32: Correct I2C master error handling https://github.com/ARMmbed/mbed-os/pull/4012
4020: NUCLEO_L011K4 remove unsupported tool chain files https://github.com/ARMmbed/mbed-os/pull/4020
4065: K66F: Move bss section to m_data_2 Section https://github.com/ARMmbed/mbed-os/pull/4065
4014: Issue 3763: Reduce heap allocation in the GCC linker file https://github.com/ARMmbed/mbed-os/pull/4014
4030: [STM32L0] reduce IAR heap and stack size for small targets https://github.com/ARMmbed/mbed-os/pull/4030
4109: NUCLEO_L476RG : minor serial pin update https://github.com/ARMmbed/mbed-os/pull/4109
3982: Ticker - kl25z bugfix for handling events in the past https://github.com/ARMmbed/mbed-os/pull/3982

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 136:ef9c61f8c49f 1 M_VECTOR_RAM_SIZE = 0x400;
Kojto 136:ef9c61f8c49f 2
Kojto 136:ef9c61f8c49f 3 /* With the RTOS in use, this does not affect the main stack size. The size of
Kojto 136:ef9c61f8c49f 4 * the stack where main runs is determined via the RTOS. */
Kojto 136:ef9c61f8c49f 5 STACK_SIZE = 0x400;
Kojto 136:ef9c61f8c49f 6
Kojto 136:ef9c61f8c49f 7 /* This is the guaranteed minimum available heap size for an application. When
Kojto 136:ef9c61f8c49f 8 * uVisor is enabled, this is also the maximum available heap size. The
Kojto 136:ef9c61f8c49f 9 * HEAP_SIZE value is set by uVisor porters to balance the size of the legacy
Kojto 136:ef9c61f8c49f 10 * heap and the page heap in uVisor applications. */
Kojto 136:ef9c61f8c49f 11 HEAP_SIZE = 0x6000;
Kojto 136:ef9c61f8c49f 12
<> 138:093f2bd7b9eb 13 #if !defined(MBED_APP_START)
<> 138:093f2bd7b9eb 14 #define MBED_APP_START 0x08000000
<> 138:093f2bd7b9eb 15 #endif
<> 138:093f2bd7b9eb 16
<> 138:093f2bd7b9eb 17 #if !defined(MBED_APP_SIZE)
<> 138:093f2bd7b9eb 18 #define MBED_APP_SIZE 2048k
<> 138:093f2bd7b9eb 19 #endif
<> 138:093f2bd7b9eb 20
Kojto 136:ef9c61f8c49f 21 /* Specify the memory areas */
Kojto 136:ef9c61f8c49f 22 MEMORY
Kojto 136:ef9c61f8c49f 23 {
<> 138:093f2bd7b9eb 24 VECTORS (rx) : ORIGIN = MBED_APP_START, LENGTH = 0x400
<> 138:093f2bd7b9eb 25 FLASH (rx) : ORIGIN = MBED_APP_START + 0x400, LENGTH = MBED_APP_SIZE - 0x400
Kojto 136:ef9c61f8c49f 26 CCM (rwx) : ORIGIN = 0x10000000, LENGTH = 64K
Kojto 136:ef9c61f8c49f 27 RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 192k
Kojto 136:ef9c61f8c49f 28 }
Kojto 136:ef9c61f8c49f 29
Kojto 136:ef9c61f8c49f 30 /* Linker script to place sections and symbol values. Should be used together
Kojto 136:ef9c61f8c49f 31 * with other linker script that defines memory regions FLASH and RAM.
Kojto 136:ef9c61f8c49f 32 * It references following symbols, which must be defined in code:
Kojto 136:ef9c61f8c49f 33 * Reset_Handler : Entry of reset handler
Kojto 136:ef9c61f8c49f 34 *
Kojto 136:ef9c61f8c49f 35 * It defines following symbols, which code can use without definition:
Kojto 136:ef9c61f8c49f 36 * __exidx_start
Kojto 136:ef9c61f8c49f 37 * __exidx_end
Kojto 136:ef9c61f8c49f 38 * __etext
Kojto 136:ef9c61f8c49f 39 * __data_start__
Kojto 136:ef9c61f8c49f 40 * __preinit_array_start
Kojto 136:ef9c61f8c49f 41 * __preinit_array_end
Kojto 136:ef9c61f8c49f 42 * __init_array_start
Kojto 136:ef9c61f8c49f 43 * __init_array_end
Kojto 136:ef9c61f8c49f 44 * __fini_array_start
Kojto 136:ef9c61f8c49f 45 * __fini_array_end
Kojto 136:ef9c61f8c49f 46 * __data_end__
Kojto 136:ef9c61f8c49f 47 * __bss_start__
Kojto 136:ef9c61f8c49f 48 * __bss_end__
Kojto 136:ef9c61f8c49f 49 * __end__
Kojto 136:ef9c61f8c49f 50 * end
Kojto 136:ef9c61f8c49f 51 * __HeapLimit
Kojto 136:ef9c61f8c49f 52 * __StackLimit
Kojto 136:ef9c61f8c49f 53 * __StackTop
Kojto 136:ef9c61f8c49f 54 * __stack
Kojto 136:ef9c61f8c49f 55 * _estack
Kojto 136:ef9c61f8c49f 56 */
Kojto 136:ef9c61f8c49f 57 ENTRY(Reset_Handler)
Kojto 136:ef9c61f8c49f 58
Kojto 136:ef9c61f8c49f 59 SECTIONS
Kojto 136:ef9c61f8c49f 60 {
Kojto 136:ef9c61f8c49f 61 .isr_vector :
Kojto 136:ef9c61f8c49f 62 {
Kojto 136:ef9c61f8c49f 63 __vector_table = .;
Kojto 136:ef9c61f8c49f 64 KEEP(*(.isr_vector))
Kojto 136:ef9c61f8c49f 65 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 66 } > VECTORS
Kojto 136:ef9c61f8c49f 67
Kojto 136:ef9c61f8c49f 68 /* Note: The uVisor expects this section at a fixed location, as specified
Kojto 136:ef9c61f8c49f 69 * by the porting process configuration parameter:
Kojto 136:ef9c61f8c49f 70 * FLASH_OFFSET. */
Kojto 136:ef9c61f8c49f 71 __UVISOR_FLASH_OFFSET = 0x400;
Kojto 136:ef9c61f8c49f 72 __UVISOR_FLASH_START = ORIGIN(VECTORS) + __UVISOR_FLASH_OFFSET;
Kojto 136:ef9c61f8c49f 73 .text __UVISOR_FLASH_START :
Kojto 136:ef9c61f8c49f 74 {
Kojto 136:ef9c61f8c49f 75 /* uVisor code and data */
Kojto 136:ef9c61f8c49f 76 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 77 __uvisor_main_start = .;
Kojto 136:ef9c61f8c49f 78 *(.uvisor.main)
Kojto 136:ef9c61f8c49f 79 __uvisor_main_end = .;
Kojto 136:ef9c61f8c49f 80
Kojto 136:ef9c61f8c49f 81 *(.text*)
Kojto 136:ef9c61f8c49f 82
Kojto 136:ef9c61f8c49f 83 KEEP(*(.init))
Kojto 136:ef9c61f8c49f 84 KEEP(*(.fini))
Kojto 136:ef9c61f8c49f 85
Kojto 136:ef9c61f8c49f 86 /* .ctors */
Kojto 136:ef9c61f8c49f 87 *crtbegin.o(.ctors)
Kojto 136:ef9c61f8c49f 88 *crtbegin?.o(.ctors)
Kojto 136:ef9c61f8c49f 89 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
Kojto 136:ef9c61f8c49f 90 *(SORT(.ctors.*))
Kojto 136:ef9c61f8c49f 91 *(.ctors)
Kojto 136:ef9c61f8c49f 92
Kojto 136:ef9c61f8c49f 93 /* .dtors */
Kojto 136:ef9c61f8c49f 94 *crtbegin.o(.dtors)
Kojto 136:ef9c61f8c49f 95 *crtbegin?.o(.dtors)
Kojto 136:ef9c61f8c49f 96 *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
Kojto 136:ef9c61f8c49f 97 *(SORT(.dtors.*))
Kojto 136:ef9c61f8c49f 98 *(.dtors)
Kojto 136:ef9c61f8c49f 99
Kojto 136:ef9c61f8c49f 100 *(.rodata*)
Kojto 136:ef9c61f8c49f 101
Kojto 136:ef9c61f8c49f 102 KEEP(*(.eh_frame*))
Kojto 136:ef9c61f8c49f 103 } > FLASH
Kojto 136:ef9c61f8c49f 104
Kojto 136:ef9c61f8c49f 105 .ARM.extab :
Kojto 136:ef9c61f8c49f 106 {
Kojto 136:ef9c61f8c49f 107 *(.ARM.extab* .gnu.linkonce.armextab.*)
Kojto 136:ef9c61f8c49f 108 } > FLASH
Kojto 136:ef9c61f8c49f 109
Kojto 136:ef9c61f8c49f 110 __exidx_start = .;
Kojto 136:ef9c61f8c49f 111
Kojto 136:ef9c61f8c49f 112 .ARM.exidx :
Kojto 136:ef9c61f8c49f 113 {
Kojto 136:ef9c61f8c49f 114 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
Kojto 136:ef9c61f8c49f 115 } > FLASH
Kojto 136:ef9c61f8c49f 116 __exidx_end = .;
Kojto 136:ef9c61f8c49f 117
Kojto 136:ef9c61f8c49f 118 __etext = .;
Kojto 136:ef9c61f8c49f 119 _sidata = .;
Kojto 136:ef9c61f8c49f 120
Kojto 136:ef9c61f8c49f 121 .interrupts_ram :
Kojto 136:ef9c61f8c49f 122 {
Kojto 136:ef9c61f8c49f 123 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 124 __VECTOR_RAM__ = .;
Kojto 136:ef9c61f8c49f 125 __interrupts_ram_start__ = .; /* Create a global symbol at data start */
Kojto 136:ef9c61f8c49f 126 *(.m_interrupts_ram) /* This is a user defined section */
Kojto 136:ef9c61f8c49f 127 . += M_VECTOR_RAM_SIZE;
Kojto 136:ef9c61f8c49f 128 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 129 __interrupts_ram_end__ = .; /* Define a global symbol at data end */
Kojto 136:ef9c61f8c49f 130 } > RAM
Kojto 136:ef9c61f8c49f 131
Kojto 136:ef9c61f8c49f 132 /* uVisor own memory and private box memories
Kojto 136:ef9c61f8c49f 133 /* Note: The uVisor expects this section at a fixed location, as specified
Kojto 136:ef9c61f8c49f 134 by the porting process configuration parameter: SRAM_OFFSET. */
Kojto 136:ef9c61f8c49f 135 __UVISOR_SRAM_OFFSET = 0x0;
Kojto 136:ef9c61f8c49f 136 __UVISOR_SRAM_START = ORIGIN(CCM) + __UVISOR_SRAM_OFFSET;
Kojto 136:ef9c61f8c49f 137 .uvisor.bss __UVISOR_SRAM_START (NOLOAD):
Kojto 136:ef9c61f8c49f 138 {
Kojto 136:ef9c61f8c49f 139 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 140 __uvisor_bss_start = .;
Kojto 136:ef9c61f8c49f 141
Kojto 136:ef9c61f8c49f 142 /* Protected uVisor own BSS section */
Kojto 136:ef9c61f8c49f 143 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 144 __uvisor_bss_main_start = .;
Kojto 136:ef9c61f8c49f 145 KEEP(*(.keep.uvisor.bss.main))
Kojto 136:ef9c61f8c49f 146 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 147 __uvisor_bss_main_end = .;
Kojto 136:ef9c61f8c49f 148
Kojto 136:ef9c61f8c49f 149 /* Protected uVisor boxes' static memories */
Kojto 136:ef9c61f8c49f 150 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 151 __uvisor_bss_boxes_start = .;
Kojto 136:ef9c61f8c49f 152 KEEP(*(.keep.uvisor.bss.boxes))
Kojto 136:ef9c61f8c49f 153 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 154 __uvisor_bss_boxes_end = .;
Kojto 136:ef9c61f8c49f 155
Kojto 136:ef9c61f8c49f 156 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 157 __uvisor_bss_end = .;
Kojto 136:ef9c61f8c49f 158 } > CCM
Kojto 136:ef9c61f8c49f 159
Kojto 136:ef9c61f8c49f 160 /* Heap space for the page allocator
Kojto 136:ef9c61f8c49f 161 /* If uVisor shares the SRAM with the OS/app, ensure that this section is
Kojto 136:ef9c61f8c49f 162 * the first one after the uVisor BSS section. Otherwise, ensure it is the
Kojto 136:ef9c61f8c49f 163 * first one after the VTOR relocation section. */
Kojto 136:ef9c61f8c49f 164 .page_heap (NOLOAD) :
Kojto 136:ef9c61f8c49f 165 {
Kojto 136:ef9c61f8c49f 166 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 167 __uvisor_page_start = .;
Kojto 136:ef9c61f8c49f 168 KEEP(*(.keep.uvisor.page_heap))
Kojto 136:ef9c61f8c49f 169 . = ALIGN((1 << LOG2CEIL(LENGTH(RAM))) / 8);
Kojto 136:ef9c61f8c49f 170 __uvisor_page_end = .;
Kojto 136:ef9c61f8c49f 171 } > RAM
Kojto 136:ef9c61f8c49f 172
Kojto 136:ef9c61f8c49f 173 .data :
Kojto 136:ef9c61f8c49f 174 {
Kojto 136:ef9c61f8c49f 175 PROVIDE( __etext = LOADADDR(.data) );
Kojto 136:ef9c61f8c49f 176
Kojto 136:ef9c61f8c49f 177 __data_start__ = .;
Kojto 136:ef9c61f8c49f 178 _sdata = .;
Kojto 136:ef9c61f8c49f 179 *(vtable)
Kojto 136:ef9c61f8c49f 180 *(.data*)
Kojto 136:ef9c61f8c49f 181
Kojto 136:ef9c61f8c49f 182 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 183 /* preinit data */
Kojto 136:ef9c61f8c49f 184 PROVIDE_HIDDEN (__preinit_array_start = .);
Kojto 136:ef9c61f8c49f 185 KEEP(*(.preinit_array))
Kojto 136:ef9c61f8c49f 186 PROVIDE_HIDDEN (__preinit_array_end = .);
Kojto 136:ef9c61f8c49f 187
Kojto 136:ef9c61f8c49f 188 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 189 /* init data */
Kojto 136:ef9c61f8c49f 190 PROVIDE_HIDDEN (__init_array_start = .);
Kojto 136:ef9c61f8c49f 191 KEEP(*(SORT(.init_array.*)))
Kojto 136:ef9c61f8c49f 192 KEEP(*(.init_array))
Kojto 136:ef9c61f8c49f 193 PROVIDE_HIDDEN (__init_array_end = .);
Kojto 136:ef9c61f8c49f 194
Kojto 136:ef9c61f8c49f 195
Kojto 136:ef9c61f8c49f 196 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 197 /* finit data */
Kojto 136:ef9c61f8c49f 198 PROVIDE_HIDDEN (__fini_array_start = .);
Kojto 136:ef9c61f8c49f 199 KEEP(*(SORT(.fini_array.*)))
Kojto 136:ef9c61f8c49f 200 KEEP(*(.fini_array))
Kojto 136:ef9c61f8c49f 201 PROVIDE_HIDDEN (__fini_array_end = .);
Kojto 136:ef9c61f8c49f 202
Kojto 136:ef9c61f8c49f 203 KEEP(*(.jcr*))
Kojto 136:ef9c61f8c49f 204 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 205 /* All data end */
Kojto 136:ef9c61f8c49f 206 __data_end__ = .;
Kojto 136:ef9c61f8c49f 207 _edata = .;
Kojto 136:ef9c61f8c49f 208
Kojto 136:ef9c61f8c49f 209 } > RAM AT > FLASH
Kojto 136:ef9c61f8c49f 210
Kojto 136:ef9c61f8c49f 211 /* uVisor configuration section
Kojto 136:ef9c61f8c49f 212 * This section must be located after all other flash regions. */
Kojto 136:ef9c61f8c49f 213 .uvisor.secure :
Kojto 136:ef9c61f8c49f 214 {
Kojto 136:ef9c61f8c49f 215 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 216 __uvisor_secure_start = .;
Kojto 136:ef9c61f8c49f 217
Kojto 136:ef9c61f8c49f 218 /* uVisor secure boxes configuration tables */
Kojto 136:ef9c61f8c49f 219 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 220 __uvisor_cfgtbl_start = .;
Kojto 136:ef9c61f8c49f 221 KEEP(*(.keep.uvisor.cfgtbl))
Kojto 136:ef9c61f8c49f 222 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 223 __uvisor_cfgtbl_end = .;
Kojto 136:ef9c61f8c49f 224
Kojto 136:ef9c61f8c49f 225 /* Pointers to the uVisor secure boxes configuration tables */
Kojto 136:ef9c61f8c49f 226 /* Note: Do not add any further alignment here, as uVisor will need to
Kojto 136:ef9c61f8c49f 227 * have access to the exact list of pointers. */
Kojto 136:ef9c61f8c49f 228 __uvisor_cfgtbl_ptr_start = .;
Kojto 136:ef9c61f8c49f 229 KEEP(*(.keep.uvisor.cfgtbl_ptr_first))
Kojto 136:ef9c61f8c49f 230 KEEP(*(.keep.uvisor.cfgtbl_ptr))
Kojto 136:ef9c61f8c49f 231 __uvisor_cfgtbl_ptr_end = .;
Kojto 136:ef9c61f8c49f 232
Kojto 136:ef9c61f8c49f 233 /* Pointers to all boxes register gateways. These are grouped here to
Kojto 136:ef9c61f8c49f 234 allow discoverability and firmware verification. */
Kojto 136:ef9c61f8c49f 235 __uvisor_register_gateway_ptr_start = .;
Kojto 136:ef9c61f8c49f 236 KEEP(*(.keep.uvisor.register_gateway_ptr))
Kojto 136:ef9c61f8c49f 237 __uvisor_register_gateway_ptr_end = .;
Kojto 136:ef9c61f8c49f 238
Kojto 136:ef9c61f8c49f 239 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 240 __uvisor_secure_end = .;
Kojto 136:ef9c61f8c49f 241 } > FLASH
Kojto 136:ef9c61f8c49f 242
Kojto 136:ef9c61f8c49f 243 /* Uninitialized data section
Kojto 136:ef9c61f8c49f 244 * This region is not initialized by the C/C++ library and can be used to
Kojto 136:ef9c61f8c49f 245 * store state across soft reboots. */
Kojto 136:ef9c61f8c49f 246 .uninitialized (NOLOAD):
Kojto 136:ef9c61f8c49f 247 {
Kojto 136:ef9c61f8c49f 248 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 249 __uninitialized_start = .;
Kojto 136:ef9c61f8c49f 250 *(.uninitialized)
Kojto 136:ef9c61f8c49f 251 KEEP(*(.keep.uninitialized))
Kojto 136:ef9c61f8c49f 252 . = ALIGN(32);
Kojto 136:ef9c61f8c49f 253 __uninitialized_end = .;
Kojto 136:ef9c61f8c49f 254 } > RAM
Kojto 136:ef9c61f8c49f 255
Kojto 136:ef9c61f8c49f 256 .bss (NOLOAD):
Kojto 136:ef9c61f8c49f 257 {
Kojto 136:ef9c61f8c49f 258 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 259 __bss_start__ = .;
Kojto 136:ef9c61f8c49f 260 _sbss = .;
Kojto 136:ef9c61f8c49f 261 *(.bss*)
Kojto 136:ef9c61f8c49f 262 *(COMMON)
Kojto 136:ef9c61f8c49f 263 . = ALIGN(4);
Kojto 136:ef9c61f8c49f 264 __bss_end__ = .;
Kojto 136:ef9c61f8c49f 265 _ebss = .;
Kojto 136:ef9c61f8c49f 266 } > RAM
Kojto 136:ef9c61f8c49f 267
Kojto 136:ef9c61f8c49f 268 .heap (NOLOAD):
Kojto 136:ef9c61f8c49f 269 {
Kojto 136:ef9c61f8c49f 270 __uvisor_heap_start = .;
Kojto 136:ef9c61f8c49f 271 __end__ = .;
Kojto 136:ef9c61f8c49f 272 end = __end__;
Kojto 136:ef9c61f8c49f 273 . += HEAP_SIZE;
Kojto 136:ef9c61f8c49f 274 __HeapLimit = .;
Kojto 136:ef9c61f8c49f 275 __uvisor_heap_end = .;
Kojto 136:ef9c61f8c49f 276 } > RAM
Kojto 136:ef9c61f8c49f 277
Kojto 136:ef9c61f8c49f 278 __StackTop = ORIGIN(RAM) + LENGTH(RAM);
Kojto 136:ef9c61f8c49f 279 __stack = __StackTop;
Kojto 136:ef9c61f8c49f 280 __StackLimit = __StackTop - STACK_SIZE;
Kojto 136:ef9c61f8c49f 281
Kojto 136:ef9c61f8c49f 282 ASSERT(__StackLimit >= __HeapLimit, "Region RAM overflowed with stack and heap")
Kojto 136:ef9c61f8c49f 283
Kojto 136:ef9c61f8c49f 284 /* Provide physical memory boundaries for uVisor. */
Kojto 136:ef9c61f8c49f 285 __uvisor_flash_start = ORIGIN(VECTORS);
Kojto 136:ef9c61f8c49f 286 __uvisor_flash_end = ORIGIN(FLASH) + LENGTH(FLASH);
Kojto 136:ef9c61f8c49f 287 __uvisor_sram_start = ORIGIN(CCM);
Kojto 136:ef9c61f8c49f 288 __uvisor_sram_end = ORIGIN(CCM) + LENGTH(CCM);
Kojto 136:ef9c61f8c49f 289 __uvisor_public_sram_start = ORIGIN(RAM);
Kojto 136:ef9c61f8c49f 290 __uvisor_public_sram_end = ORIGIN(RAM) + LENGTH(RAM);
Kojto 136:ef9c61f8c49f 291 }