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.

Revision:
113:f141b2784e32
Parent:
103:bad568076d81
Child:
145:64910690c574
--- a/TARGET_EFM32HG_STK3400/TOOLCHAIN_GCC_ARM/efm32hg.ld	Wed Jan 13 09:48:29 2016 +0000
+++ b/TARGET_EFM32HG_STK3400/TOOLCHAIN_GCC_ARM/efm32hg.ld	Tue Feb 02 14:43:35 2016 +0000
@@ -6,8 +6,9 @@
 /*                                                                  */
 /* Silicon Laboratories, Inc. 2015                                  */
 /*                                                                  */
-/* Version 3.20.12 */
+/* Version 4.2.0 */
 /*                                                                  */
+
 MEMORY
 {
   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 65536
@@ -16,17 +17,21 @@
 
 /* MBED: mbed needs to be able to dynamically set the interrupt vector table.
  * We make room for the table at the very beginning of RAM, i.e. at
- * 0x20000000. We need (16+21) * sizeof(uint32_t) = 144 bytes for EFM32HG */
+ * 0x20000000. We need (16+21) * sizeof(uint32_t) = 148 bytes for EFM32HG */
 __vector_size = 0x94;
 
 /* Linker script to place sections and symbol values. Should be used together
  * with other linker script that defines memory regions FLASH and RAM.
  * It references following symbols, which must be defined in code:
  *   Reset_Handler : Entry of reset handler
- * 
+ *
  * It defines following symbols, which code can use without definition:
  *   __exidx_start
  *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
  *   __etext
  *   __data_start__
  *   __preinit_array_start
@@ -44,6 +49,8 @@
  *   __StackLimit
  *   __StackTop
  *   __stack
+ *   __Vectors_End
+ *   __Vectors_Size
  */
 ENTRY(Reset_Handler)
 
@@ -51,7 +58,11 @@
 {
   .text :
   {
-    KEEP(*(.isr_vector))
+    KEEP(*(.vectors))
+    __Vectors_End = .;
+    __Vectors_Size = __Vectors_End - __Vectors;
+    __end__ = .;
+
     *(.text*)
 
     KEEP(*(.init))
@@ -76,7 +87,7 @@
     KEEP(*(.eh_frame*))
   } > FLASH
 
-  .ARM.extab : 
+  .ARM.extab :
   {
     *(.ARM.extab* .gnu.linkonce.armextab.*)
   } > FLASH
@@ -88,15 +99,49 @@
   } > FLASH
   __exidx_end = .;
 
+  /* To copy multiple ROM to RAM sections,
+   * uncomment .copy.table section and,
+   * define __STARTUP_COPY_MULTIPLE in startup_ARMCMx.S */
+  /*
+  .copy.table :
+  {
+    . = ALIGN(4);
+    __copy_table_start__ = .;
+    LONG (__etext)
+    LONG (__data_start__)
+    LONG (__data_end__ - __data_start__)
+    LONG (__etext2)
+    LONG (__data2_start__)
+    LONG (__data2_end__ - __data2_start__)
+    __copy_table_end__ = .;
+  } > FLASH
+  */
+
+  /* To clear multiple BSS sections,
+   * uncomment .zero.table section and,
+   * define __STARTUP_CLEAR_BSS_MULTIPLE in startup_ARMCMx.S */
+  /*
+  .zero.table :
+  {
+    . = ALIGN(4);
+    __zero_table_start__ = .;
+    LONG (__bss_start__)
+    LONG (__bss_end__ - __bss_start__)
+    LONG (__bss2_start__)
+    LONG (__bss2_end__ - __bss2_start__)
+    __zero_table_end__ = .;
+  } > FLASH
+  */
+
   __etext = .;
-  
+
   .data : AT (__etext)
   {
     __data_start__ = .;
     *("dma")
     PROVIDE( __start_vector_table__ = .);
-  	. += __vector_size;
-  	PROVIDE( __end_vector_table__ = .);
+    . += __vector_size;
+    PROVIDE( __end_vector_table__ = .);
     *(vtable)
     *(.data*)
     . = ALIGN (4);
@@ -122,6 +167,7 @@
     KEEP(*(.fini_array))
     PROVIDE_HIDDEN (__fini_array_end = .);
 
+    KEEP(*(.jcr*))
     . = ALIGN(4);
     /* All data end */
     __data_end__ = .;
@@ -130,27 +176,30 @@
 
   .bss :
   {
+    . = ALIGN(4);
     __bss_start__ = .;
     *(.bss*)
     *(COMMON)
+    . = ALIGN(4);
     __bss_end__ = .;
   } > RAM
 
-  .heap :
+  .heap (COPY):
   {
+    __HeapBase = .;
     __end__ = .;
     end = __end__;
     _end = __end__;
-    *(.heap*)
+    KEEP(*(.heap*))
     __HeapLimit = .;
   } > RAM
 
   /* .stack_dummy section doesn't contains any symbols. It is only
    * used for linker to calculate size of stack sections, and assign
    * values to stack symbols later */
-  .stack_dummy :
+  .stack_dummy (COPY):
   {
-    *(.stack)
+    KEEP(*(.stack*))
   } > RAM
 
   /* Set stack top to end of RAM, and stack limit move down by