aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-02-27 13:53:17 +0100
committerHarald Welte <laforge@gnumonks.org>2017-02-27 14:24:11 +0100
commit3f5e3ddffc72484baad813628f3d18621325277a (patch)
tree136c17c1b4552a6346617ede1290e6f156ac85b9
parent7ed6f3bc375f4eddecb7ccf10e837f3068cb4e42 (diff)
Change directory structure to align with Atmel softpack
This way we can easily check with 'diff' for differences in our code and Atmel softpack. Also, this layout is more suitable for building various different firmware images (e.g. factory-test, dfu-loader, main application) for a variety of different boards (simtrace, owhw, qmod).
-rw-r--r--firmware/Makefile32
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/chip.h (renamed from firmware/include_sam3s/chip.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/CMSIS_Core.htm (renamed from firmware/cmsis/CMSIS_Core.htm)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/core_cm3.c (renamed from firmware/cmsis/core_cm3.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/core_cm3.h (renamed from firmware/cmsis/core_cm3.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/SAM3S.h (renamed from firmware/include_sam3s/SAM3S.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/USBD_Config.h (renamed from firmware/include_sam3s/USBD_Config.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/efc.h (renamed from firmware/include_sam3s/efc.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/exceptions.h (renamed from firmware/include_sam3s/exceptions.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/flashd.h (renamed from firmware/include_sam3s/flashd.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/hsmci.h (renamed from firmware/include_sam3s/hsmci.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/pio.h (renamed from firmware/include_sam3s/pio.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/pio_capture.h (renamed from firmware/include_sam3s/pio_capture.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/pio_it.h (renamed from firmware/include_sam3s/pio_it.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/pmc.h (renamed from firmware/include_sam3s/pmc.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/spi.h (renamed from firmware/include_sam3s/spi.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/tc.h (renamed from firmware/include_sam3s/tc.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/trace.h (renamed from firmware/include_sam3s/trace.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/unique_id.h (renamed from firmware/include_sam3s/unique_id.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/usart.h (renamed from firmware/include_sam3s/usart.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/include/wdt.h (renamed from firmware/include_sam3s/wdt.h)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/USBD_HAL.c (renamed from firmware/src_sam3s/USBD_HAL.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/efc.c (renamed from firmware/src_sam3s/efc.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c (renamed from firmware/src_sam3s/exceptions.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c (renamed from firmware/src_sam3s/flashd.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/pio.c (renamed from firmware/src_sam3s/pio.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c (renamed from firmware/src_sam3s/pio_capture.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c (renamed from firmware/src_sam3s/pio_it.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/pmc.c (renamed from firmware/src_sam3s/pmc.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/spi.c (renamed from firmware/src_sam3s/spi.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/tc.c (renamed from firmware/src_sam3s/tc.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/unique_id.c (renamed from firmware/src_sam3s/unique_id.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/usart.c (renamed from firmware/src_sam3s/usart.c)0
-rw-r--r--firmware/atmel_softpack_libraries/libchip_sam3s/source/wdt.c (renamed from firmware/src_sam3s/wdt.c)0
-rw-r--r--firmware/libboard/common/include/board_common.h (renamed from firmware/include_board/board_common.h)0
-rw-r--r--firmware/libboard/common/include/board_lowlevel.h (renamed from firmware/include_board/board_lowlevel.h)0
-rw-r--r--firmware/libboard/common/include/boardver_adc.h (renamed from firmware/include_board/boardver_adc.h)0
-rw-r--r--firmware/libboard/common/include/led.h (renamed from firmware/include_board/led.h)0
-rw-r--r--firmware/libboard/common/include/uart_console.h (renamed from firmware/include_board/uart_console.h)0
-rw-r--r--firmware/libboard/common/resources/sam3s1/flash.ld140
-rw-r--r--firmware/libboard/common/resources/sam3s1/sram.ld140
-rw-r--r--firmware/libboard/common/resources/sam3s1/sram_samba.lds91
-rw-r--r--firmware/libboard/common/resources/sam3s2/flash.ld140
-rw-r--r--firmware/libboard/common/resources/sam3s2/sram.ld140
-rw-r--r--firmware/libboard/common/resources/sam3s2/sram_samba.lds91
-rw-r--r--firmware/libboard/common/resources/sam3s4/flash.ld140
-rw-r--r--firmware/libboard/common/resources/sam3s4/sram.ld140
-rw-r--r--firmware/libboard/common/resources/sam3s4/sram_samba.lds91
-rw-r--r--firmware/libboard/common/resources/sam3s_ek_flash.gdb31
-rw-r--r--firmware/libboard/common/resources/sam3s_ek_sram.gdb27
-rw-r--r--firmware/libboard/common/resources/sam3s_vb_sram.gdb27
-rw-r--r--firmware/libboard/common/source/board_cstartup_gnu.c (renamed from firmware/src_board/board_cstartup_gnu.c)0
-rw-r--r--firmware/libboard/common/source/board_lowlevel.c (renamed from firmware/src_board/board_lowlevel.c)0
-rw-r--r--firmware/libboard/common/source/boardver_adc.c (renamed from firmware/src_board/boardver_adc.c)0
-rw-r--r--firmware/libboard/common/source/led.c (renamed from firmware/src_board/led.c)0
-rw-r--r--firmware/libboard/common/source/uart_console.c (renamed from firmware/src_board/uart_console.c)0
-rw-r--r--firmware/libboard/owhw/include/board.h (renamed from firmware/include_board/owhw/board.h)0
-rw-r--r--firmware/libboard/owhw/source/owhw.c (renamed from firmware/src_board/owhw.c)0
-rw-r--r--firmware/libboard/qmod/include/board.h (renamed from firmware/include_board/qmod/board.h)0
-rw-r--r--firmware/libboard/qmod/include/i2c.h (renamed from firmware/src_simtrace/i2c.h)0
-rw-r--r--firmware/libboard/qmod/include/wwan_led.h (renamed from firmware/src_simtrace/wwan_led.h)0
-rw-r--r--firmware/libboard/qmod/include/wwan_perst.h (renamed from firmware/src_simtrace/wwan_perst.h)0
-rw-r--r--firmware/libboard/qmod/source/i2c.c (renamed from firmware/src_simtrace/i2c.c)0
-rw-r--r--firmware/libboard/qmod/source/wwan_led.c (renamed from firmware/src_simtrace/wwan_led.c)0
-rw-r--r--firmware/libboard/qmod/source/wwan_perst.c (renamed from firmware/src_simtrace/wwan_perst.c)0
-rw-r--r--firmware/libboard/simtrace/include/board.h (renamed from firmware/include_board/simtrace/board.h)0
-rw-r--r--firmware/libcommon/include/iso7816_fidi.h (renamed from firmware/src_simtrace/iso7816_fidi.h)0
-rw-r--r--firmware/libcommon/include/llist_irqsafe.h (renamed from firmware/src_simtrace/llist_irqsafe.h)0
-rw-r--r--firmware/libcommon/include/req_ctx.h (renamed from firmware/src_simtrace/req_ctx.h)0
-rw-r--r--firmware/libcommon/include/ringbuffer.h (renamed from firmware/src_simtrace/ringbuffer.h)0
-rw-r--r--firmware/libcommon/include/syscalls.h (renamed from firmware/include_board/syscalls.h)0
-rw-r--r--firmware/libcommon/include/utils.h (renamed from firmware/src_simtrace/utils.h)0
-rw-r--r--firmware/libcommon/source/iso7816_fidi.c (renamed from firmware/src_simtrace/iso7816_fidi.c)0
-rw-r--r--firmware/libcommon/source/req_ctx.c (renamed from firmware/src_simtrace/req_ctx.c)0
-rw-r--r--firmware/libcommon/source/ringbuffer.c (renamed from firmware/src_simtrace/ringbuffer.c)0
-rw-r--r--firmware/libcommon/source/syscalls.c (renamed from firmware/src_board/syscalls.c)0
-rw-r--r--firmware/libosmocore/include/osmocom/core/linuxlist.h (renamed from firmware/include_libosmocore/osmocom/core/linuxlist.h)0
-rw-r--r--firmware/libosmocore/include/osmocom/core/linuxrbtree.h (renamed from firmware/include_libosmocore/osmocom/core/linuxrbtree.h)0
-rw-r--r--firmware/libosmocore/include/osmocom/core/timer.h (renamed from firmware/include_libosmocore/osmocom/core/timer.h)0
-rw-r--r--firmware/libosmocore/source/rbtree.c (renamed from firmware/src_simtrace/rbtree.c)0
-rw-r--r--firmware/libosmocore/source/timer.c (renamed from firmware/src_libosmocore/timer.c)0
81 files changed, 1218 insertions, 12 deletions
diff --git a/firmware/Makefile b/firmware/Makefile
index 6092e8c..da92ce3 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -70,9 +70,11 @@ OBJ = obj
# Tools
#-------------------------------------------------------------------------------
-AT91LIB_USB_COMMON_CORE_PATH = atmel_softpack_libraries/usb/common/core
-AT91LIB_USB_CORE_PATH = atmel_softpack_libraries/usb/device/core
-AT91LIB_USB_DFU_PATH = atmel_softpack_libraries/usb/device/dfu
+AT91LIB = ./atmel_softpack_libraries
+
+AT91LIB_USB_COMMON_CORE_PATH = $(AT91LIB)/usb/common/core
+AT91LIB_USB_CORE_PATH = $(AT91LIB)/usb/device/core
+AT91LIB_USB_DFU_PATH = $(AT91LIB)/usb/device/dfu
# Tool suffix when cross-compiling
CROSS_COMPILE = arm-none-eabi-
@@ -92,15 +94,16 @@ TOP=..
GIT_VERSION=$(shell $(TOP)/git-version-gen $(TOP)/.tarvers)
# Flags
-INCLUDES_USB = -Iatmel_softpack_libraries/usb/include -Iatmel_softpack_libraries
-
-INCLUDES = -Iinclude_board -Iinclude_sam3s -Iinclude -Isrc_simtrace -Iinclude_libosmocore
+INCLUDES_USB = -I$(AT91LIB)/usb/include -I$(AT91LIB)
-# FIXME: This must be made configurable!
-INCLUDES += -Iinclude_board/$(BOARD)
-
-INCLUDES += -Icmsis
-INCLUDES += $(INCLUDES_USB)
+INCLUDES = $(INCLUDES_USB)
+INCLUDES += -I$(AT91LIB)/libchip_sam3s -I$(AT91LIB)/libchip_sam3s/include
+INCLUDES += -I$(AT91LIB)/libchip_sam3s/cmsis
+INCLUDES += -Ilibboard/common/include -Ilibboard/$(BOARD)/include
+INCLUDES += -Ilibcommon/include
+INCLUDES += -Ilibosmocore/include
+INCLUDES += -Iinclude_board
+INCLUDES += -Isrc_simtrace -Iinclude
CFLAGS += -Wall -Wchar-subscripts -Wcomment -Wimplicit-int #-Wformat=2
CFLAGS += -Werror-implicit-function-declaration -Wmain -Wparentheses
@@ -141,7 +144,12 @@ LDFLAGS = -mcpu=cortex-m3 -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-secti
# Directories where source files can be found
USB_PATHS = $(AT91LIB_USB_CORE_PATH) $(AT91LIB_USB_DFU_PATH) $(AT91LIB_USB_COMMON_CORE_PATH)
-VPATH += src_board src_sam3s cmsis $(USB_PATHS) src_simtrace src_libosmocore
+
+VPATH += $(USB_PATHS)
+VPATH += $(AT91LIB)/libchip_sam3s/source/ $(AT91LIB)/libchip_sam3s/cmsis
+VPATH += libboard/common/source libboard/$(BOARD)/source
+VPATH += libcommon/source
+VPATH += libosmocore/source src_board src_simtrace
# Objects built from C source files
C_CMSIS = core_cm3.o
diff --git a/firmware/include_sam3s/chip.h b/firmware/atmel_softpack_libraries/libchip_sam3s/chip.h
index e6af94e..e6af94e 100644
--- a/firmware/include_sam3s/chip.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/chip.h
diff --git a/firmware/cmsis/CMSIS_Core.htm b/firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/CMSIS_Core.htm
index b8acb53..b8acb53 100644
--- a/firmware/cmsis/CMSIS_Core.htm
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/CMSIS_Core.htm
diff --git a/firmware/cmsis/core_cm3.c b/firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/core_cm3.c
index db88654..db88654 100644
--- a/firmware/cmsis/core_cm3.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/core_cm3.c
diff --git a/firmware/cmsis/core_cm3.h b/firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/core_cm3.h
index 4afe42c..4afe42c 100644
--- a/firmware/cmsis/core_cm3.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/cmsis/core_cm3.h
diff --git a/firmware/include_sam3s/SAM3S.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/SAM3S.h
index 05e2c8d..05e2c8d 100644
--- a/firmware/include_sam3s/SAM3S.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/SAM3S.h
diff --git a/firmware/include_sam3s/USBD_Config.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/USBD_Config.h
index 256262c..256262c 100644
--- a/firmware/include_sam3s/USBD_Config.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/USBD_Config.h
diff --git a/firmware/include_sam3s/efc.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/efc.h
index 0a99633..0a99633 100644
--- a/firmware/include_sam3s/efc.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/efc.h
diff --git a/firmware/include_sam3s/exceptions.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/exceptions.h
index c682f39..c682f39 100644
--- a/firmware/include_sam3s/exceptions.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/exceptions.h
diff --git a/firmware/include_sam3s/flashd.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/flashd.h
index e58ba02..e58ba02 100644
--- a/firmware/include_sam3s/flashd.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/flashd.h
diff --git a/firmware/include_sam3s/hsmci.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/hsmci.h
index 940ed2b..940ed2b 100644
--- a/firmware/include_sam3s/hsmci.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/hsmci.h
diff --git a/firmware/include_sam3s/pio.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pio.h
index 82fa388..82fa388 100644
--- a/firmware/include_sam3s/pio.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pio.h
diff --git a/firmware/include_sam3s/pio_capture.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pio_capture.h
index f225350..f225350 100644
--- a/firmware/include_sam3s/pio_capture.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pio_capture.h
diff --git a/firmware/include_sam3s/pio_it.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pio_it.h
index 10da613..10da613 100644
--- a/firmware/include_sam3s/pio_it.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pio_it.h
diff --git a/firmware/include_sam3s/pmc.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pmc.h
index 085612e..085612e 100644
--- a/firmware/include_sam3s/pmc.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/pmc.h
diff --git a/firmware/include_sam3s/spi.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/spi.h
index a552fe4..a552fe4 100644
--- a/firmware/include_sam3s/spi.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/spi.h
diff --git a/firmware/include_sam3s/tc.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/tc.h
index 6bd3a47..6bd3a47 100644
--- a/firmware/include_sam3s/tc.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/tc.h
diff --git a/firmware/include_sam3s/trace.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/trace.h
index 8d96aab..8d96aab 100644
--- a/firmware/include_sam3s/trace.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/trace.h
diff --git a/firmware/include_sam3s/unique_id.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/unique_id.h
index a0851fd..a0851fd 100644
--- a/firmware/include_sam3s/unique_id.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/unique_id.h
diff --git a/firmware/include_sam3s/usart.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/usart.h
index 7f58b50..7f58b50 100644
--- a/firmware/include_sam3s/usart.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/usart.h
diff --git a/firmware/include_sam3s/wdt.h b/firmware/atmel_softpack_libraries/libchip_sam3s/include/wdt.h
index 2621754..2621754 100644
--- a/firmware/include_sam3s/wdt.h
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/include/wdt.h
diff --git a/firmware/src_sam3s/USBD_HAL.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/USBD_HAL.c
index 7776004..7776004 100644
--- a/firmware/src_sam3s/USBD_HAL.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/USBD_HAL.c
diff --git a/firmware/src_sam3s/efc.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/efc.c
index b6a028e..b6a028e 100644
--- a/firmware/src_sam3s/efc.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/efc.c
diff --git a/firmware/src_sam3s/exceptions.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c
index 1f023b8..1f023b8 100644
--- a/firmware/src_sam3s/exceptions.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/exceptions.c
diff --git a/firmware/src_sam3s/flashd.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c
index 6247139..6247139 100644
--- a/firmware/src_sam3s/flashd.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/flashd.c
diff --git a/firmware/src_sam3s/pio.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio.c
index 49a6741..49a6741 100644
--- a/firmware/src_sam3s/pio.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio.c
diff --git a/firmware/src_sam3s/pio_capture.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c
index 407a5c0..407a5c0 100644
--- a/firmware/src_sam3s/pio_capture.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_capture.c
diff --git a/firmware/src_sam3s/pio_it.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c
index 48403c0..48403c0 100644
--- a/firmware/src_sam3s/pio_it.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pio_it.c
diff --git a/firmware/src_sam3s/pmc.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pmc.c
index fa4dde0..fa4dde0 100644
--- a/firmware/src_sam3s/pmc.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/pmc.c
diff --git a/firmware/src_sam3s/spi.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/spi.c
index 8e4b965..8e4b965 100644
--- a/firmware/src_sam3s/spi.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/spi.c
diff --git a/firmware/src_sam3s/tc.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/tc.c
index 9cad546..9cad546 100644
--- a/firmware/src_sam3s/tc.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/tc.c
diff --git a/firmware/src_sam3s/unique_id.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/unique_id.c
index 460eb9c..460eb9c 100644
--- a/firmware/src_sam3s/unique_id.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/unique_id.c
diff --git a/firmware/src_sam3s/usart.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/usart.c
index f1acb2f..f1acb2f 100644
--- a/firmware/src_sam3s/usart.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/usart.c
diff --git a/firmware/src_sam3s/wdt.c b/firmware/atmel_softpack_libraries/libchip_sam3s/source/wdt.c
index f8a493b..f8a493b 100644
--- a/firmware/src_sam3s/wdt.c
+++ b/firmware/atmel_softpack_libraries/libchip_sam3s/source/wdt.c
diff --git a/firmware/include_board/board_common.h b/firmware/libboard/common/include/board_common.h
index 9943ae1..9943ae1 100644
--- a/firmware/include_board/board_common.h
+++ b/firmware/libboard/common/include/board_common.h
diff --git a/firmware/include_board/board_lowlevel.h b/firmware/libboard/common/include/board_lowlevel.h
index cc6cdbe..cc6cdbe 100644
--- a/firmware/include_board/board_lowlevel.h
+++ b/firmware/libboard/common/include/board_lowlevel.h
diff --git a/firmware/include_board/boardver_adc.h b/firmware/libboard/common/include/boardver_adc.h
index a89d630..a89d630 100644
--- a/firmware/include_board/boardver_adc.h
+++ b/firmware/libboard/common/include/boardver_adc.h
diff --git a/firmware/include_board/led.h b/firmware/libboard/common/include/led.h
index 87e2fc9..87e2fc9 100644
--- a/firmware/include_board/led.h
+++ b/firmware/libboard/common/include/led.h
diff --git a/firmware/include_board/uart_console.h b/firmware/libboard/common/include/uart_console.h
index c48c2c1..c48c2c1 100644
--- a/firmware/include_board/uart_console.h
+++ b/firmware/libboard/common/include/uart_console.h
diff --git a/firmware/libboard/common/resources/sam3s1/flash.ld b/firmware/libboard/common/resources/sam3s1/flash.ld
new file mode 100644
index 0000000..b6c5428
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s1/flash.ld
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------------
+ * 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 ATSAM3S1
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00010000 /* Flash, 64K */
+ ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 /* sram, 16K */
+}
+
+/* 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 = . ;
+}
diff --git a/firmware/libboard/common/resources/sam3s1/sram.ld b/firmware/libboard/common/resources/sam3s1/sram.ld
new file mode 100644
index 0000000..22b170a
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s1/sram.ld
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------------
+ * 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 SRAM on the ATSAM3S1
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00010000 /* Flash, 64K */
+ ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 /* sram, 16K */
+}
+
+/* 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 */
+ } > ram
+
+ . = 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
+
+ /* .ARM.exidx is sorted, so has to go in its own output section. */
+ PROVIDE_HIDDEN (__exidx_start = .);
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > ram
+ PROVIDE_HIDDEN (__exidx_end = .);
+
+ . = ALIGN(4);
+ _end = . ;
+}
diff --git a/firmware/libboard/common/resources/sam3s1/sram_samba.lds b/firmware/libboard/common/resources/sam3s1/sram_samba.lds
new file mode 100644
index 0000000..0f87ad3
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s1/sram_samba.lds
@@ -0,0 +1,91 @@
+/* ----------------------------------------------------------------------------
+ * 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 SRAM on the AT91SAM3S1
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(entry)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ romcodesram (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x0800
+ sram (W!RX) : ORIGIN = 0x20000800, LENGTH = 0x00003800 /* sram, 16K - sizeof(romcodesram) */
+}
+
+/* Entry point */
+/*ENTRY (ResetException)*/
+
+SECTIONS
+{
+ /* startup code in the .isr_vector */
+ .text :
+ {
+ . = ALIGN(4);
+ _stext = .;
+ KEEP(*(.isr_vector .isr_vector.*))
+ *(.mailbox)
+ *(.text .text.*)
+ *(.rodata .rodata.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.gcc_except_table)
+ *(.rodata .rodata*)
+ *(.gnu.linkonce.r.*)
+ . = ALIGN(4);
+ _etext = .;
+ } > sram
+
+ /* data */
+ .data :
+ {
+ . = ALIGN(4);
+ _sidata = .;
+ _sdata = .;
+
+ *(.data)
+ *(.data.*)
+ . = ALIGN(4);
+ _edata = .;
+ } > sram
+
+ .bss (NOLOAD) : {
+ _szero = .;
+ *(.bss)
+ . = ALIGN(4);
+ _ezero = .;
+ } >sram
+
+ /* Stack in SRAM */
+ _sstack = 0x20003FFC;
+}
+end = .;
diff --git a/firmware/libboard/common/resources/sam3s2/flash.ld b/firmware/libboard/common/resources/sam3s2/flash.ld
new file mode 100644
index 0000000..22cfe59
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s2/flash.ld
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------------
+ * 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 ATSAM3S2
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00020000 /* flash, 128K */
+ ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* sram, 32K */
+}
+
+/* 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 = . ;
+}
diff --git a/firmware/libboard/common/resources/sam3s2/sram.ld b/firmware/libboard/common/resources/sam3s2/sram.ld
new file mode 100644
index 0000000..8c14ac6
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s2/sram.ld
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------------
+ * 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 SRAM on the ATSAM3S2
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT ("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ rom (rx) : ORIGIN = 0x00400000, LENGTH = 0x00020000 /* flash, 128K */
+ ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 /* sram, 32K */
+}
+
+/* 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 */
+ } > ram
+
+ . = 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
+
+ /* .ARM.exidx is sorted, so has to go in its own output section. */
+ PROVIDE_HIDDEN (__exidx_start = .);
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > ram
+ PROVIDE_HIDDEN (__exidx_end = .);
+
+ . = ALIGN(4);
+ _end = . ;
+}
diff --git a/firmware/libboard/common/resources/sam3s2/sram_samba.lds b/firmware/libboard/common/resources/sam3s2/sram_samba.lds
new file mode 100644
index 0000000..00040c8
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s2/sram_samba.lds
@@ -0,0 +1,91 @@
+/* ----------------------------------------------------------------------------
+ * 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 SRAM on the AT91SAM3S2
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(entry)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ romcodesram (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x0800
+ sram (W!RX) : ORIGIN = 0x20000800, LENGTH = 0x00007800 /* sram, 32K - sizeof(romcodesram) */
+}
+
+/* Entry point */
+/*ENTRY (ResetException)*/
+
+SECTIONS
+{
+ /* startup code in the .isr_vector */
+ .text :
+ {
+ . = ALIGN(4);
+ _stext = .;
+ KEEP(*(.isr_vector .isr_vector.*))
+ *(.mailbox)
+ *(.text .text.*)
+ *(.rodata .rodata.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.gcc_except_table)
+ *(.rodata .rodata*)
+ *(.gnu.linkonce.r.*)
+ . = ALIGN(4);
+ _etext = .;
+ } > sram
+
+ /* data */
+ .data :
+ {
+ . = ALIGN(4);
+ _sidata = .;
+ _sdata = .;
+
+ *(.data)
+ *(.data.*)
+ . = ALIGN(4);
+ _edata = .;
+ } > sram
+
+ .bss (NOLOAD) : {
+ _szero = .;
+ *(.bss)
+ . = ALIGN(4);
+ _ezero = .;
+ } >sram
+
+ /* Stack in SRAM */
+ _sstack = 0x20007FFC;
+}
+end = .;
diff --git a/firmware/libboard/common/resources/sam3s4/flash.ld b/firmware/libboard/common/resources/sam3s4/flash.ld
new file mode 100644
index 0000000..c47a2c5
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s4/flash.ld
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------------
+ * 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(.)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ 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 = . ;
+}
diff --git a/firmware/libboard/common/resources/sam3s4/sram.ld b/firmware/libboard/common/resources/sam3s4/sram.ld
new file mode 100644
index 0000000..9c68755
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s4/sram.ld
@@ -0,0 +1,140 @@
+/* ----------------------------------------------------------------------------
+ * 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 SRAM on the ATSAM3S4
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+SEARCH_DIR(.)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ 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 */
+ } > ram
+
+ . = 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
+
+ /* .ARM.exidx is sorted, so has to go in its own output section. */
+ PROVIDE_HIDDEN (__exidx_start = .);
+ .ARM.exidx :
+ {
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+ } > ram
+ PROVIDE_HIDDEN (__exidx_end = .);
+
+ . = ALIGN(4);
+ _end = . ;
+}
diff --git a/firmware/libboard/common/resources/sam3s4/sram_samba.lds b/firmware/libboard/common/resources/sam3s4/sram_samba.lds
new file mode 100644
index 0000000..16b1dc9
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s4/sram_samba.lds
@@ -0,0 +1,91 @@
+/* ----------------------------------------------------------------------------
+ * 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 SRAM on the AT91SAM3S4
+ *----------------------------------------------------------------------------*/
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(entry)
+
+/* Memory Spaces Definitions */
+MEMORY
+{
+ romcodesram (W!RX) : ORIGIN = 0x20000000, LENGTH = 0x01000
+ sram (W!RX) : ORIGIN = 0x20001000, LENGTH = 0x0000B000 /* sram, 48K - sizeof(romcodesram) */
+}
+
+/* Entry point */
+/*ENTRY (ResetException)*/
+
+SECTIONS
+{
+ /* startup code in the .isr_vector */
+ .text :
+ {
+ . = ALIGN(4);
+ _stext = .;
+ KEEP(*(.isr_vector .isr_vector.*))
+ *(.mailbox)
+ *(.text .text.*)
+ *(.rodata .rodata.*)
+ *(.glue_7)
+ *(.glue_7t)
+ *(.gcc_except_table)
+ *(.rodata .rodata*)
+ *(.gnu.linkonce.r.*)
+ . = ALIGN(4);
+ _etext = .;
+ } > sram
+
+ /* data */
+ .data :
+ {
+ . = ALIGN(4);
+ _sidata = .;
+ _sdata = .;
+
+ *(.data)
+ *(.data.*)
+ . = ALIGN(4);
+ _edata = .;
+ } > sram
+
+ .bss (NOLOAD) : {
+ _szero = .;
+ *(.bss)
+ . = ALIGN(4);
+ _ezero = .;
+ } >sram
+
+ /* Stack in SRAM */
+ _sstack = 0x2000BFFC;
+}
+end = .;
diff --git a/firmware/libboard/common/resources/sam3s_ek_flash.gdb b/firmware/libboard/common/resources/sam3s_ek_flash.gdb
new file mode 100644
index 0000000..7d79615
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s_ek_flash.gdb
@@ -0,0 +1,31 @@
+#*******************************************************
+#
+# Connect to J-Link and debug application in flash.
+#
+
+# define 'reset' command
+define reset
+
+# Connect to the J-Link gdb server
+target remote localhost:2331
+# Reset the chip to get to a known state
+monitor reset
+
+# Select flash device
+monitor flash device = AT91SAM3S4C
+# Enable flash download and flash breakpoints
+monitor flash download = 1
+# Load the program
+load
+
+# Reset peripheral (RSTC_CR)
+set *0x400e1400 = 0xA5000004
+
+# Initializing PC and stack pointer
+mon reg sp=(0x400000)
+set *0x400004 = *0x400004 & 0xFFFFFFFE
+mon reg pc=(0x400004)
+info reg
+
+# end of 'reset' command
+end
diff --git a/firmware/libboard/common/resources/sam3s_ek_sram.gdb b/firmware/libboard/common/resources/sam3s_ek_sram.gdb
new file mode 100644
index 0000000..019bd0a
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s_ek_sram.gdb
@@ -0,0 +1,27 @@
+#*************************************************
+#
+# Connect to J-Link and debug application in sram on SAM3S
+#
+# Note:
+# First, users should modify Step1 and Step2 according to their project,
+# then do Step3.
+
+# Step1: Connect to the J-Link gdb server
+define reset
+target remote localhost:2331
+monitor reset
+
+# Step2: Load file(eg. getting-started project)
+load
+
+# Step3: Reset peripheral (RSTC_CR)
+set *0x400e1400 = 0xA5000004
+
+# Step4: Initializing PC and stack pointer
+# Modify pc value to even before writing pc register
+mon reg sp=(0x20000000)
+set *0x20000004 = *0x20000004 & 0xFFFFFFFE
+mon reg pc=(0x20000004)
+info reg
+
+end
diff --git a/firmware/libboard/common/resources/sam3s_vb_sram.gdb b/firmware/libboard/common/resources/sam3s_vb_sram.gdb
new file mode 100644
index 0000000..019bd0a
--- /dev/null
+++ b/firmware/libboard/common/resources/sam3s_vb_sram.gdb
@@ -0,0 +1,27 @@
+#*************************************************
+#
+# Connect to J-Link and debug application in sram on SAM3S
+#
+# Note:
+# First, users should modify Step1 and Step2 according to their project,
+# then do Step3.
+
+# Step1: Connect to the J-Link gdb server
+define reset
+target remote localhost:2331
+monitor reset
+
+# Step2: Load file(eg. getting-started project)
+load
+
+# Step3: Reset peripheral (RSTC_CR)
+set *0x400e1400 = 0xA5000004
+
+# Step4: Initializing PC and stack pointer
+# Modify pc value to even before writing pc register
+mon reg sp=(0x20000000)
+set *0x20000004 = *0x20000004 & 0xFFFFFFFE
+mon reg pc=(0x20000004)
+info reg
+
+end
diff --git a/firmware/src_board/board_cstartup_gnu.c b/firmware/libboard/common/source/board_cstartup_gnu.c
index 4255646..4255646 100644
--- a/firmware/src_board/board_cstartup_gnu.c
+++ b/firmware/libboard/common/source/board_cstartup_gnu.c
diff --git a/firmware/src_board/board_lowlevel.c b/firmware/libboard/common/source/board_lowlevel.c
index 625160e..625160e 100644
--- a/firmware/src_board/board_lowlevel.c
+++ b/firmware/libboard/common/source/board_lowlevel.c
diff --git a/firmware/src_board/boardver_adc.c b/firmware/libboard/common/source/boardver_adc.c
index ca3d1fe..ca3d1fe 100644
--- a/firmware/src_board/boardver_adc.c
+++ b/firmware/libboard/common/source/boardver_adc.c
diff --git a/firmware/src_board/led.c b/firmware/libboard/common/source/led.c
index 1a88e45..1a88e45 100644
--- a/firmware/src_board/led.c
+++ b/firmware/libboard/common/source/led.c
diff --git a/firmware/src_board/uart_console.c b/firmware/libboard/common/source/uart_console.c
index e6be514..e6be514 100644
--- a/firmware/src_board/uart_console.c
+++ b/firmware/libboard/common/source/uart_console.c
diff --git a/firmware/include_board/owhw/board.h b/firmware/libboard/owhw/include/board.h
index c5e67d1..c5e67d1 100644
--- a/firmware/include_board/owhw/board.h
+++ b/firmware/libboard/owhw/include/board.h
diff --git a/firmware/src_board/owhw.c b/firmware/libboard/owhw/source/owhw.c
index c020d64..c020d64 100644
--- a/firmware/src_board/owhw.c
+++ b/firmware/libboard/owhw/source/owhw.c
diff --git a/firmware/include_board/qmod/board.h b/firmware/libboard/qmod/include/board.h
index 16a38a8..16a38a8 100644
--- a/firmware/include_board/qmod/board.h
+++ b/firmware/libboard/qmod/include/board.h
diff --git a/firmware/src_simtrace/i2c.h b/firmware/libboard/qmod/include/i2c.h
index 15e4b37..15e4b37 100644
--- a/firmware/src_simtrace/i2c.h
+++ b/firmware/libboard/qmod/include/i2c.h
diff --git a/firmware/src_simtrace/wwan_led.h b/firmware/libboard/qmod/include/wwan_led.h
index 7ba72ea..7ba72ea 100644
--- a/firmware/src_simtrace/wwan_led.h
+++ b/firmware/libboard/qmod/include/wwan_led.h
diff --git a/firmware/src_simtrace/wwan_perst.h b/firmware/libboard/qmod/include/wwan_perst.h
index 8997a52..8997a52 100644
--- a/firmware/src_simtrace/wwan_perst.h
+++ b/firmware/libboard/qmod/include/wwan_perst.h
diff --git a/firmware/src_simtrace/i2c.c b/firmware/libboard/qmod/source/i2c.c
index 0549da1..0549da1 100644
--- a/firmware/src_simtrace/i2c.c
+++ b/firmware/libboard/qmod/source/i2c.c
diff --git a/firmware/src_simtrace/wwan_led.c b/firmware/libboard/qmod/source/wwan_led.c
index 3bae0ff..3bae0ff 100644
--- a/firmware/src_simtrace/wwan_led.c
+++ b/firmware/libboard/qmod/source/wwan_led.c
diff --git a/firmware/src_simtrace/wwan_perst.c b/firmware/libboard/qmod/source/wwan_perst.c
index 365acd2..365acd2 100644
--- a/firmware/src_simtrace/wwan_perst.c
+++ b/firmware/libboard/qmod/source/wwan_perst.c
diff --git a/firmware/include_board/simtrace/board.h b/firmware/libboard/simtrace/include/board.h
index 6d11dae..6d11dae 100644
--- a/firmware/include_board/simtrace/board.h
+++ b/firmware/libboard/simtrace/include/board.h
diff --git a/firmware/src_simtrace/iso7816_fidi.h b/firmware/libcommon/include/iso7816_fidi.h
index e4690a5..e4690a5 100644
--- a/firmware/src_simtrace/iso7816_fidi.h
+++ b/firmware/libcommon/include/iso7816_fidi.h
diff --git a/firmware/src_simtrace/llist_irqsafe.h b/firmware/libcommon/include/llist_irqsafe.h
index 9a59d3d..9a59d3d 100644
--- a/firmware/src_simtrace/llist_irqsafe.h
+++ b/firmware/libcommon/include/llist_irqsafe.h
diff --git a/firmware/src_simtrace/req_ctx.h b/firmware/libcommon/include/req_ctx.h
index 41ad84d..41ad84d 100644
--- a/firmware/src_simtrace/req_ctx.h
+++ b/firmware/libcommon/include/req_ctx.h
diff --git a/firmware/src_simtrace/ringbuffer.h b/firmware/libcommon/include/ringbuffer.h
index 801e96b..801e96b 100644
--- a/firmware/src_simtrace/ringbuffer.h
+++ b/firmware/libcommon/include/ringbuffer.h
diff --git a/firmware/include_board/syscalls.h b/firmware/libcommon/include/syscalls.h
index 34f37b8..34f37b8 100644
--- a/firmware/include_board/syscalls.h
+++ b/firmware/libcommon/include/syscalls.h
diff --git a/firmware/src_simtrace/utils.h b/firmware/libcommon/include/utils.h
index b9af1f6..b9af1f6 100644
--- a/firmware/src_simtrace/utils.h
+++ b/firmware/libcommon/include/utils.h
diff --git a/firmware/src_simtrace/iso7816_fidi.c b/firmware/libcommon/source/iso7816_fidi.c
index b35f068..b35f068 100644
--- a/firmware/src_simtrace/iso7816_fidi.c
+++ b/firmware/libcommon/source/iso7816_fidi.c
diff --git a/firmware/src_simtrace/req_ctx.c b/firmware/libcommon/source/req_ctx.c
index a4ecee2..a4ecee2 100644
--- a/firmware/src_simtrace/req_ctx.c
+++ b/firmware/libcommon/source/req_ctx.c
diff --git a/firmware/src_simtrace/ringbuffer.c b/firmware/libcommon/source/ringbuffer.c
index 71fe4ed..71fe4ed 100644
--- a/firmware/src_simtrace/ringbuffer.c
+++ b/firmware/libcommon/source/ringbuffer.c
diff --git a/firmware/src_board/syscalls.c b/firmware/libcommon/source/syscalls.c
index 71cc69a..71cc69a 100644
--- a/firmware/src_board/syscalls.c
+++ b/firmware/libcommon/source/syscalls.c
diff --git a/firmware/include_libosmocore/osmocom/core/linuxlist.h b/firmware/libosmocore/include/osmocom/core/linuxlist.h
index affa827..affa827 100644
--- a/firmware/include_libosmocore/osmocom/core/linuxlist.h
+++ b/firmware/libosmocore/include/osmocom/core/linuxlist.h
diff --git a/firmware/include_libosmocore/osmocom/core/linuxrbtree.h b/firmware/libosmocore/include/osmocom/core/linuxrbtree.h
index d3f9fd1..d3f9fd1 100644
--- a/firmware/include_libosmocore/osmocom/core/linuxrbtree.h
+++ b/firmware/libosmocore/include/osmocom/core/linuxrbtree.h
diff --git a/firmware/include_libosmocore/osmocom/core/timer.h b/firmware/libosmocore/include/osmocom/core/timer.h
index c6d46e1..c6d46e1 100644
--- a/firmware/include_libosmocore/osmocom/core/timer.h
+++ b/firmware/libosmocore/include/osmocom/core/timer.h
diff --git a/firmware/src_simtrace/rbtree.c b/firmware/libosmocore/source/rbtree.c
index f0ebb8c..f0ebb8c 100644
--- a/firmware/src_simtrace/rbtree.c
+++ b/firmware/libosmocore/source/rbtree.c
diff --git a/firmware/src_libosmocore/timer.c b/firmware/libosmocore/source/timer.c
index e045441..e045441 100644
--- a/firmware/src_libosmocore/timer.c
+++ b/firmware/libosmocore/source/timer.c