diff --git a/flight/make/common-defs.mk b/flight/make/common-defs.mk
index 76b26e961..933aedc8f 100644
--- a/flight/make/common-defs.mk
+++ b/flight/make/common-defs.mk
@@ -152,6 +152,14 @@ ifdef USER_EE_BANK_BASE
BOARD_CDEFS += -DUSER_EE_BANK_BASE=$(USER_EE_BANK_BASE)
BOARD_CDEFS += -DUSER_EE_BANK_SIZE=$(USER_EE_BANK_SIZE)
endif
+ifdef SRAM_BANK_BASE
+BOARD_CDEFS += -DSRAM_BANK_BASE=$(SRAM_BANK_BASE)
+BOARD_CDEFS += -DSRAM_BANK_SIZE=$(SRAM_BANK_SIZE)
+endif
+ifdef CCSRAM_BANK_BASE
+BOARD_CDEFS += -DCCSRAM_BANK_BASE=$(CCSRAM_BANK_BASE)
+BOARD_CDEFS += -DCCSRAM_BANK_SIZE=$(CCSRAM_BANK_SIZE)
+endif
CDEFS += $(BOARD_CDEFS)
ifeq ($(DEBUG), YES)
@@ -214,6 +222,8 @@ ALLSRCBASE = $(notdir $(basename $(ALLSRC)))
# Define all object files.
ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) $(EXTRAOBJ)
+ALLLD = $(addprefix $(OUTDIR)/, $(addsuffix .ld, $(notdir $(basename $(LDSRC)))))
+
# Define all listing files (used for make clean).
LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE)))
# Define all depedency-files (used for make clean).
@@ -241,9 +251,9 @@ endif
# Link: create ELF output file from object files.
ifeq ($(USE_CXX), YES)
-$(eval $(call LINK_CXX_TEMPLATE,$(OUTDIR)/$(TARGET).elf,$(ALLOBJ),$(ALLLIB)))
+$(eval $(call LINK_CXX_TEMPLATE,$(OUTDIR)/$(TARGET).elf,$(ALLOBJ),$(ALLLIB),$(ALLLD)))
else
-$(eval $(call LINK_TEMPLATE,$(OUTDIR)/$(TARGET).elf,$(ALLOBJ),$(ALLLIB)))
+$(eval $(call LINK_TEMPLATE,$(OUTDIR)/$(TARGET).elf,$(ALLOBJ),$(ALLLIB),$(ALLLD)))
endif
# Assemble: create object files from assembler source files.
@@ -272,6 +282,9 @@ $(eval $(call PARTIAL_COMPILE_TEMPLATE,SRC))
# Compile: create assembler files from C source files. ARM only
$(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE,SRCARM))
+# Preprocess: create linker scripts from .lds files.
+$(foreach src, $(LDSRC), $(eval $(call PREPROCESS_LDS_TEMPLATE,$(src))))
+
# Add opfw target
$(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
diff --git a/flight/make/firmware-defs.mk b/flight/make/firmware-defs.mk
index 14873835e..a77932ede 100644
--- a/flight/make/firmware-defs.mk
+++ b/flight/make/firmware-defs.mk
@@ -41,32 +41,33 @@ else
endif
# Define Messages
-MSG_FORMATERROR = $(QUOTE) Can not handle output-format$(QUOTE)
-MSG_MODINIT = $(QUOTE) MODINIT $(MSG_EXTRA) $(QUOTE)
-MSG_SIZE = $(QUOTE) SIZE $(MSG_EXTRA) $(QUOTE)
-MSG_LOAD_FILE = $(QUOTE) BIN/HEX $(MSG_EXTRA) $(QUOTE)
-MSG_BIN_OBJ = $(QUOTE) BINO $(MSG_EXTRA) $(QUOTE)
-MSG_STRIP_FILE = $(QUOTE) STRIP $(MSG_EXTRA) $(QUOTE)
-MSG_EXTENDED_LISTING = $(QUOTE) LIS $(MSG_EXTRA) $(QUOTE)
-MSG_SYMBOL_TABLE = $(QUOTE) NM $(MSG_EXTRA) $(QUOTE)
-MSG_ARCHIVING = $(QUOTE) AR $(MSG_EXTRA) $(QUOTE)
-MSG_LINKING = $(QUOTE) LD $(MSG_EXTRA) $(QUOTE)
-MSG_COMPILING = $(QUOTE) CC $(MSG_EXTRA) $(QUOTE)
-MSG_COMPILING_ARM = $(QUOTE) CC-ARM $(MSG_EXTRA) $(QUOTE)
-MSG_COMPILINGCXX = $(QUOTE) CXX $(MSG_EXTRA) $(QUOTE)
-MSG_COMPILINGCXX_ARM = $(QUOTE) CXX-ARM $(MSG_EXTRA) $(QUOTE)
-MSG_ASSEMBLING = $(QUOTE) AS $(MSG_EXTRA) $(QUOTE)
-MSG_ASSEMBLING_ARM = $(QUOTE) AS-ARM $(MSG_EXTRA) $(QUOTE)
-MSG_CLEANING = $(QUOTE) CLEAN $(MSG_EXTRA) $(QUOTE)
-MSG_ASMFROMC = $(QUOTE) AS(C) $(MSG_EXTRA) $(QUOTE)
-MSG_ASMFROMC_ARM = $(QUOTE) AS(C)-ARM $(MSG_EXTRA) $(QUOTE)
-MSG_PYMITEINIT = $(QUOTE) PY $(MSG_EXTRA) $(QUOTE)
-MSG_OPFIRMWARE = $(QUOTE) OPFW $(MSG_EXTRA) $(QUOTE)
-MSG_FWINFO = $(QUOTE) FWINFO $(MSG_EXTRA) $(QUOTE)
-MSG_JTAG_PROGRAM = $(QUOTE) JTAG-PGM $(MSG_EXTRA) $(QUOTE)
-MSG_JTAG_WIPE = $(QUOTE) JTAG-WIPE $(MSG_EXTRA) $(QUOTE)
-MSG_PADDING = $(QUOTE) PADDING $(MSG_EXTRA) $(QUOTE)
-MSG_FLASH_IMG = $(QUOTE) FLASH_IMG $(MSG_EXTRA) $(QUOTE)
+MSG_FORMATERROR = $(QUOTE) Can not handle output-format$(QUOTE)
+MSG_MODINIT = $(QUOTE) MODINIT $(MSG_EXTRA) $(QUOTE)
+MSG_SIZE = $(QUOTE) SIZE $(MSG_EXTRA) $(QUOTE)
+MSG_LOAD_FILE = $(QUOTE) BIN/HEX $(MSG_EXTRA) $(QUOTE)
+MSG_BIN_OBJ = $(QUOTE) BINO $(MSG_EXTRA) $(QUOTE)
+MSG_STRIP_FILE = $(QUOTE) STRIP $(MSG_EXTRA) $(QUOTE)
+MSG_EXTENDED_LISTING = $(QUOTE) LIS $(MSG_EXTRA) $(QUOTE)
+MSG_SYMBOL_TABLE = $(QUOTE) NM $(MSG_EXTRA) $(QUOTE)
+MSG_ARCHIVING = $(QUOTE) AR $(MSG_EXTRA) $(QUOTE)
+MSG_LINKING = $(QUOTE) LD $(MSG_EXTRA) $(QUOTE)
+MSG_COMPILING = $(QUOTE) CC $(MSG_EXTRA) $(QUOTE)
+MSG_COMPILING_ARM = $(QUOTE) CC-ARM $(MSG_EXTRA) $(QUOTE)
+MSG_COMPILINGCXX = $(QUOTE) CXX $(MSG_EXTRA) $(QUOTE)
+MSG_COMPILINGCXX_ARM = $(QUOTE) CXX-ARM $(MSG_EXTRA) $(QUOTE)
+MSG_ASSEMBLING = $(QUOTE) AS $(MSG_EXTRA) $(QUOTE)
+MSG_ASSEMBLING_ARM = $(QUOTE) AS-ARM $(MSG_EXTRA) $(QUOTE)
+MSG_CLEANING = $(QUOTE) CLEAN $(MSG_EXTRA) $(QUOTE)
+MSG_ASMFROMC = $(QUOTE) AS(C) $(MSG_EXTRA) $(QUOTE)
+MSG_ASMFROMC_ARM = $(QUOTE) AS(C)-ARM $(MSG_EXTRA) $(QUOTE)
+MSG_PYMITEINIT = $(QUOTE) PY $(MSG_EXTRA) $(QUOTE)
+MSG_OPFIRMWARE = $(QUOTE) OPFW $(MSG_EXTRA) $(QUOTE)
+MSG_FWINFO = $(QUOTE) FWINFO $(MSG_EXTRA) $(QUOTE)
+MSG_JTAG_PROGRAM = $(QUOTE) JTAG-PGM $(MSG_EXTRA) $(QUOTE)
+MSG_JTAG_WIPE = $(QUOTE) JTAG-WIPE $(MSG_EXTRA) $(QUOTE)
+MSG_PADDING = $(QUOTE) PADDING $(MSG_EXTRA) $(QUOTE)
+MSG_FLASH_IMG = $(QUOTE) FLASH_IMG $(MSG_EXTRA) $(QUOTE)
+MSG_PREPROCESSING_LDS = $(QUOTE) PP $(MSG_EXTRA) $(QUOTE)
# Function for converting an absolute path to one relative
# to the top of the source tree.
@@ -175,6 +176,13 @@ $(OUTDIR)/$(notdir $(basename $(1))).o : $(1)
$(V1) $(CC) -c $(THUMB) $$(CFLAGS) $$(CONLYFLAGS) $$(CPPFLAGS) $$< -o $$@
endef
+# Preprocess: create linker scripts from .lds files.
+define PREPROCESS_LDS_TEMPLATE
+$(OUTDIR)/$(notdir $(basename $(1))).ld : $(1)
+ @echo $(MSG_PREPROCESSING_LDS) $$(call toprel, $$<)
+ $(V1) $(CXX) -E -P -x c $(THUMB) $$(CFLAGS) $$(CPPFLAGS) $$< -o $$@
+endef
+
# Compile: create object files from C source files. ARM-only
define COMPILE_C_ARM_TEMPLATE
$(OUTDIR)/$(notdir $(basename $(1))).o : $(1)
@@ -224,13 +232,16 @@ endef
# $1 = elf file to produce
# $2 = list of object files that make up the elf file
# $3 = optional list of libraries to build and link
+# $4 = optional list of linker scripts to build and link
define LINK_TEMPLATE
.SECONDARY : $(1)
-.PRECIOUS : $(2) $(3)
-$(1).input_files: $(2) $(3)
+.PRECIOUS : $(2) $(3) $(4)
+$(1).input_files: $(2) $(3) $(4)
$(V1) rm -rf $(1).input_files
$(foreach file,$(2) $(3),
$(V1) echo $(file) >> $$@)
+ $(foreach file,$(4),
+ $(V1) echo -T$(file) >> $$@)
$(1): $(1).input_files
@echo $(MSG_LINKING) $$(call toprel, $$@)
@@ -240,13 +251,17 @@ endef
# Link: create ELF output file from object files.
# $1 = elf file to produce
# $2 = list of object files that make up the elf file
+# $3 = optional list of libraries to build and link
+# $4 = optional list of linker scripts to build and link
define LINK_CXX_TEMPLATE
.SECONDARY : $(1)
-.PRECIOUS : $(2) $(3)
-$(1).input_files: $(2) $(3)
+.PRECIOUS : $(2) $(3) $(4)
+$(1).input_files: $(2) $(3) $(4)
$(V1) rm -rf $(1).input_files
$(foreach file,$(2) $(3),
$(V1) echo $(file) >> $$@)
+ $(foreach file,$(4),
+ $(V1) echo -T$(file) >> $$@)
$(1): $(1).input_files
@echo $(MSG_LINKING) $$(call toprel, $$@)
diff --git a/flight/pios/stm32f30x/library.mk b/flight/pios/stm32f30x/library.mk
index 45e22d443..22ff05ca3 100644
--- a/flight/pios/stm32f30x/library.mk
+++ b/flight/pios/stm32f30x/library.mk
@@ -7,14 +7,7 @@ PIOS_DEVLIB := $(dir $(lastword $(MAKEFILE_LIST)))
USE_USB ?= YES
-# Hardcoded linker script names for now
-LINKER_SCRIPTS_APP = $(OPSYSTEM)/memory.ld \
- $(OPSYSTEM)/../common/sections.ld
-LINKER_SCRIPTS_BL = $(OPSYSTEM)/memory.ld \
- $(OPSYSTEM)/../common/sections.ld
-# _compat linker script are aimed at bootloader updater to guarantee to be compatible with earlier bootloaders.
-LINKER_SCRIPTS_COMPAT = $(PIOS_DEVLIB)link_$(BOARD)_fw_memory.ld \
- $(PIOS_DEVLIB)link_$(BOARD)_sections_compat.ld
+LDSRC = $(PIOS_DEVLIB)link_memory.lds $(PIOS_DEVLIB)link_sections.lds
CDEFS += -D$(CHIP) -DSTM32F3
CDEFS += -DHSE_VALUE=$(OSCILLATOR_FREQ)
@@ -38,7 +31,6 @@ EXTRAINCDIRS += $(PIOS_DEVLIB)inc
# CMSIS for the F3
include $(PIOSCOMMON)/libraries/CMSIS/library.mk
CMSIS_DEVICEDIR := $(PIOS_DEVLIB)libraries/CMSIS3/Device/ST/STM32F30x
-SRC += $(OPSYSTEM)/../common/system.c
EXTRAINCDIRS += $(CMSIS_DEVICEDIR)/Include
# ST Peripheral library
diff --git a/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_bl_memory.ld b/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_bl_memory.ld
deleted file mode 100644
index f4a1713f8..000000000
--- a/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_bl_memory.ld
+++ /dev/null
@@ -1,7 +0,0 @@
-MEMORY
-{
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x004000 - 0x000080
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x009000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_fw_memory.ld b/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_fw_memory.ld
deleted file mode 100644
index c84c8ac8d..000000000
--- a/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_fw_memory.ld
+++ /dev/null
@@ -1,8 +0,0 @@
-MEMORY
-{
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- RSVD (rx) : ORIGIN = 0x08004000, LENGTH = 0x00C000 - 0x004000
- FLASH (rx) : ORIGIN = 0x0800C000, LENGTH = 0x034000
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00A000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_sections.ld b/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_sections.ld
deleted file mode 100644
index b3eada584..000000000
--- a/flight/pios/stm32f30x/link_STM32F303CCT_CC_Rev1_sections.ld
+++ /dev/null
@@ -1,197 +0,0 @@
-
-/* Section Definitions */
-SECTIONS
-{
- /*
- * Vectors, code and constant data.
- */
- .text :
- {
- PROVIDE (pios_isr_vector_table_base = .);
- KEEP(*(.cpu_vectors)) /* CPU exception vectors */
- KEEP(*(.io_vectors)) /* I/O interrupt vectors */
- *(.text .text.* .gnu.linkonce.t.*)
- *(.glue_7t) *(.glue_7)
- *(.rodata .rodata* .gnu.linkonce.r.*)
- } > FLASH
-
- /*
- * Init section for UAVObjects.
- */
- .initcalluavobj.init :
- {
- . = ALIGN(4);
- __uavobj_initcall_start = .;
- KEEP(*(.initcalluavobj.init))
- . = ALIGN(4);
- __uavobj_initcall_end = .;
- } >FLASH
-
- /*
- * Module init section section
- */
- .initcallmodule.init :
- {
- . = ALIGN(4);
- __module_initcall_start = .;
- KEEP(*(.initcallmodule.init))
- . = ALIGN(4);
- __module_initcall_end = .;
- } >FLASH
-
-
- /*
- * C++ exception handling.
- */
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
- .ARM.exidx :
- {
- __exidx_start = .;
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- __exidx_end = .;
- } > FLASH
-
- /*
- * Markers for the end of the 'text' section and the in-flash start of
- * non-constant data
- */
- . = ALIGN(4);
- _etext = .;
- _sidata = .;
-
- /*
- * Board info structure, normally only generated by the bootloader but can
- * be read by the application.
- */
- PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
- .boardinfo :
- {
- . = ALIGN(4);
- KEEP(*(.boardinfo))
- . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
- } > BD_INFO
-
- /*
- * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
- * results in a hard fault.
- */
- .istack (NOLOAD) :
- {
- . = ALIGN(4);
- _irq_stack_end = . ;
- *(.irqstack)
- _irq_stack_top = . ;
- } > CCSRAM
-
-
- /*
- * Non-const initialised data.
- */
- .data : AT (_sidata)
- {
- . = ALIGN(4);
- _sdata = .;
- *(.data .data.*)
- . = ALIGN(4);
- _edata = . ;
- } > SRAM
-
- /*
- * Uninitialised data (BSS + commons).
- */
- .bss (NOLOAD) :
- {
- _sbss = . ;
- *(SORT_BY_ALIGNMENT(.bss*))
- *(COMMON)
- _ebss = . ;
- PROVIDE ( _end = _ebss ) ;
- } > SRAM
-
- /*
- * The heap consumes the remainder of the SRAM.
- */
- .heap (NOLOAD) :
- {
- . = ALIGN(4);
- _sheap = . ;
-
- /*
- * This allows us to declare an object or objects up to the minimum acceptable
- * heap size and receive a linker error if the space available for the heap is
- * not sufficient.
- */
- *(.heap)
-
- /* extend the heap up to the top of SRAM */
- . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
- _eheap = .;
- } > SRAM
-
- /*
- * 'Fast' memory goes in the CCM SRAM
- */
- .fast (NOLOAD) :
- {
- _sfast = . ;
- *(.fast)
- _efast = . ;
- } > CCSRAM
-
- /*
- * The fastheap consumes the remainder of the CCSRAM.
- */
- .fastheap (NOLOAD) :
- {
- . = ALIGN(4);
- _sfastheap = . ;
-
- /*
- * This allows us to declare an object or objects up to the minimum acceptable
- * heap size and receive a linker error if the space available for the heap is
- * not sufficient.
- */
- *(.fastheap)
-
- /* extend the heap up to the top of SRAM */
- . = ORIGIN(CCSRAM) + LENGTH(CCSRAM) - ABSOLUTE(_sfastheap);
- _efastheap = .;
- } > CCSRAM
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-}
diff --git a/flight/pios/stm32f30x/link_memory.lds b/flight/pios/stm32f30x/link_memory.lds
new file mode 100644
index 000000000..d16cab33a
--- /dev/null
+++ b/flight/pios/stm32f30x/link_memory.lds
@@ -0,0 +1,26 @@
+#define SRAM_BANK_BASE 0x20000000
+#define CCSRAM_BANK_BASE 0x10000000
+
+#ifdef STM32F303xC
+# define SRAM_BANK_SIZE 0x009000
+# define CCSRAM_BANK_SIZE 0x002000
+#endif
+#ifdef STM32F303xE
+# define SRAM_BANK_SIZE 0x00A000
+# define CCSRAM_BANK_SIZE 0x002000
+#endif
+
+MEMORY
+{
+ BD_INFO (r) : ORIGIN = (BL_BANK_BASE + BL_BANK_SIZE) - 0x80, LENGTH = 0x000080
+#ifdef EE_BANK_BASE
+ EE_BANK (rx) : ORIGIN = EE_BANK_BASE, LENGTH = EE_BANK_SIZE
+#endif /* EE_BANK_BASE */
+#ifdef BOOTLOADER
+ FLASH (rx) : ORIGIN = BL_BANK_BASE, LENGTH = BL_BANK_SIZE
+#else
+ FLASH (rx) : ORIGIN = FW_BANK_BASE, LENGTH = FW_BANK_SIZE
+#endif
+ SRAM (rwx) : ORIGIN = SRAM_BANK_BASE, LENGTH = SRAM_BANK_SIZE
+ CCSRAM (rw) : ORIGIN = CCSRAM_BANK_BASE, LENGTH = CCSRAM_BANK_SIZE
+}
diff --git a/flight/targets/boards/spracingf3evo/common/sections.ld b/flight/pios/stm32f30x/link_sections.lds
similarity index 99%
rename from flight/targets/boards/spracingf3evo/common/sections.ld
rename to flight/pios/stm32f30x/link_sections.lds
index d2901a96e..6f938d8f9 100644
--- a/flight/targets/boards/spracingf3evo/common/sections.ld
+++ b/flight/pios/stm32f30x/link_sections.lds
@@ -1,4 +1,3 @@
-
/* Section Definitions */
SECTIONS
{
diff --git a/flight/targets/boards/spracingf3/common/system.c b/flight/pios/stm32f30x/system.c
similarity index 97%
rename from flight/targets/boards/spracingf3/common/system.c
rename to flight/pios/stm32f30x/system.c
index d26ba3ad6..3cd82f47f 100644
--- a/flight/targets/boards/spracingf3/common/system.c
+++ b/flight/pios/stm32f30x/system.c
@@ -2,8 +2,8 @@
******************************************************************************
* @file system_stm32f30x.c
* @author MCD Application Team
- * @version V1.2.2
- * @date 27-February-2015
+ * @version V1.0.0
+ * @date 04-September-2012
* @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
* This file contains the system clock configuration for STM32F30x devices,
* and is generated by the clock configuration tool
@@ -71,7 +71,7 @@
******************************************************************************
* @attention
*
- *
© COPYRIGHT 2015 STMicroelectronics
+ * © COPYRIGHT 2012 STMicroelectronics
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
@@ -105,7 +105,13 @@
* @}
*/
-/* Private typedef -----------------------------------------------------------*/
+/** @addtogroup STM32F30x_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
/** @addtogroup STM32F30x_System_Private_Defines
* @{
@@ -119,7 +125,13 @@
* @}
*/
-/* Private macro -------------------------------------------------------------*/
+/** @addtogroup STM32F30x_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
/** @addtogroup STM32F30x_System_Private_Variables
* @{
@@ -291,7 +303,11 @@ static void SetSysClock(void)
/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------*/
/* Enable HSE */
+#ifdef PIOS_RCC_HSE_BYPASS
+ RCC->CR |= ((uint32_t)RCC_CR_HSEON | RCC_CR_HSEBYP);
+#else
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
+#endif /* PIOS_HSE_BYPASS */
/* Wait till HSE is ready and if Time out is reached exit */
do {
diff --git a/flight/targets/boards/nucleof303re/bootloader/memory.ld b/flight/targets/boards/nucleof303re/bootloader/memory.ld
deleted file mode 100644
index f4a1713f8..000000000
--- a/flight/targets/boards/nucleof303re/bootloader/memory.ld
+++ /dev/null
@@ -1,7 +0,0 @@
-MEMORY
-{
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x004000 - 0x000080
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x009000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/targets/boards/nucleof303re/common/sections.ld b/flight/targets/boards/nucleof303re/common/sections.ld
deleted file mode 100644
index b3eada584..000000000
--- a/flight/targets/boards/nucleof303re/common/sections.ld
+++ /dev/null
@@ -1,197 +0,0 @@
-
-/* Section Definitions */
-SECTIONS
-{
- /*
- * Vectors, code and constant data.
- */
- .text :
- {
- PROVIDE (pios_isr_vector_table_base = .);
- KEEP(*(.cpu_vectors)) /* CPU exception vectors */
- KEEP(*(.io_vectors)) /* I/O interrupt vectors */
- *(.text .text.* .gnu.linkonce.t.*)
- *(.glue_7t) *(.glue_7)
- *(.rodata .rodata* .gnu.linkonce.r.*)
- } > FLASH
-
- /*
- * Init section for UAVObjects.
- */
- .initcalluavobj.init :
- {
- . = ALIGN(4);
- __uavobj_initcall_start = .;
- KEEP(*(.initcalluavobj.init))
- . = ALIGN(4);
- __uavobj_initcall_end = .;
- } >FLASH
-
- /*
- * Module init section section
- */
- .initcallmodule.init :
- {
- . = ALIGN(4);
- __module_initcall_start = .;
- KEEP(*(.initcallmodule.init))
- . = ALIGN(4);
- __module_initcall_end = .;
- } >FLASH
-
-
- /*
- * C++ exception handling.
- */
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
- .ARM.exidx :
- {
- __exidx_start = .;
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- __exidx_end = .;
- } > FLASH
-
- /*
- * Markers for the end of the 'text' section and the in-flash start of
- * non-constant data
- */
- . = ALIGN(4);
- _etext = .;
- _sidata = .;
-
- /*
- * Board info structure, normally only generated by the bootloader but can
- * be read by the application.
- */
- PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
- .boardinfo :
- {
- . = ALIGN(4);
- KEEP(*(.boardinfo))
- . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
- } > BD_INFO
-
- /*
- * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
- * results in a hard fault.
- */
- .istack (NOLOAD) :
- {
- . = ALIGN(4);
- _irq_stack_end = . ;
- *(.irqstack)
- _irq_stack_top = . ;
- } > CCSRAM
-
-
- /*
- * Non-const initialised data.
- */
- .data : AT (_sidata)
- {
- . = ALIGN(4);
- _sdata = .;
- *(.data .data.*)
- . = ALIGN(4);
- _edata = . ;
- } > SRAM
-
- /*
- * Uninitialised data (BSS + commons).
- */
- .bss (NOLOAD) :
- {
- _sbss = . ;
- *(SORT_BY_ALIGNMENT(.bss*))
- *(COMMON)
- _ebss = . ;
- PROVIDE ( _end = _ebss ) ;
- } > SRAM
-
- /*
- * The heap consumes the remainder of the SRAM.
- */
- .heap (NOLOAD) :
- {
- . = ALIGN(4);
- _sheap = . ;
-
- /*
- * This allows us to declare an object or objects up to the minimum acceptable
- * heap size and receive a linker error if the space available for the heap is
- * not sufficient.
- */
- *(.heap)
-
- /* extend the heap up to the top of SRAM */
- . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
- _eheap = .;
- } > SRAM
-
- /*
- * 'Fast' memory goes in the CCM SRAM
- */
- .fast (NOLOAD) :
- {
- _sfast = . ;
- *(.fast)
- _efast = . ;
- } > CCSRAM
-
- /*
- * The fastheap consumes the remainder of the CCSRAM.
- */
- .fastheap (NOLOAD) :
- {
- . = ALIGN(4);
- _sfastheap = . ;
-
- /*
- * This allows us to declare an object or objects up to the minimum acceptable
- * heap size and receive a linker error if the space available for the heap is
- * not sufficient.
- */
- *(.fastheap)
-
- /* extend the heap up to the top of SRAM */
- . = ORIGIN(CCSRAM) + LENGTH(CCSRAM) - ABSOLUTE(_sfastheap);
- _efastheap = .;
- } > CCSRAM
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-}
diff --git a/flight/targets/boards/nucleof303re/common/system.c b/flight/targets/boards/nucleof303re/common/system.c
deleted file mode 100644
index 9358697ae..000000000
--- a/flight/targets/boards/nucleof303re/common/system.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- ******************************************************************************
- * @file system_stm32f30x.c
- * @author MCD Application Team
- * @version V1.2.2
- * @date 27-February-2015
- * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
- * This file contains the system clock configuration for STM32F30x devices,
- * and is generated by the clock configuration tool
- * stm32f30x_Clock_Configuration_V1.0.0.xls
- *
- * 1. This file provides two functions and one global variable to be called from
- * user application:
- * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
- * and Divider factors, AHB/APBx prescalers and Flash settings),
- * depending on the configuration made in the clock xls tool.
- * This function is called at startup just after reset and
- * before branch to main program. This call is made inside
- * the "startup_stm32f30x.s" file.
- *
- * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
- * by the user application to setup the SysTick
- * timer or configure other parameters.
- *
- * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
- * be called whenever the core clock is changed
- * during program execution.
- *
- * 2. After each device reset the HSI (8 MHz) is used as system clock source.
- * Then SystemInit() function is called, in "startup_stm32f30x.s" file, to
- * configure the system clock before to branch to main program.
- *
- * 3. If the system clock source selected by user fails to startup, the SystemInit()
- * function will do nothing and HSI still used as system clock source. User can
- * add some code to deal with this issue inside the SetSysClock() function.
- *
- * 4. The default value of HSE crystal is set to 8MHz, refer to "HSE_VALUE" define
- * in "stm32f30x.h" file. When HSE is used as system clock source, directly or
- * through PLL, and you are using different crystal you have to adapt the HSE
- * value to your own configuration.
- *
- * 5. This file configures the system clock as follows:
- *=============================================================================
- * Supported STM32F30x device
- *-----------------------------------------------------------------------------
- * System Clock source | PLL (HSE)
- *-----------------------------------------------------------------------------
- * SYSCLK(Hz) | 72000000
- *-----------------------------------------------------------------------------
- * HCLK(Hz) | 72000000
- *-----------------------------------------------------------------------------
- * AHB Prescaler | 1
- *-----------------------------------------------------------------------------
- * APB2 Prescaler | 1
- *-----------------------------------------------------------------------------
- * APB1 Prescaler | 2
- *-----------------------------------------------------------------------------
- * HSE Frequency(Hz) | 8000000
- *----------------------------------------------------------------------------
- * PLLMUL | 9
- *-----------------------------------------------------------------------------
- * PREDIV | 1
- *-----------------------------------------------------------------------------
- * USB Clock | DISABLE
- *-----------------------------------------------------------------------------
- * Flash Latency(WS) | 2
- *-----------------------------------------------------------------------------
- * Prefetch Buffer | ON
- *-----------------------------------------------------------------------------
- *=============================================================================
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2015 STMicroelectronics
- *
- * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.st.com/software_license_agreement_liberty_v2
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-/** @addtogroup CMSIS
- * @{
- */
-
-/** @addtogroup stm32f30x_system
- * @{
- */
-
-/** @addtogroup STM32F30x_System_Private_Includes
- * @{
- */
-
-#include "stm32f30x.h"
-
-/**
- * @}
- */
-
-/* Private typedef -----------------------------------------------------------*/
-
-/** @addtogroup STM32F30x_System_Private_Defines
- * @{
- */
-/*!< Uncomment the following line if you need to relocate your vector Table in
- Internal SRAM. */
-/* #define VECT_TAB_SRAM */
-#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field.
- This value must be a multiple of 0x200. */
-/**
- * @}
- */
-
-/* Private macro -------------------------------------------------------------*/
-
-/** @addtogroup STM32F30x_System_Private_Variables
- * @{
- */
-
- uint32_t SystemCoreClock = 72000000;
-
- __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F30x_System_Private_FunctionPrototypes
- * @{
- */
-
-static void SetSysClock(void);
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F30x_System_Private_Functions
- * @{
- */
-
-/**
- * @brief Setup the microcontroller system
- * Initialize the Embedded Flash Interface, the PLL and update the
- * SystemFrequency variable.
- * @param None
- * @retval None
- */
-void SystemInit(void)
-{
- /* FPU settings ------------------------------------------------------------*/
- #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
- SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
- #endif
-
- /* Reset the RCC clock configuration to the default reset state ------------*/
- /* Set HSION bit */
- RCC->CR |= (uint32_t)0x00000001;
-
- /* Reset CFGR register */
- RCC->CFGR &= 0xF87FC00C;
-
- /* Reset HSEON, CSSON and PLLON bits */
- RCC->CR &= (uint32_t)0xFEF6FFFF;
-
- /* Reset HSEBYP bit */
- RCC->CR &= (uint32_t)0xFFFBFFFF;
-
- /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE bits */
- RCC->CFGR &= (uint32_t)0xFF80FFFF;
-
- /* Reset PREDIV1[3:0] bits */
- RCC->CFGR2 &= (uint32_t)0xFFFFFFF0;
-
- /* Reset USARTSW[1:0], I2CSW and TIMs bits */
- RCC->CFGR3 &= (uint32_t)0xFF00FCCC;
-
- /* Disable all interrupts */
- RCC->CIR = 0x00000000;
-
- /* Configure the System clock source, PLL Multiplier and Divider factors,
- AHB/APBx prescalers and Flash settings ----------------------------------*/
- SetSysClock();
-
-#ifdef VECT_TAB_SRAM
- SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
-#else
- SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
-#endif
-}
-
-/**
- * @brief Update SystemCoreClock variable according to Clock Register Values.
- * The SystemCoreClock variable contains the core clock (HCLK), it can
- * be used by the user application to setup the SysTick timer or configure
- * other parameters.
- *
- * @note Each time the core clock (HCLK) changes, this function must be called
- * to update SystemCoreClock variable value. Otherwise, any configuration
- * based on this variable will be incorrect.
- *
- * @note - The system frequency computed by this function is not the real
- * frequency in the chip. It is calculated based on the predefined
- * constant and the selected clock source:
- *
- * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
- *
- * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
- *
- * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
- * or HSI_VALUE(*) multiplied/divided by the PLL factors.
- *
- * (*) HSI_VALUE is a constant defined in stm32f30x.h file (default value
- * 8 MHz) but the real value may vary depending on the variations
- * in voltage and temperature.
- *
- * (**) HSE_VALUE is a constant defined in stm32f30x.h file (default value
- * 8 MHz), user has to ensure that HSE_VALUE is same as the real
- * frequency of the crystal used. Otherwise, this function may
- * have wrong result.
- *
- * - The result of this function could be not correct when using fractional
- * value for HSE crystal.
- *
- * @param None
- * @retval None
- */
-void SystemCoreClockUpdate (void)
-{
- uint32_t tmp = 0, pllmull = 0, pllsource = 0, prediv1factor = 0;
-
- /* Get SYSCLK source -------------------------------------------------------*/
- tmp = RCC->CFGR & RCC_CFGR_SWS;
-
- switch (tmp)
- {
- case 0x00: /* HSI used as system clock */
- SystemCoreClock = HSI_VALUE;
- break;
- case 0x04: /* HSE used as system clock */
- SystemCoreClock = HSE_VALUE;
- break;
- case 0x08: /* PLL used as system clock */
- /* Get PLL clock source and multiplication factor ----------------------*/
- pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
- pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
- pllmull = ( pllmull >> 18) + 2;
-
- if (pllsource == 0x00)
- {
- /* HSI oscillator clock divided by 2 selected as PLL clock entry */
- SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
- }
- else
- {
- prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
- /* HSE oscillator clock selected as PREDIV1 clock entry */
- SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull;
- }
- break;
- default: /* HSI used as system clock */
- SystemCoreClock = HSI_VALUE;
- break;
- }
- /* Compute HCLK clock frequency ----------------*/
- /* Get HCLK prescaler */
- tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
- /* HCLK clock frequency */
- SystemCoreClock >>= tmp;
-}
-
-/**
- * @brief Configures the System clock source, PLL Multiplier and Divider factors,
- * AHB/APBx prescalers and Flash settings
- * @note This function should be called only once the RCC clock configuration
- * is reset to the default reset state (done in SystemInit() function).
- * @param None
- * @retval None
- */
-static void SetSysClock(void)
-{
- __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
-
-/******************************************************************************/
-/* PLL (clocked by HSE) used as System clock source */
-/******************************************************************************/
-
- /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------*/
- /* Enable HSE */
- RCC->CR |= ((uint32_t)RCC_CR_HSEON | RCC_CR_HSEBYP);
-
- /* Wait till HSE is ready and if Time out is reached exit */
- do
- {
- HSEStatus = RCC->CR & RCC_CR_HSERDY;
- StartUpCounter++;
- } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
-
- if ((RCC->CR & RCC_CR_HSERDY) != RESET)
- {
- HSEStatus = (uint32_t)0x01;
- }
- else
- {
- HSEStatus = (uint32_t)0x00;
- }
-
- if (HSEStatus == (uint32_t)0x01)
- {
- /* Enable Prefetch Buffer and set Flash Latency */
- FLASH->ACR = FLASH_ACR_PRFTBE | (uint32_t)FLASH_ACR_LATENCY_1;
-
- /* HCLK = SYSCLK / 1 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
-
- /* PCLK2 = HCLK / 1 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
-
- /* PCLK1 = HCLK / 2 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
-
- /* PLL configuration */
- RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
- RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL9);
-
- /* Enable PLL */
- RCC->CR |= RCC_CR_PLLON;
-
- /* Wait till PLL is ready */
- while((RCC->CR & RCC_CR_PLLRDY) == 0)
- {
- }
-
- /* Select PLL as system clock source */
- RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
- RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
-
- /* Wait till PLL is used as system clock source */
- while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
- {
- }
- }
- else
- { /* If HSE fails to start-up, the application will have wrong clock
- configuration. User can add here some code to deal with this error */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/flight/targets/boards/nucleof303re/firmware/memory.ld b/flight/targets/boards/nucleof303re/firmware/memory.ld
deleted file mode 100644
index 61e49d124..000000000
--- a/flight/targets/boards/nucleof303re/firmware/memory.ld
+++ /dev/null
@@ -1,8 +0,0 @@
-MEMORY
-{
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- EE_BANK (rx) : ORIGIN = 0x08004000, LENGTH = 0x008000
- FLASH (rx) : ORIGIN = 0x0800C000, LENGTH = 0x034000
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00A000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/targets/boards/spracingf3/bootloader/memory.ld b/flight/targets/boards/spracingf3/bootloader/memory.ld
deleted file mode 100644
index f4a1713f8..000000000
--- a/flight/targets/boards/spracingf3/bootloader/memory.ld
+++ /dev/null
@@ -1,7 +0,0 @@
-MEMORY
-{
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x004000 - 0x000080
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x009000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/targets/boards/spracingf3/common/sections.ld b/flight/targets/boards/spracingf3/common/sections.ld
deleted file mode 100644
index b3eada584..000000000
--- a/flight/targets/boards/spracingf3/common/sections.ld
+++ /dev/null
@@ -1,197 +0,0 @@
-
-/* Section Definitions */
-SECTIONS
-{
- /*
- * Vectors, code and constant data.
- */
- .text :
- {
- PROVIDE (pios_isr_vector_table_base = .);
- KEEP(*(.cpu_vectors)) /* CPU exception vectors */
- KEEP(*(.io_vectors)) /* I/O interrupt vectors */
- *(.text .text.* .gnu.linkonce.t.*)
- *(.glue_7t) *(.glue_7)
- *(.rodata .rodata* .gnu.linkonce.r.*)
- } > FLASH
-
- /*
- * Init section for UAVObjects.
- */
- .initcalluavobj.init :
- {
- . = ALIGN(4);
- __uavobj_initcall_start = .;
- KEEP(*(.initcalluavobj.init))
- . = ALIGN(4);
- __uavobj_initcall_end = .;
- } >FLASH
-
- /*
- * Module init section section
- */
- .initcallmodule.init :
- {
- . = ALIGN(4);
- __module_initcall_start = .;
- KEEP(*(.initcallmodule.init))
- . = ALIGN(4);
- __module_initcall_end = .;
- } >FLASH
-
-
- /*
- * C++ exception handling.
- */
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
- .ARM.exidx :
- {
- __exidx_start = .;
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- __exidx_end = .;
- } > FLASH
-
- /*
- * Markers for the end of the 'text' section and the in-flash start of
- * non-constant data
- */
- . = ALIGN(4);
- _etext = .;
- _sidata = .;
-
- /*
- * Board info structure, normally only generated by the bootloader but can
- * be read by the application.
- */
- PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
- .boardinfo :
- {
- . = ALIGN(4);
- KEEP(*(.boardinfo))
- . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO));
- } > BD_INFO
-
- /*
- * Place the IRQ/bootstrap stack at the bottom of SRAM so that an overflow
- * results in a hard fault.
- */
- .istack (NOLOAD) :
- {
- . = ALIGN(4);
- _irq_stack_end = . ;
- *(.irqstack)
- _irq_stack_top = . ;
- } > CCSRAM
-
-
- /*
- * Non-const initialised data.
- */
- .data : AT (_sidata)
- {
- . = ALIGN(4);
- _sdata = .;
- *(.data .data.*)
- . = ALIGN(4);
- _edata = . ;
- } > SRAM
-
- /*
- * Uninitialised data (BSS + commons).
- */
- .bss (NOLOAD) :
- {
- _sbss = . ;
- *(SORT_BY_ALIGNMENT(.bss*))
- *(COMMON)
- _ebss = . ;
- PROVIDE ( _end = _ebss ) ;
- } > SRAM
-
- /*
- * The heap consumes the remainder of the SRAM.
- */
- .heap (NOLOAD) :
- {
- . = ALIGN(4);
- _sheap = . ;
-
- /*
- * This allows us to declare an object or objects up to the minimum acceptable
- * heap size and receive a linker error if the space available for the heap is
- * not sufficient.
- */
- *(.heap)
-
- /* extend the heap up to the top of SRAM */
- . = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
- _eheap = .;
- } > SRAM
-
- /*
- * 'Fast' memory goes in the CCM SRAM
- */
- .fast (NOLOAD) :
- {
- _sfast = . ;
- *(.fast)
- _efast = . ;
- } > CCSRAM
-
- /*
- * The fastheap consumes the remainder of the CCSRAM.
- */
- .fastheap (NOLOAD) :
- {
- . = ALIGN(4);
- _sfastheap = . ;
-
- /*
- * This allows us to declare an object or objects up to the minimum acceptable
- * heap size and receive a linker error if the space available for the heap is
- * not sufficient.
- */
- *(.fastheap)
-
- /* extend the heap up to the top of SRAM */
- . = ORIGIN(CCSRAM) + LENGTH(CCSRAM) - ABSOLUTE(_sfastheap);
- _efastheap = .;
- } > CCSRAM
-
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- .stab.excl 0 : { *(.stab.excl) }
- .stab.exclstr 0 : { *(.stab.exclstr) }
- .stab.index 0 : { *(.stab.index) }
- .stab.indexstr 0 : { *(.stab.indexstr) }
- .comment 0 : { *(.comment) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-}
diff --git a/flight/targets/boards/spracingf3/firmware/memory.ld b/flight/targets/boards/spracingf3/firmware/memory.ld
deleted file mode 100644
index 951620e43..000000000
--- a/flight/targets/boards/spracingf3/firmware/memory.ld
+++ /dev/null
@@ -1,7 +0,0 @@
-MEMORY
-{
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- FLASH (rx) : ORIGIN = 0x08004000, LENGTH = 0x03C000
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00A000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/targets/boards/spracingf3evo/bootloader/memory.ld b/flight/targets/boards/spracingf3evo/bootloader/memory.ld
deleted file mode 100644
index f4a1713f8..000000000
--- a/flight/targets/boards/spracingf3evo/bootloader/memory.ld
+++ /dev/null
@@ -1,7 +0,0 @@
-MEMORY
-{
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x004000 - 0x000080
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x009000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}
diff --git a/flight/targets/boards/spracingf3evo/common/system.c b/flight/targets/boards/spracingf3evo/common/system.c
deleted file mode 100644
index d26ba3ad6..000000000
--- a/flight/targets/boards/spracingf3evo/common/system.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/**
- ******************************************************************************
- * @file system_stm32f30x.c
- * @author MCD Application Team
- * @version V1.2.2
- * @date 27-February-2015
- * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
- * This file contains the system clock configuration for STM32F30x devices,
- * and is generated by the clock configuration tool
- * stm32f30x_Clock_Configuration_V1.0.0.xls
- *
- * 1. This file provides two functions and one global variable to be called from
- * user application:
- * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier
- * and Divider factors, AHB/APBx prescalers and Flash settings),
- * depending on the configuration made in the clock xls tool.
- * This function is called at startup just after reset and
- * before branch to main program. This call is made inside
- * the "startup_stm32f30x.s" file.
- *
- * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
- * by the user application to setup the SysTick
- * timer or configure other parameters.
- *
- * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
- * be called whenever the core clock is changed
- * during program execution.
- *
- * 2. After each device reset the HSI (8 MHz) is used as system clock source.
- * Then SystemInit() function is called, in "startup_stm32f30x.s" file, to
- * configure the system clock before to branch to main program.
- *
- * 3. If the system clock source selected by user fails to startup, the SystemInit()
- * function will do nothing and HSI still used as system clock source. User can
- * add some code to deal with this issue inside the SetSysClock() function.
- *
- * 4. The default value of HSE crystal is set to 8MHz, refer to "HSE_VALUE" define
- * in "stm32f30x.h" file. When HSE is used as system clock source, directly or
- * through PLL, and you are using different crystal you have to adapt the HSE
- * value to your own configuration.
- *
- * 5. This file configures the system clock as follows:
- *=============================================================================
- * Supported STM32F30x device
- *-----------------------------------------------------------------------------
- * System Clock source | PLL (HSE)
- *-----------------------------------------------------------------------------
- * SYSCLK(Hz) | 72000000
- *-----------------------------------------------------------------------------
- * HCLK(Hz) | 72000000
- *-----------------------------------------------------------------------------
- * AHB Prescaler | 1
- *-----------------------------------------------------------------------------
- * APB2 Prescaler | 1
- *-----------------------------------------------------------------------------
- * APB1 Prescaler | 2
- *-----------------------------------------------------------------------------
- * HSE Frequency(Hz) | 8000000
- *----------------------------------------------------------------------------
- * PLLMUL | 9
- *-----------------------------------------------------------------------------
- * PREDIV | 1
- *-----------------------------------------------------------------------------
- * USB Clock | DISABLE
- *-----------------------------------------------------------------------------
- * Flash Latency(WS) | 2
- *-----------------------------------------------------------------------------
- * Prefetch Buffer | ON
- *-----------------------------------------------------------------------------
- *=============================================================================
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2015 STMicroelectronics
- *
- * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.st.com/software_license_agreement_liberty_v2
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-/** @addtogroup CMSIS
- * @{
- */
-
-/** @addtogroup stm32f30x_system
- * @{
- */
-
-/** @addtogroup STM32F30x_System_Private_Includes
- * @{
- */
-
-#include "stm32f30x.h"
-
-/**
- * @}
- */
-
-/* Private typedef -----------------------------------------------------------*/
-
-/** @addtogroup STM32F30x_System_Private_Defines
- * @{
- */
-/*!< Uncomment the following line if you need to relocate your vector Table in
- Internal SRAM. */
-/* #define VECT_TAB_SRAM */
-#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field.
- This value must be a multiple of 0x200. */
-/**
- * @}
- */
-
-/* Private macro -------------------------------------------------------------*/
-
-/** @addtogroup STM32F30x_System_Private_Variables
- * @{
- */
-
-uint32_t SystemCoreClock = 72000000;
-
-__I uint8_t AHBPrescTable[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9 };
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F30x_System_Private_FunctionPrototypes
- * @{
- */
-
-static void SetSysClock(void);
-
-/**
- * @}
- */
-
-/** @addtogroup STM32F30x_System_Private_Functions
- * @{
- */
-
-/**
- * @brief Setup the microcontroller system
- * Initialize the Embedded Flash Interface, the PLL and update the
- * SystemFrequency variable.
- * @param None
- * @retval None
- */
-void SystemInit(void)
-{
- /* FPU settings ------------------------------------------------------------*/
- #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
- SCB->CPACR |= ((3UL << 10 * 2) | (3UL << 11 * 2)); /* set CP10 and CP11 Full Access */
- #endif
-
- /* Reset the RCC clock configuration to the default reset state ------------*/
- /* Set HSION bit */
- RCC->CR |= (uint32_t)0x00000001;
-
- /* Reset CFGR register */
- RCC->CFGR &= 0xF87FC00C;
-
- /* Reset HSEON, CSSON and PLLON bits */
- RCC->CR &= (uint32_t)0xFEF6FFFF;
-
- /* Reset HSEBYP bit */
- RCC->CR &= (uint32_t)0xFFFBFFFF;
-
- /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE bits */
- RCC->CFGR &= (uint32_t)0xFF80FFFF;
-
- /* Reset PREDIV1[3:0] bits */
- RCC->CFGR2 &= (uint32_t)0xFFFFFFF0;
-
- /* Reset USARTSW[1:0], I2CSW and TIMs bits */
- RCC->CFGR3 &= (uint32_t)0xFF00FCCC;
-
- /* Disable all interrupts */
- RCC->CIR = 0x00000000;
-
- /* Configure the System clock source, PLL Multiplier and Divider factors,
- AHB/APBx prescalers and Flash settings ----------------------------------*/
- SetSysClock();
-
-#ifdef VECT_TAB_SRAM
- SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
-#else
- SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
-#endif
-}
-
-/**
- * @brief Update SystemCoreClock variable according to Clock Register Values.
- * The SystemCoreClock variable contains the core clock (HCLK), it can
- * be used by the user application to setup the SysTick timer or configure
- * other parameters.
- *
- * @note Each time the core clock (HCLK) changes, this function must be called
- * to update SystemCoreClock variable value. Otherwise, any configuration
- * based on this variable will be incorrect.
- *
- * @note - The system frequency computed by this function is not the real
- * frequency in the chip. It is calculated based on the predefined
- * constant and the selected clock source:
- *
- * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
- *
- * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
- *
- * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
- * or HSI_VALUE(*) multiplied/divided by the PLL factors.
- *
- * (*) HSI_VALUE is a constant defined in stm32f30x.h file (default value
- * 8 MHz) but the real value may vary depending on the variations
- * in voltage and temperature.
- *
- * (**) HSE_VALUE is a constant defined in stm32f30x.h file (default value
- * 8 MHz), user has to ensure that HSE_VALUE is same as the real
- * frequency of the crystal used. Otherwise, this function may
- * have wrong result.
- *
- * - The result of this function could be not correct when using fractional
- * value for HSE crystal.
- *
- * @param None
- * @retval None
- */
-void SystemCoreClockUpdate(void)
-{
- uint32_t tmp = 0, pllmull = 0, pllsource = 0, prediv1factor = 0;
-
- /* Get SYSCLK source -------------------------------------------------------*/
- tmp = RCC->CFGR & RCC_CFGR_SWS;
-
- switch (tmp) {
- case 0x00: /* HSI used as system clock */
- SystemCoreClock = HSI_VALUE;
- break;
- case 0x04: /* HSE used as system clock */
- SystemCoreClock = HSE_VALUE;
- break;
- case 0x08: /* PLL used as system clock */
- /* Get PLL clock source and multiplication factor ----------------------*/
- pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
- pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
- pllmull = (pllmull >> 18) + 2;
-
- if (pllsource == 0x00) {
- /* HSI oscillator clock divided by 2 selected as PLL clock entry */
- SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
- } else {
- prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
- /* HSE oscillator clock selected as PREDIV1 clock entry */
- SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull;
- }
- break;
- default: /* HSI used as system clock */
- SystemCoreClock = HSI_VALUE;
- break;
- }
- /* Compute HCLK clock frequency ----------------*/
- /* Get HCLK prescaler */
- tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
- /* HCLK clock frequency */
- SystemCoreClock >>= tmp;
-}
-
-/**
- * @brief Configures the System clock source, PLL Multiplier and Divider factors,
- * AHB/APBx prescalers and Flash settings
- * @note This function should be called only once the RCC clock configuration
- * is reset to the default reset state (done in SystemInit() function).
- * @param None
- * @retval None
- */
-static void SetSysClock(void)
-{
- __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
-
-/******************************************************************************/
-/* PLL (clocked by HSE) used as System clock source */
-/******************************************************************************/
-
- /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------*/
- /* Enable HSE */
- RCC->CR |= ((uint32_t)RCC_CR_HSEON);
-
- /* Wait till HSE is ready and if Time out is reached exit */
- do {
- HSEStatus = RCC->CR & RCC_CR_HSERDY;
- StartUpCounter++;
- } while ((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
-
- if ((RCC->CR & RCC_CR_HSERDY) != RESET) {
- HSEStatus = (uint32_t)0x01;
- } else {
- HSEStatus = (uint32_t)0x00;
- }
-
- if (HSEStatus == (uint32_t)0x01) {
- /* Enable Prefetch Buffer and set Flash Latency */
- FLASH->ACR = FLASH_ACR_PRFTBE | (uint32_t)FLASH_ACR_LATENCY_1;
-
- /* HCLK = SYSCLK / 1 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
-
- /* PCLK2 = HCLK / 1 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
-
- /* PCLK1 = HCLK / 2 */
- RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
-
- /* PLL configuration */
- RCC->CFGR &= (uint32_t)((uint32_t) ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
- RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL9);
-
- /* Enable PLL */
- RCC->CR |= RCC_CR_PLLON;
-
- /* Wait till PLL is ready */
- while ((RCC->CR & RCC_CR_PLLRDY) == 0) {}
-
- /* Select PLL as system clock source */
- RCC->CFGR &= (uint32_t)((uint32_t) ~(RCC_CFGR_SW));
- RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
-
- /* Wait till PLL is used as system clock source */
- while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL) {}
- } else { /* If HSE fails to start-up, the application will have wrong clock
- configuration. User can add here some code to deal with this error */
- }
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/flight/targets/boards/spracingf3evo/firmware/memory.ld b/flight/targets/boards/spracingf3evo/firmware/memory.ld
deleted file mode 100644
index 61e49d124..000000000
--- a/flight/targets/boards/spracingf3evo/firmware/memory.ld
+++ /dev/null
@@ -1,8 +0,0 @@
-MEMORY
-{
- BD_INFO (r) : ORIGIN = 0x08004000 - 0x80, LENGTH = 0x000080
- EE_BANK (rx) : ORIGIN = 0x08004000, LENGTH = 0x008000
- FLASH (rx) : ORIGIN = 0x0800C000, LENGTH = 0x034000
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00A000
- CCSRAM (rw) : ORIGIN = 0x10000000, LENGTH = 0x002000
-}