From 327060ca40b08cf7d0cd614f4e0ea3970deb320c Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke Date: Tue, 12 Nov 2019 15:51:32 +0100 Subject: [PATCH 1/4] makesfiles/boards: Added common programmer config Added common configuration for the programmer, debugger and serial for STM32 based boards. --- makefiles/boards/stm32.inc.mk | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 makefiles/boards/stm32.inc.mk diff --git a/makefiles/boards/stm32.inc.mk b/makefiles/boards/stm32.inc.mk new file mode 100644 index 0000000000..1240568d88 --- /dev/null +++ b/makefiles/boards/stm32.inc.mk @@ -0,0 +1,58 @@ +PROGRAMMER ?= openocd + +PROGRAMMERS_SUPPORTED := bmp dfu-util openocd + +ifeq (,$(filter $(PROGRAMMER), $(PROGRAMMERS_SUPPORTED))) + $(error Programmer $(PROGRAMMER) not supported) +endif + +ifeq (bmp,$(PROGRAMMER)) + # On Blackmagic Probe, the first ACM is used to connect to the gdb server, + # the second is the BMP's UART interface + PORT_LINUX ?= /dev/ttyACM1 + PORT_DARWIN ?= $(wordlist 2, 2, $(sort $(wildcard /dev/tty.usbmodem*))) +else + # configure the serial terminal + PORT_LINUX ?= /dev/ttyACM0 + PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) +endif + +# setup serial terminal +include $(RIOTMAKE)/tools/serial.inc.mk + +ifeq (openocd,$(PROGRAMMER)) + # STM32 boards can become un-flashable after a hardfault, + # use connect_assert_srst to always be able to flash or reset the boards. + export OPENOCD_RESET_USE_CONNECT_ASSERT_SRST ?= 1 + + # For STM32 boards the ST-link adapter is the default adapter, e.g. all + # Nucleo boards have an on-board ST-link adapter + DEBUG_ADAPTER ?= stlink + + # RIOT uses openocd by default + include $(RIOTMAKE)/tools/openocd.inc.mk +endif + +ifeq (bmp,$(PROGRAMMER)) + include $(RIOTMAKE)/tools/bmp.inc.mk +endif + +ifeq (dfu-util,$(PROGRAMMER)) + # optionally, use dfu-util to flash via usb + # note: needs a bootloader flashed before, config below is compatible + # with blackmagic_dfu, see https://github.com/blacksphere/blackmagic/ + # To stop bootloader from loading an existing firmware, pull down + # (ground) GPIO B1. + ifeq (,$(DFU_USB_ID)) + $(error DFU_USB_ID is not set) + endif + # Skip the space needed by the embedded bootloader + export ROM_OFFSET ?= 0x2000 + FLASHER = dfu-util + DEBUGGER = # no debugger + RESET ?= # dfu-util has no support for resetting the device + + FLASHFILE ?= $(BINFILE) + DFU_FLAGS ?= -a 2 + FFLAGS = -d $(DFU_USB_ID) $(DFU_FLAGS) -D $(FLASHFILE) +endif From 92284bed88a9759f5f24bc19b3793a3a3ef5ab34 Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke Date: Tue, 12 Nov 2019 15:52:37 +0100 Subject: [PATCH 2/4] boards/common/nucleo: Use STM32 programmer config --- boards/common/nucleo/Makefile.include | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/boards/common/nucleo/Makefile.include b/boards/common/nucleo/Makefile.include index 21397cfefe..06c88290c5 100644 --- a/boards/common/nucleo/Makefile.include +++ b/boards/common/nucleo/Makefile.include @@ -5,19 +5,5 @@ INCLUDES += -I$(RIOTBOARD)/common/nucleo/include # we use shared STM32 configuration snippets INCLUDES += -I$(RIOTBOARD)/common/stm32/include -# configure the serial terminal -PORT_LINUX ?= /dev/ttyACM0 -PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) - -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk - -# nucleo boards can become un-flashable after a hardfault, -# use connect_assert_srst to always be able to flash or reset the boards. -export OPENOCD_RESET_USE_CONNECT_ASSERT_SRST ?= 1 - -# all Nucleo boards have an on-board ST-link adapter -DEBUG_ADAPTER ?= stlink - -# nucleo boards use openocd -include $(RIOTMAKE)/tools/openocd.inc.mk +# Setup of programmer and serial is shared between STM32 based boards +include $(RIOTMAKE)/boards/stm32.inc.mk From a949179f69f457682c653ca362fe85a33ec20f93 Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke Date: Tue, 12 Nov 2019 15:54:00 +0100 Subject: [PATCH 3/4] boards/stm32f030f4-demo: Use STM32 programmer conf --- boards/stm32f030f4-demo/Makefile.include | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/boards/stm32f030f4-demo/Makefile.include b/boards/stm32f030f4-demo/Makefile.include index aa3f38dfad..236f122411 100644 --- a/boards/stm32f030f4-demo/Makefile.include +++ b/boards/stm32f030f4-demo/Makefile.include @@ -1,18 +1,4 @@ INCLUDES += -I$(RIOTBOARD)/common/stm32/include -# configure the serial terminal -PORT_LINUX ?= /dev/ttyACM0 -PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*))) - -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk - -# stm32 boards can become un-flashable after a hardfault, -# use connect_assert_srst to always be able to flash or reset the boards. -export OPENOCD_RESET_USE_CONNECT_ASSERT_SRST ?= 1 - -# all Nucleo boards have an on-board ST-link adapter -DEBUG_ADAPTER ?= stlink - -# stlink use openocd -include $(RIOTMAKE)/tools/openocd.inc.mk +# Setup of programmer and serial is shared between STM32 based boards +include $(RIOTMAKE)/boards/stm32.inc.mk From c510ad858c3078af776e19efa6a36512758b0def Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke Date: Tue, 12 Nov 2019 15:53:18 +0100 Subject: [PATCH 4/4] boards/common/blxxxpill: Use STM32 programmer conf --- boards/common/blxxxpill/Makefile.include | 39 +++++------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/boards/common/blxxxpill/Makefile.include b/boards/common/blxxxpill/Makefile.include index cd49a07cb2..b63b73dfb3 100644 --- a/boards/common/blxxxpill/Makefile.include +++ b/boards/common/blxxxpill/Makefile.include @@ -1,36 +1,11 @@ INCLUDES += -I$(RIOTBOARD)/common/blxxxpill/include -# define the default port depending on the host OS -PORT_LINUX ?= /dev/ttyUSB0 -PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.SLAB_USBtoUART*))) +# For older versions of the DFU bootloader, set DFU_USB_ID to 1d50:6017 and +# uncomment the DFU_FLAGS line +DFU_USB_ID ?= 1eaf:0003 +#DFU_FLAGS ?= -s 0x08002000:leave -# setup serial terminal -include $(RIOTMAKE)/tools/serial.inc.mk +STLINK_VERSION ?= 2 -# optionally, use dfu-util to flash via usb -# note: needs a bootloader flashed before, config below is compatible -# with blackmagic_dfu, see https://github.com/blacksphere/blackmagic/ -# To stop bootloader from loading an existing firmware, pull down -# (ground) GPIO B1. -ifeq ($(PROGRAMMER),dfu-util) - export ROM_OFFSET ?= 0x2000 # Skip the space needed by the embedded bootloader - FLASHER = dfu-util - DEBUGGER = # no debugger - RESET ?= # dfu-util has no support for resetting the device - - FLASHFILE ?= $(BINFILE) - FFLAGS = -d 1eaf:0003 -a 2 -D $(FLASHFILE) - # for older bootloader versions use this: - # FFLAGS = -d 1d50:6017 -s 0x08002000:leave -D $(FLASHFILE) -else - - # this board uses openocd by default - DEBUG_ADAPTER ?= stlink - STLINK_VERSION ?= 2 - - # call a 'reset halt' command before starting the debugger - # it is required as `connect_assert_srst` is set - export OPENOCD_DBG_START_CMD = -c 'reset halt' - - include $(RIOTMAKE)/tools/openocd.inc.mk -endif +# Setup of programmer and serial is shared between STM32 based boards +include $(RIOTMAKE)/boards/stm32.inc.mk