From 4d3c370314a8141ad87eab1f26af9c4a843e800a Mon Sep 17 00:00:00 2001 From: rogerclarkmelbourne Date: Mon, 20 Apr 2015 12:26:16 +1000 Subject: [PATCH] added bootloader and non bootloder version of STM32F103RE to STM32F103R series boards --- STM32F1/boards.txt | 32 +++++++++++------ .../ld/stm32f103re-bootloader.ld | 36 +++++++++++++++++++ .../generic_stm32f103rxx/ld/stm32f103re.ld | 36 +++++++++++++++++++ 3 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re-bootloader.ld create mode 100644 STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re.ld diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index a513c59..a01021c 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -159,29 +159,41 @@ genericSTM32.build.gcc_ver=gcc-arm-none-eabi-4.8.3-2014q1 ############################################################## -genericSTM32F103R.name=Generic STM32F103RE -genericSTM32F103R.upload.maximum_size=492000 -genericSTM32F103R.upload.ram.maximum_size=61000 -genericSTM32F103R.upload.flash.maximum_size=492000 +genericSTM32F103R.name=Generic STM32F103R series + genericSTM32F103R.build.error_led_port=GPIOA genericSTM32F103R.build.error_led_pin=5 genericSTM32F103R.build.variant=generic_stm32f103rxx -genericSTM32F103R.build.extra_flags=-DMCU_STM32F103RE -mthumb -march=armv7-m -D__STM32F1__ -genericSTM32F103R.build.ldscript=ld/jtag.ld -genericSTM32F103R.upload.tool=serial_upload genericSTM32F103R.upload.protocol=maple_dfu genericSTM32F103R.upload.use_1200bps_touch=false genericSTM32F103R.upload.file_type=bin -#genericSTM32F103R.upload.usbID=1EAF:0003 -#genericSTM32F103R.upload.altID=1 -#genericSTM32F103R.upload.auto_reset=true +genericSTM32F103R.upload.usbID=1EAF:0003 +genericSTM32F103R.upload.altID=1 +genericSTM32F103R.upload.auto_reset=true genericSTM32F103R.build.mcu=cortex-m3 genericSTM32F103R.build.f_cpu=72000000L genericSTM32F103R.build.board=GENERIC_STM32F103R genericSTM32F103R.build.core=maple genericSTM32F103R.build.vect=VECT_TAB_FLASH +genericSTM32F103R.menu.device_variant.STM32F103RE=STM32F103RE +genericSTM32F103R.menu.device_variant.STM32F103RE.build.extra_flags=-DMCU_STM32F103RE -mthumb -march=armv7-m -D__STM32F1__ +genericSTM32F103R.menu.device_variant.STM32F103RE.upload.maximum_size=492000 +genericSTM32F103R.menu.device_variant.STM32F103RE.upload.ram.maximum_size=61000 +genericSTM32F103R.menu.device_variant.STM32F103RE.upload.flash.maximum_size=492000 +genericSTM32F103R.menu.device_variant.STM32F103RE.build.ldscript=ld/stm32f103re.ld +genericSTM32F103R.menu.device_variant.STM32F103RE.upload.tool=serial_upload + +genericSTM32F103R.menu.device_variant.STM32F103REbootloader=STM32F103RE + bootloader +genericSTM32F103R.menu.device_variant.STM32F103REbootloader.build.extra_flags=-DMCU_STM32F103RE -mthumb -march=armv7-m -D__STM32F1__ -DBOOTLOADER_maple +genericSTM32F103R.menu.device_variant.STM32F103REbootloader.upload.maximum_size=262144 +genericSTM32F103R.menu.device_variant.STM32F103REbootloader.upload.ram.maximum_size=492152 +genericSTM32F103R.menu.device_variant.STM32F103REbootloader.upload.flash.maximum_size=262144 +genericSTM32F103R.menu.device_variant.STM32F103REbootloader.build.ldscript=ld/stm32f103re-bootloader.ld +genericSTM32F103R.menu.device_variant.STM32F103REbootloader.upload.tool=maple_upload + + ############################################################## microduino32_flash.name=Microduino Core STM32 to Flash diff --git a/STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re-bootloader.ld b/STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re-bootloader.ld new file mode 100644 index 0000000..fb1af71 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re-bootloader.ld @@ -0,0 +1,36 @@ +/* + * libmaple linker script for "JTAG" builds. + * + * A "JTAG" build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but links starting at the + * Flash and SRAM starting addresses (0x08000000 and 0x20000000 + * respectively). This will wipe out a Maple bootloader if there's one + * on the board, so only use this if you know what you're doing. + * + * Of course, a "JTAG" build is perfectly usable for upload over SWD, + * the system memory bootloader, etc. The name is just a historical + * artifact. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ +ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 61K +rom (rx) : ORIGIN = 0x08005000, LENGTH = 492K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re.ld b/STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re.ld new file mode 100644 index 0000000..8fa78e1 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103rxx/ld/stm32f103re.ld @@ -0,0 +1,36 @@ +/* + * libmaple linker script for "JTAG" builds. + * + * A "JTAG" build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but links starting at the + * Flash and SRAM starting addresses (0x08000000 and 0x20000000 + * respectively). This will wipe out a Maple bootloader if there's one + * on the board, so only use this if you know what you're doing. + * + * Of course, a "JTAG" build is perfectly usable for upload over SWD, + * the system memory bootloader, etc. The name is just a historical + * artifact. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 512K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc