diff --git a/boards/bluepill_f103c8.json b/boards/bluepill_f103c8.json index dcfee427..f41adb3e 100644 --- a/boards/bluepill_f103c8.json +++ b/boards/bluepill_f103c8.json @@ -52,7 +52,8 @@ "jlink", "stlink", "blackmagic", - "mbed" + "mbed", + "dfu" ] }, "url": "http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f1-series/stm32f103/stm32f103c8.html", diff --git a/boards/genericSTM32F103C8.json b/boards/genericSTM32F103C8.json index f62d4bc2..a032f9e5 100644 --- a/boards/genericSTM32F103C8.json +++ b/boards/genericSTM32F103C8.json @@ -37,7 +37,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103CB.json b/boards/genericSTM32F103CB.json index b2d760f2..4494c3fa 100644 --- a/boards/genericSTM32F103CB.json +++ b/boards/genericSTM32F103CB.json @@ -36,7 +36,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103R8.json b/boards/genericSTM32F103R8.json index 460a1d54..83f45298 100644 --- a/boards/genericSTM32F103R8.json +++ b/boards/genericSTM32F103R8.json @@ -36,7 +36,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103RB.json b/boards/genericSTM32F103RB.json index 0175d1d1..c9f36b39 100644 --- a/boards/genericSTM32F103RB.json +++ b/boards/genericSTM32F103RB.json @@ -37,7 +37,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103RC.json b/boards/genericSTM32F103RC.json index 5ef89580..193d03d3 100644 --- a/boards/genericSTM32F103RC.json +++ b/boards/genericSTM32F103RC.json @@ -36,7 +36,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103RE.json b/boards/genericSTM32F103RE.json index 7ade0ec6..b815b0d3 100644 --- a/boards/genericSTM32F103RE.json +++ b/boards/genericSTM32F103RE.json @@ -36,7 +36,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103VC.json b/boards/genericSTM32F103VC.json index 5919771d..8e459b4f 100644 --- a/boards/genericSTM32F103VC.json +++ b/boards/genericSTM32F103VC.json @@ -36,7 +36,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/boards/genericSTM32F103VE.json b/boards/genericSTM32F103VE.json index e0268bbd..eb4b076d 100644 --- a/boards/genericSTM32F103VE.json +++ b/boards/genericSTM32F103VE.json @@ -36,7 +36,8 @@ "jlink", "stlink", "blackmagic", - "serial" + "serial", + "dfu" ], "require_upload_port": true, "use_1200bps_touch": false, diff --git a/builder/frameworks/arduino/maple/stm32f1.py b/builder/frameworks/arduino/maple/stm32f1.py index e44f6d42..9b1056f3 100644 --- a/builder/frameworks/arduino/maple/stm32f1.py +++ b/builder/frameworks/arduino/maple/stm32f1.py @@ -33,7 +33,7 @@ assert isdir(FRAMEWORK_DIR) # default configuration values -vector = 0x8000000 +vector = int(board.get("build.vec_tab_addr", "0x8000000"), 16) error_led_port = "GPIOB" error_led_pin = 1 @@ -66,31 +66,15 @@ "GENERIC_BOOTLOADER" ]) -if "generic" in board.id: - if upload_protocol == "dfu": - vector = 0x8002000 - env.Append(CPPDEFINES=["SERIAL_USB", "GENERIC_BOOTLOADER"]) - - if "f103c" in mcu_type: - ldscript = "bootloader_20.ld" - elif "f103r" in mcu_type: - ldscript = "bootloader.ld" - elif "f103v" in mcu_type: - ldscript = "stm32f103veDFU.ld" - - elif board.get("build.vec_tab_addr", ""): - vector = int(board.get("build.vec_tab_addr"), 16) - # maple board related configuration remap -elif "maple" in board.id: +if "maple" in board.id: env.Append(CPPDEFINES=[("SERIAL_USB")]) variant = "maple_mini" if "maple_mini" in board.id else "maple" - vector = 0x8002000 - ldscript = "bootloader_20" - - if "maple_mini_origin" in board.id or "maple" in board.id: - vector = 0x8005000 - ldscript = "flash.ld" + vector = 0x8005000 + ldscript = "flash.ld" + if board.id == "maple_mini_b20": + vector = 0x8002000 + ldscript = "bootloader_20" # for nucleo f103rb board elif "nucleo_f103rb" in board.id: @@ -98,6 +82,16 @@ ldscript = "jtag.ld" env.Append(CPPDEFINES=["NUCLEO_HSE_CRYSTAL"]) +elif upload_protocol == "dfu": + env.Append(CPPDEFINES=["SERIAL_USB", "GENERIC_BOOTLOADER"]) + vector = 0x8002000 + if "f103c" in mcu_type: + ldscript = "bootloader_20.ld" + elif "f103r" in mcu_type: + ldscript = "bootloader.ld" + elif "f103v" in mcu_type: + ldscript = "stm32f103veDFU.ld" + env.Append( CFLAGS=["-std=gnu11"], @@ -132,7 +126,9 @@ join(FRAMEWORK_DIR, "system", "libmaple", "usb", "usb_lib") ], - LIBPATH=[join(FRAMEWORK_DIR, "variants", variant, "ld")] + LIBPATH=[join(FRAMEWORK_DIR, "variants", variant, "ld")], + + LIBS=["c"] ) # remap ldscript @@ -144,7 +140,7 @@ env['LINKFLAGS'].remove(item) # remove unused libraries -for item in ("c", "stdc++", "nosys"): +for item in ("stdc++", "nosys"): if item in env['LIBS']: env['LIBS'].remove(item) diff --git a/platform.json b/platform.json index 1608c56f..1b7bb140 100644 --- a/platform.json +++ b/platform.json @@ -12,7 +12,7 @@ "type": "git", "url": "https://github.com/platformio/platform-ststm32.git" }, - "version": "4.0.1", + "version": "4.0.2", "packageRepositories": [ "https://dl.bintray.com/platformio/dl-packages/manifest.json", "http://dl.platformio.org/packages/manifest.json" diff --git a/platform.py b/platform.py index d6efc102..e400f151 100644 --- a/platform.py +++ b/platform.py @@ -25,9 +25,6 @@ def configure_default_packages(self, variables, targets): 'package'] = "framework-arduinostm32mxchip" self.frameworks['arduino'][ 'script'] = "builder/frameworks/arduino/mxchip.py" - - self.packages['tool-openocd']['type'] = "uploader" - self.packages['toolchain-gccarmnoneeabi']['version'] = "~1.60301.0" return PlatformBase.configure_default_packages(self, variables, @@ -73,14 +70,14 @@ def _add_default_debug_tools(self, board): assert debug.get("openocd_target"), ( "Missed target configuration for %s" % board.id) - server_args = ["-f", "scripts/interface/%s.cfg" % link] - if link == "stlink": - server_args.extend(["-c", "transport select hla_swd"]) - - server_args.extend([ + server_args = [ + "-f", + "scripts/interface/%s.cfg" % link, "-c", + "transport select %s" % ("hla_swd" + if link == "stlink" else "swd"), "-f", "scripts/target/%s.cfg" % debug.get("openocd_target") - ]) + ] debug['tools'][link] = { "server": {