-
Notifications
You must be signed in to change notification settings - Fork 2k
/
Copy pathstm32.inc.mk
65 lines (59 loc) · 2.3 KB
/
stm32.inc.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
PROGRAMMER ?= openocd
PROGRAMMERS_SUPPORTED += bmp dfu-util openocd stm32flash
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*)))
endif
# STM32 boards can become un-flashable after a hardfault,
# use connect_assert_srst to always be able to flash or reset the boards.
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
OPENOCD_DEBUG_ADAPTER ?= stlink
JLINK_DEVICE ?= $(CPU_MODEL)
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
endif
ifeq (stm32flash,$(PROGRAMMER))
ROM_OFFSET ?= 0x0
FLASHER = stm32flash
DEBUGGER =
FLASHFILE ?= $(BINFILE)
PROG_BAUD ?= 57600
BIN_ADDR ?= $(shell echo $$(($(ROM_START_ADDR) + $(ROM_OFFSET))))
STM32FLASH_RESET ?= 0
STM32FLASH_RESET_INVERT ?= 1
# sequence to reset board into bootloader:
# BOOT0 --> HIGH, RST --> LOW
# BOOT0 --> HIGH, RST --> HIGH
# sequence to reset board into application
# BOOT0 --> LOW, RST --> LOW
# BOOT0 --> LOW, RST --> HIGH
# This can be done via a TTL adapter when BOOT0 is connected to RTS and
# RST is connected to DTR
ifeq (1,$(STM32FLASH_RESET))
# The TTL adapter this was tested with actually has inverted outputs. But
# we can just support both via a simple flag:
ifeq (1,$(STM32FLASH_RESET_INVERT))
FFLAGS += -i '-rts,dtr,-dtr:rts,dtr,-dtr'
# set term flags so BOOT0 is low and RST is high
MINITERMFLAGS += --rts 1 --dtr 0
PYTERMFLAGS += --set-rts 1 --set-dtr 0
else
FFLAGS += -i 'rts,-dtr,dtr:-rts,-dtr,dtr'
# set term flags so BOOT0 is low and RST is high
MINITERMFLAGS += --rts 0 --dtr 1
PYTERMFLAGS += --set-rts 0 --set-dtr 1
endif
endif
FFLAGS += -v -b $(PROG_BAUD) -w $(FLASHFILE) -S $(BIN_ADDR) -g $(BIN_ADDR) $(PORT)
endif