aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/STM32/RT-STM32F103-MAPLEMINI/Makefile7
-rw-r--r--demos/STM32/RT-STM32F103-MAPLEMINI/readme.txt7
-rw-r--r--os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB_maplemini_bootloader.ld53
-rw-r--r--os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld88
4 files changed, 61 insertions, 94 deletions
diff --git a/demos/STM32/RT-STM32F103-MAPLEMINI/Makefile b/demos/STM32/RT-STM32F103-MAPLEMINI/Makefile
index 1e1090d40..ee7e60c75 100644
--- a/demos/STM32/RT-STM32F103-MAPLEMINI/Makefile
+++ b/demos/STM32/RT-STM32F103-MAPLEMINI/Makefile
@@ -107,9 +107,9 @@ include $(CHIBIOS)/os/various/shell/shell.mk
# Define linker script file here
ifeq ($(USE_MAPLEMINI_BOOTLOADER),1)
- LDSCRIPT = $(STARTUPLD)/STM32F103xE_maplemini_bootloader.ld
+ LDSCRIPT = $(STARTUPLD)/STM32F103xB_maplemini_bootloader.ld
else
- LDSCRIPT = $(STARTUPLD)/STM32F103xE.ld
+ LDSCRIPT = $(STARTUPLD)/STM32F103xB.ld
endif
# C sources that can be compiled in ARM or THUMB mode depending on the global
@@ -206,6 +206,9 @@ CPPWARN = -Wall -Wextra -Wundef
# List all user C define here, like -D_DEBUG=1
UDEFS =
+ifeq ($(USE_MAPLEMINI_BOOTLOADER),1)
+ UDEFS += -DCORTEX_VTOR_INIT=0x5000
+endif
# Define ASM defines here
UADEFS =
diff --git a/demos/STM32/RT-STM32F103-MAPLEMINI/readme.txt b/demos/STM32/RT-STM32F103-MAPLEMINI/readme.txt
index 197a1b143..edc414932 100644
--- a/demos/STM32/RT-STM32F103-MAPLEMINI/readme.txt
+++ b/demos/STM32/RT-STM32F103-MAPLEMINI/readme.txt
@@ -23,14 +23,13 @@ Just modify the TRGT line in the makefile in order to use different GCC ports.
** Flashing Target Board **
-To flash the firmware to the maplemini, an additional Make target has been
-added. It requies dfu-util. While the MapleMini is connected via USB and
+To flash the firmware to the maplemini, you can use dfu-util. While the MapleMini is connected via USB and
still in bootloader mode, just run
- > make flash_usb
+ > dfu-util -a1 -d 1eaf:0003 -D build/ch.bin -R
If you compiled without the bootloader support, you will have to flash via the
-original serial flashing method. Please see
+original serial flashing method or via SWD. For the serial method please see
http://static.leaflabs.com/pub/leaflabs/maple-docs/latest/bootloader.html#id7
for a howto. there you can also get the official bootloader files.
As a quick reference:
diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB_maplemini_bootloader.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB_maplemini_bootloader.ld
new file mode 100644
index 000000000..2acff9d31
--- /dev/null
+++ b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xB_maplemini_bootloader.ld
@@ -0,0 +1,53 @@
+/*
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+
+ 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.
+*/
+
+/*
+ * ST32F103xB memory setup for use with the maplemini bootloader.
+ * You will have to
+ * #define CORTEX_VTOR_INIT 0x5000
+ * in your projects chconf.h
+ */
+MEMORY
+{
+ flash : org = 0x08005000, len = 128k - 0x5000
+ ram0 : org = 0x20000C00, len = 20k - 0xC00
+ ram1 : org = 0x00000000, len = 0
+ ram2 : org = 0x00000000, len = 0
+ ram3 : org = 0x00000000, len = 0
+ ram4 : org = 0x00000000, len = 0
+ ram5 : org = 0x00000000, len = 0
+ ram6 : org = 0x00000000, len = 0
+ ram7 : org = 0x00000000, len = 0
+}
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts*/
+REGION_ALIAS("MAIN_STACK_RAM", ram0);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram0);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+
+/* RAM region to be used for BSS segment.*/
+REGION_ALIAS("BSS_RAM", ram0);
+
+/* RAM region to be used for the default heap.*/
+REGION_ALIAS("HEAP_RAM", ram0);
+
+INCLUDE rules.ld
diff --git a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld b/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld
deleted file mode 100644
index 9f8a28378..000000000
--- a/os/common/startup/ARMCMx/compilers/GCC/ld/STM32F103xE_maplemini_bootloader.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
-
- Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-
- 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.
-*/
-
-/*
- * ST32F103xE memory setup for use with the maplemini bootloader.
- * You will have to
- * #define CORTEX_VTOR_INIT 0x5000
- * in your projects chconf.h
- */
-MEMORY
-{
- flash0 : org = 0x08005000, len = 512k - 0x5000
- flash1 : org = 0x00000000, len = 0
- flash2 : org = 0x00000000, len = 0
- flash3 : org = 0x00000000, len = 0
- flash4 : org = 0x00000000, len = 0
- flash5 : org = 0x00000000, len = 0
- flash6 : org = 0x00000000, len = 0
- flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000C00, len = 64k - 0xC00
- ram1 : org = 0x00000000, len = 0
- ram2 : org = 0x00000000, len = 0
- ram3 : org = 0x00000000, len = 0
- ram4 : org = 0x00000000, len = 0
- ram5 : org = 0x00000000, len = 0
- ram6 : org = 0x00000000, len = 0
- ram7 : org = 0x00000000, len = 0
-}
-
-/* For each data/text section two region are defined, a virtual region
- and a load region (_LMA suffix).*/
-
-/* Flash region to be used for exception vectors.*/
-REGION_ALIAS("VECTORS_FLASH", flash0);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash0);
-REGION_ALIAS("XTORS_FLASH_LMA", flash0);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash0);
-REGION_ALIAS("TEXT_FLASH_LMA", flash0);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash0);
-REGION_ALIAS("RODATA_FLASH_LMA", flash0);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash0);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
-
-/* RAM region to be used for Main stack. This stack accommodates the processing
- of all exceptions and interrupts.*/
-REGION_ALIAS("MAIN_STACK_RAM", ram0);
-
-/* RAM region to be used for the process stack. This is the stack used by
- the main() function.*/
-REGION_ALIAS("PROCESS_STACK_RAM", ram0);
-
-/* RAM region to be used for data segment.*/
-REGION_ALIAS("DATA_RAM", ram0);
-REGION_ALIAS("DATA_RAM_LMA", flash0);
-
-/* RAM region to be used for BSS segment.*/
-REGION_ALIAS("BSS_RAM", ram0);
-
-/* RAM region to be used for the default heap.*/
-REGION_ALIAS("HEAP_RAM", ram0);
-
-/* Generic rules inclusion.*/
-INCLUDE rules.ld