initial
diff --git a/sam3s_example/flash.ld b/sam3s_example/flash.ld
new file mode 100644
index 0000000..209a071
--- /dev/null
+++ b/sam3s_example/flash.ld
@@ -0,0 +1,143 @@
+/* ----------------------------------------------------------------------------

+ *         ATMEL Microcontroller Software Support

+ * ----------------------------------------------------------------------------

+ * Copyright (c) 2009, Atmel Corporation

+ *

+ * All rights reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions are met:

+ *

+ * - Redistributions of source code must retain the above copyright notice,

+ * this list of conditions and the disclaimer below.

+ *

+ * Atmel's name may not be used to endorse or promote products derived from

+ * this software without specific prior written permission.

+ *

+ * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR

+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE

+ * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,

+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,

+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF

+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING

+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,

+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ * ----------------------------------------------------------------------------

+ */

+

+/*------------------------------------------------------------------------------

+ *      Linker script for running in internal FLASH on the ATSAM3S4

+ *----------------------------------------------------------------------------*/

+

+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

+OUTPUT_ARCH(arm)

+SEARCH_DIR(.)

+ENTRY(main)

+

+/* Memory Spaces Definitions */

+MEMORY

+{

+        rom (rx)  : ORIGIN = 0x00400000, LENGTH = 0x00020000 /* flash, 256K */

+	ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* sram, 48K */

+       /* rom (rx)  : ORIGIN = 0x00400000, LENGTH = 0x00040000 /* flash, 256K */

+	/*ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x0000c000 /* sram, 48K */

+}

+

+/* Section Definitions */ 

+SECTIONS 

+{ 

+    .text : 

+    { 

+        . = ALIGN(4);

+        _sfixed = .;

+        KEEP(*(.vectors .vectors.*))

+        *(.text .text.* .gnu.linkonce.t.*) 	      

+        *(.glue_7t) *(.glue_7)		                

+        *(.rodata .rodata* .gnu.linkonce.r.*)		    	                  

+        *(.ARM.extab* .gnu.linkonce.armextab.*)

+

+        /* Support C constructors, and C destructors in both user code

+           and the C library. This also provides support for C++ code. */

+        . = ALIGN(4);

+        KEEP(*(.init))

+        . = ALIGN(4);

+        __preinit_array_start = .;

+        KEEP (*(.preinit_array))

+        __preinit_array_end = .;

+

+        . = ALIGN(4);

+        __init_array_start = .;

+        KEEP (*(SORT(.init_array.*)))

+        KEEP (*(.init_array))

+        __init_array_end = .;

+

+        . = ALIGN(0x4);

+        KEEP (*crtbegin.o(.ctors))

+        KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))

+        KEEP (*(SORT(.ctors.*)))

+        KEEP (*crtend.o(.ctors))

+

+        . = ALIGN(4);

+        KEEP(*(.fini))

+

+        . = ALIGN(4);

+        __fini_array_start = .;

+        KEEP (*(.fini_array))

+        KEEP (*(SORT(.fini_array.*)))

+        __fini_array_end = .;

+

+        KEEP (*crtbegin.o(.dtors))

+        KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))

+        KEEP (*(SORT(.dtors.*)))

+        KEEP (*crtend.o(.dtors))

+

+        . = ALIGN(4);

+        _efixed = .;            /* End of text section */

+    } > rom

+

+    /* .ARM.exidx is sorted, so has to go in its own output section.  */

+    PROVIDE_HIDDEN (__exidx_start = .);

+    .ARM.exidx :

+    {

+      *(.ARM.exidx* .gnu.linkonce.armexidx.*)

+    } > rom

+    PROVIDE_HIDDEN (__exidx_end = .);

+

+    . = ALIGN(4); 

+    _etext = .;

+

+    .relocate : AT (_etext)

+    {

+        . = ALIGN(4);

+        _srelocate = .;

+        *(.ramfunc .ramfunc.*);

+        *(.data .data.*);

+        . = ALIGN(4);

+        _erelocate = .;

+    } > ram

+

+    /* .bss section which is used for uninitialized data */ 

+    .bss (NOLOAD) :

+    { 

+        . = ALIGN(4);

+        _sbss = . ;

+        _szero = .;

+        *(.bss .bss.*)

+        *(COMMON)

+        . = ALIGN(4);

+        _ebss = . ;

+        _ezero = .;

+    } > ram

+

+    /* stack section */

+    .stack (NOLOAD):

+    {

+        . = ALIGN(8);

+        *(.stack .stack.*)

+    } > ram

+

+    . = ALIGN(4); 

+    _end = . ; 

+}