mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 03:53:32 +01:00
make: Improve flash-fetch targets
- Add support MCU_FLASH_BANK_NAME to support multiple banks - Prefix binaries with TARGET_PRODUCT, if defined - Fix flash data for stm32f769i-disco Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
ed76759a42
commit
9c773838c7
7 changed files with 145 additions and 26 deletions
|
|
@ -22,24 +22,69 @@ endif
|
|||
|
||||
# -- build TAGGED_TMPL_TAGS cascade
|
||||
|
||||
TAGGED_TMPL_MAKEFILES = $(wildcard $(addsuffix .mk,$(foreach t,$(TAGGED_TMPL_DIRS),$(addprefix $(t)/,$(TAGGED_TMPL_TAGS)))))
|
||||
|
||||
ifneq ($(findstring st-nucleo-f103rb,$(TAGGED_TMPL_TAGS)),)
|
||||
TAGGED_TMPL_TAGS += cortex-m3
|
||||
MCU_BOARD_MODEL ?= ST-NUCLEO-F103RB
|
||||
BUILD_CPPFLAGS += -DST_NUCLEO_F103RB
|
||||
MCU_FLASH_OFFSET ?= 0x0000000
|
||||
MCU_FLASH_SIZE ?= 0x5000
|
||||
MCU_MEM_FETCH_OFFSET ?= 0x08000000
|
||||
MCU_MEM_FETCH_SIZE ?= $(MCU_FLASH_SIZE)
|
||||
#MCU_OPENOCD_CFG_NAME ?= openocd-$(MCU_BOARD_LC).cfg
|
||||
MODM_BSPS += modm:nucleo-f103rb
|
||||
endif
|
||||
MCU_FLASH_BANK_NAME ?= internal
|
||||
ifneq ($(MCU_FLASH_BANK_NAME),internal)
|
||||
$(error Unsupported flash bank name "$(MCU_FLASH_BANK_NAME)")
|
||||
endif
|
||||
else ifneq ($(findstring st-disco-f769i,$(TAGGED_TMPL_TAGS)),)
|
||||
TAGGED_TMPL_TAGS += cortex-m7
|
||||
MCU_BOARD_MODEL ?= ST-DISCO-F769I
|
||||
BUILD_CPPFLAGS += -DST_DISCO_F769I
|
||||
MCU_OPENOCD_CFG_NAME ?= openocd-stmqspi-st-stm32f769i-disco.cfg
|
||||
MCU_FLASH_BANK_NAME ?= external
|
||||
ifeq ($(MCU_FLASH_BANK_NAME),external)
|
||||
MCU_FLASH_OFFSET ?= 0x00000000
|
||||
MCU_FLASH_SIZE ?= 0x04000000
|
||||
MCU_MEM_FETCH_OFFSET ?= 0x90000000
|
||||
MCU_MEM_FETCH_SIZE ?= $(MCU_FLASH_SIZE)
|
||||
else ifeq ($(MCU_FLASH_BANK_NAME),internal)
|
||||
MCU_FLASH_OFFSET ?= 0x00000000
|
||||
MCU_FLASH_SIZE ?= 0x00200000
|
||||
MCU_MEM_FETCH_OFFSET ?= 0x08000000
|
||||
MCU_MEM_FETCH_SIZE ?= $(MCU_FLASH_SIZE)
|
||||
else
|
||||
$(error Unsupported flash bank name "$(MCU_FLASH_BANK_NAME)")
|
||||
endif
|
||||
ifeq ($(MCU_OPENOCD_CFG_NAME),openocd-stmqspi-st-stm32f769i-disco.cfg)
|
||||
ifeq ($(MCU_FLASH_BANK_NAME),external)
|
||||
MCU_FLASH_BANK ?= 1
|
||||
else ifeq ($(MCU_FLASH_BANK_NAME),internal)
|
||||
MCU_FLASH_BANK ?= 0
|
||||
endif
|
||||
else ifeq ($(MCU_OPENOCD_CFG_NAME),openocd-st-stm32f7discovery.cfg)
|
||||
ifeq ($(MCU_FLASH_BANK_NAME),external)
|
||||
MCU_FLASH_BANK ?= 2
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(findstring cortex-m3,$(TAGGED_TMPL_TAGS)),)
|
||||
TAGGED_TMPL_TAGS += cortex-m
|
||||
# modm:disco-f769ni (SIC), not disco-f769i. mbed does the same, despite the
|
||||
# fact that a board of this name doesn't exist.
|
||||
MODM_BSPS += modm:disco-f769ni
|
||||
endif
|
||||
|
||||
ifneq ($(findstring cortex-m,$(TAGGED_TMPL_TAGS)),)
|
||||
TAGGED_TMPL_TAGS += cortex
|
||||
TAGGED_TMPL_TAGS += cortex-m
|
||||
ifneq ($(findstring cortex-m3,$(TAGGED_TMPL_TAGS)),)
|
||||
TARGET_CPU = cortex-m3
|
||||
else ifneq ($(findstring cortex-m7,$(TAGGED_TMPL_TAGS)),)
|
||||
TARGET_CPU = cortex-m7
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq ($(findstring cortex-m3,$(TAGGED_TMPL_TAGS)),)
|
||||
TARGET_CPU = cortex-m3
|
||||
ifneq ($(findstring cortex,$(TAGGED_TMPL_TAGS)),)
|
||||
TAGGED_TMPL_TAGS += cortex
|
||||
endif
|
||||
|
||||
# ----- tool chain
|
||||
|
|
@ -206,10 +251,15 @@ endif
|
|||
|
||||
ifeq ($(TARGET_TRIPLET),arm-none-eabi)
|
||||
|
||||
ifneq ($(findstring $(TARGET_CPU),cortex-m3),)
|
||||
|
||||
ifeq ($(TARGET_CPU),cortex-m3)
|
||||
PROJECT_CPPFLAGS += -mcpu=cortex-m3 -mthumb
|
||||
PROJECT_LDFLAGS += -mcpu=cortex-m3 -mthumb
|
||||
else ifeq ($(TARGET_CPU),cortex-m7)
|
||||
PROJECT_CPPFLAGS += -mcpu=cortex-m7 -mthumb
|
||||
PROJECT_LDFLAGS += -mcpu=cortex-m7 -mthumb
|
||||
endif
|
||||
|
||||
ifneq ($(findstring cortex-m,$(TARGET_CPU)),)
|
||||
|
||||
# don't wrap error message lines
|
||||
#PROJECT_LDFLAGS += -fmessage-length=0
|
||||
|
|
|
|||
|
|
@ -116,7 +116,8 @@ install_local_cfg = $(INSTALL) -p -o $(CFGOWNER) -g $(CFGGROUP) -m $(
|
|||
cvs_files = sh $(MOD_SCRIPT_DIR)/scm.sh ls-files -f
|
||||
add_flavour_prefix = $(SED) "s/\([^ ][^ ]*\) *\([<>=]*\) *\([^ ]*\)/$(FLAVOUR_PREFIX)\1 \2 \3/g"
|
||||
beautify_lib_path = $(SED) 's/:/\n + /g'
|
||||
find_file = $(firstword $(wildcard $(addsuffix /$(1),$(patsubst :, ,$(2)))) $(1)-not-found)
|
||||
find_files = $(wildcard $(addsuffix /$(1),$(patsubst :, ,$(2))))
|
||||
find_file = $(firstword $(call find_files,$(1),$(2)) $(1)-not-found)
|
||||
|
||||
ifeq ($(INCLUDE_REV_IN_VERSIONS),true)
|
||||
version = $(shell $(CAT) $1/VERSION | $(SED) 's/-dev//; s/[ ]*//g')
|
||||
|
|
|
|||
|
|
@ -22,17 +22,33 @@
|
|||
|
||||
MCU_PRODUCT_TMPL_DIR ?= $(MODDIR)/tmpl/products
|
||||
|
||||
MCU_BOARD_MODEL_LC ?= $(shell echo $(MCU_BOARD_MODEL) | tr '[A-Z]' '[a-z]')
|
||||
MCU_BOARD ?= $(MCU_BOARD_MODEL)
|
||||
MCU_BOARD_LC ?= $(shell echo $(MCU_BOARD) | tr '[A-Z]' '[a-z]')
|
||||
ifneq ($(TARGET_PRODUCT),)
|
||||
MCU_BOARD_MODEL_LC ?= $(TARGET_PRODUCT)
|
||||
MCU_BOARD ?= $(TARGET_PRODUCT)
|
||||
MCU_BOARD_LC ?= $(TARGET_PRODUCT)
|
||||
else
|
||||
MCU_BOARD_MODEL_LC ?= $(shell echo $(MCU_BOARD_MODEL) | tr '[A-Z]' '[a-z]')
|
||||
MCU_BOARD ?= $(MCU_BOARD_MODEL)
|
||||
MCU_BOARD_LC ?= $(shell echo $(MCU_BOARD) | tr '[A-Z]' '[a-z]')
|
||||
endif
|
||||
|
||||
MCU_OPENOCD_CFG_NAME ?= openocd-$(MCU_BOARD_LC).cfg
|
||||
MCU_OPENOCD_CFG_DEFAULT_SEARCH_PATH ?= $(TOPDIR)/make
|
||||
MCU_OPENOCD_CFG_SEARCH_PATH ?= $(MCU_OPENOCD_CFG_DEFAULT_SEARCH_PATH)
|
||||
MCU_OPENOCD_CFG_FILE ?= $(call find_file,$(MCU_OPENOCD_CFG_NAME),$(MCU_OPENOCD_CFG_SEARCH_PATH))
|
||||
MCU_OPENOCD_OPTS ?= -f $(MCU_OPENOCD_CFG_FILE) -c "echo \"Started by jw-build\"" -c "gdb_port 3333" -c "telnet_port 4444" -c "tcl_port 6666"
|
||||
MCU_OPENOCD_CFG_FILE ?= $(info looking for $(MCU_OPENOCD_CFG_NAME) in $(MCU_OPENOCD_CFG_SEARCH_PATH)) $(call find_file,$(MCU_OPENOCD_CFG_NAME),$(MCU_OPENOCD_CFG_SEARCH_PATH))
|
||||
MCU_OPENOCD_TELNET_PORT ?= 4444
|
||||
MCU_OPENOCD_OPTS ?= -f $(MCU_OPENOCD_CFG_FILE) -c "echo \"Started by jw-build\"" -c "gdb_port 3333" -c "telnet_port $(MCU_OPENOCD_TELNET_PORT)" -c "tcl_port 6666"
|
||||
MCU_OPENOCD_BIN ?= openocd
|
||||
MCU_OPENOCD ?= $(MCU_OPENOCD_BIN) $(MCU_OPENOCD_OPTS)
|
||||
MCU_OPENOCD ?= $(MCU_OPENOCD_BIN) $(MCU_OPENOCD_OPTS) $(MCU_OPENOCD_EXTRA_OPTS)
|
||||
|
||||
# -- direct flash access
|
||||
MCU_FLASH_BANK ?= 0
|
||||
#MCU_FLASH_OFFSET ?= 0x0000000
|
||||
#MCU_FLASH_SIZE ?= 0x5000
|
||||
|
||||
MCU_FLASH_FILE_BASE ?= $(MCU_BOARD_LC)-flash-$(MCU_FLASH_BANK_NAME)
|
||||
MCU_FLASH_FILE_BIN ?= $(MCU_FLASH_FILE_BASE).bin
|
||||
MCU_FLASH_FILE_HEX ?= $(MCU_FLASH_FILE_BASE).hex
|
||||
|
||||
MCU_FLASH_FETCH_BANK ?= $(MCU_FLASH_BANK)
|
||||
MCU_FLASH_FETCH_FILE_BIN ?= $(MCU_FLASH_FILE_BIN)
|
||||
|
|
@ -46,12 +62,21 @@ MCU_FLASH_PUSH_FILE_HEX ?= $(MCU_FLASH_FILE_HEX)
|
|||
MCU_FLASH_PUSH_OFFSET ?= $(MCU_FLASH_OFFSET)
|
||||
MCU_FLASH_PUSH_SIZE ?= $(MCU_FLASH_SIZE)
|
||||
|
||||
MCU_FLASH_BANK ?= 0
|
||||
MCU_FLASH_FILE_BIN ?= $(TOPDIR)/bin/$(MCU_BOARD_LC).bin
|
||||
MCU_FLASH_FILE_HEX ?= $(TOPDIR)/bin/$(MCU_BOARD_LC).hex
|
||||
#MCU_FLASH_OFFSET ?= 0x0000000
|
||||
#MCU_FLASH_SIZE ?= 0x5000
|
||||
# -- direct memory access
|
||||
MCU_MEM_FETCH_FILE_BIN ?= $(MCU_MEM_FILE_BIN)
|
||||
MCU_MEM_FETCH_FILE_HEX ?= $(MCU_MEM_FILE_HEX)
|
||||
MCU_MEM_FETCH_OFFSET ?= $(MCU_FLASH_OFFSET)
|
||||
MCU_MEM_FETCH_SIZE ?= $(MCU_FLASH_SIZE)
|
||||
|
||||
ifneq ($(MCU_FLASH_FETCH_OFFSET),)
|
||||
MCU_OBJCOPY_FETCH_OPTS += --change-addresses $(MCU_FLASH_FETCH_OFFSET)
|
||||
MCU_MEM_PUSH_FILE_BIN ?= $(MCU_MEM_FILE_BIN)
|
||||
MCU_MEM_PUSH_FILE_HEX ?= $(MCU_MEM_FILE_HEX)
|
||||
MCU_MEM_PUSH_OFFSET ?= $(MCU_FLASH_OFFSET)
|
||||
MCU_MEM_PUSH_SIZE ?= $(MCU_FLASH_SIZE)
|
||||
|
||||
MCU_MEM_FILE_BASE ?= $(MCU_BOARD_LC)-mem-$(MCU_MEM_FETCH_OFFSET)-$(MCU_MEM_FETCH_SIZE)
|
||||
MCU_MEM_FILE_BIN ?= $(MCU_MEM_FILE_BASE).bin
|
||||
MCU_MEM_FILE_HEX ?= $(MCU_MEM_FILE_BASE).hex
|
||||
|
||||
ifneq ($(MCU_MEM_FETCH_OFFSET),)
|
||||
MCU_OBJCOPY_FETCH_OPTS += --change-addresses $(MCU_MEM_FETCH_OFFSET)
|
||||
endif
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ DIR_BASENAME = $(notdir $(CWD))
|
|||
|
||||
ifeq ($(EXE_BASENAME),)
|
||||
ifneq ($(DIR_BASENAME),test)
|
||||
EXE_BASENAME = $(DIR_BASENAME).elf
|
||||
EXE_BASENAME = $(EXE_BASENAME_PREFIX)$(DIR_BASENAME).elf
|
||||
else
|
||||
EXE_BASENAME = test-$(notdir $(shell cd ..; $(PWD))).elf
|
||||
EXE_BASENAME = $(EXE_BASENAME_PREFIX)test-$(notdir $(shell cd ..; $(PWD))).elf
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
@ -16,6 +16,7 @@ include $(MODDIR)/make/exe.mk
|
|||
include $(MODDIR)/make/mcu-flash.mk
|
||||
|
||||
all: $(MCU_FLASH_PUSH_FILE_HEX)
|
||||
|
||||
clean: mcu-exe.clean
|
||||
|
||||
mcu-exe.clean:
|
||||
|
|
|
|||
|
|
@ -3,14 +3,21 @@
|
|||
all:
|
||||
|
||||
flash-fetch: $(MCU_FLASH_FETCH_FILE_HEX)
|
||||
flash-fetch-mem: $(MCU_MEM_FETCH_FILE_HEX)
|
||||
clean: flash-clean-fetch
|
||||
flash-clean-fetch:
|
||||
rm -f $(MCU_FLASH_FETCH_FILE_BIN) $(MCU_FLASH_FETCH_FILE_HEX) *.tmp
|
||||
rm -f $(MCU_MEM_FETCH_FILE_BIN) $(MCU_MEM_FETCH_FILE_HEX)
|
||||
flash-clean-push:
|
||||
rm -f $(MCU_FLASH_PUSH_FILE_BIN) $(MCU_FLASH_PUSH_FILE_HEX) *.tmp
|
||||
rm -f $(MCU_MEM_PUSH_FILE_BIN) $(MCU_MEM_PUSH_FILE_HEX)
|
||||
flash-clean: flash-clean-fetch flash-clean-push
|
||||
$(MCU_FLASH_FETCH_FILE_BIN):
|
||||
$(MCU_OPENOCD) -c "init" -c "reset init" -c "flash read_bank $(MCU_FLASH_FETCH_BANK) $@.tmp $(MCU_FLASH_FETCH_OFFSET) $(MCU_FLASH_FETCH_SIZE)" -c "exit"
|
||||
mv $@.tmp $@
|
||||
$(MCU_MEM_FETCH_FILE_BIN):
|
||||
$(MCU_OPENOCD) -c "init" -c "reset init" -c "dump_image $@.tmp $(MCU_MEM_FETCH_OFFSET) $(MCU_MEM_FETCH_SIZE)" -c "exit"
|
||||
mv $@.tmp $@
|
||||
%.hex: %.elf
|
||||
$(OBJCOPY) -O ihex $< $@.tmp
|
||||
mv $@.tmp $@
|
||||
|
|
@ -25,3 +32,14 @@ flash-push:
|
|||
$(MCU_OPENOCD) -c "program $(MCU_FLASH_PUSH_FILE_HEX) verify reset exit $(MCU_FLASH_PUSH_OFFSET)"
|
||||
%-flash-push:
|
||||
MCU_FLASH_PUSH_FILE_HEX=$* make flash-push
|
||||
|
||||
openocd:
|
||||
$(MCU_OPENOCD)
|
||||
openocd-bg:
|
||||
$(MCU_OPENOCD) &
|
||||
openocd-reset-bg:
|
||||
$(MCU_OPENOCD) -c "init" -c "reset init" &
|
||||
openocd-kill:
|
||||
killall $(MCU_OPENOCD_BIN)
|
||||
openocd-telnet:
|
||||
telnet localhost $(MCU_OPENOCD_TELNET_PORT)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,26 @@ ifndef GET_OS_SH
|
|||
GET_OS_SH := $(SHELL) $(MOD_SCRIPT_DIR)/get-os.sh
|
||||
endif
|
||||
|
||||
# -- product
|
||||
|
||||
TARGET_PRODUCTS_ARM_NONE_EABI = \
|
||||
st-nucleo-f103rb \
|
||||
st-disco-f769i
|
||||
|
||||
TAGGED_TMPL_TAGS_ARM_NONE_EABI ?= $(TARGET_PRODUCTS_ARM_NONE_EABI)
|
||||
|
||||
TARGET_PRODUCTS += \
|
||||
$(TARGET_PRODUCTS_ARM_NONE_EABI)
|
||||
TARGET_PRODUCT = $(firstword $(foreach t,$(TAGGED_TMPL_TAGS),$(filter $(t),$(TARGET_PRODUCTS))))
|
||||
|
||||
TAGGED_TMPL_MAKEFILES = $(wildcard $(addsuffix .mk,$(foreach t,$(TAGGED_TMPL_DIRS),$(addprefix $(t)/,$(TAGGED_TMPL_TAGS)))))
|
||||
|
||||
ifneq ($(foreach t,$(TAGGED_TMPL_TAGS),$(filter $(t),$(TAGGED_TMPL_TAGS_ARM_NONE_EABI))),)
|
||||
TARGET_TRIPLET ?= arm-none-eabi
|
||||
endif
|
||||
|
||||
# -- arch, vendor, os, libc
|
||||
|
||||
ifeq ($(HOST_TUPLE),)
|
||||
HOST_TUPLE := $(shell $(GET_OS_SH) tuple)
|
||||
HOST_TUPLE_WORDS := $(subst -, ,$(HOST_TUPLE))
|
||||
|
|
|
|||
|
|
@ -8,11 +8,15 @@ include $(MODDIR)/make/defs-cpp.mk
|
|||
|
||||
DIR_BASENAME = $(notdir $(CWD))
|
||||
|
||||
ifneq ($(TARGET_PRODUCT),)
|
||||
EXE_BASENAME_PREFIX ?= $(TARGET_PRODUCT)-
|
||||
endif
|
||||
|
||||
ifeq ($(EXE_BASENAME),)
|
||||
ifneq ($(DIR_BASENAME),test)
|
||||
EXE_BASENAME = $(DIR_BASENAME)
|
||||
EXE_BASENAME = $(EXE_BASENAME_PREFIX)$(DIR_BASENAME)
|
||||
else
|
||||
EXE_BASENAME = test-$(notdir $(shell cd ..; $(PWD)))
|
||||
EXE_BASENAME = $(EXE_BASENAME_PREFIX)test-$(notdir $(shell cd ..; $(PWD)))
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue