191 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
		
		
			
		
	
	
			191 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| 
								 | 
							
								MSDK_LIB = hw/mcu/analog/msdk/Libraries
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Add any board specific make rules
							 | 
						||
| 
								 | 
							
								include $(TOP)/$(BOARD_PATH)/board.mk
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CPU_CORE ?= cortex-m4
							 | 
						||
| 
								 | 
							
								PORT ?= 0
							 | 
						||
| 
								 | 
							
								JLINK_DEVICE = ${MAX_DEVICE}
							 | 
						||
| 
								 | 
							
								MAX_DEVICE_UPPER = $(call to_upper,${MAX_DEVICE})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq ($(MAX_DEVICE),max32650)
							 | 
						||
| 
								 | 
							
								  PERIPH_ID = 10
							 | 
						||
| 
								 | 
							
								  PERIPH_SUFFIX = me
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifneq ($(filter $(MAX_DEVICE),max32665 max32666),)
							 | 
						||
| 
								 | 
							
								  PERIPH_ID = 14
							 | 
						||
| 
								 | 
							
								  PERIPH_SUFFIX = me
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq ($(MAX_DEVICE),max32690)
							 | 
						||
| 
								 | 
							
								  PERIPH_ID = 18
							 | 
						||
| 
								 | 
							
								  PERIPH_SUFFIX = me
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq ($(MAX_DEVICE),max78002)
							 | 
						||
| 
								 | 
							
								  PERIPH_ID = 87
							 | 
						||
| 
								 | 
							
								  PERIPH_SUFFIX = ai
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifndef PERIPH_ID
							 | 
						||
| 
								 | 
							
								  $(error Unsupported MAX device: ${MAX_DEVICE})
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Configure the flash rule. By default, use JLink.
							 | 
						||
| 
								 | 
							
								SIGNED_BUILD ?= 0
							 | 
						||
| 
								 | 
							
								DEFAULT_FLASH = flash-jlink
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# --------------
							 | 
						||
| 
								 | 
							
								# Compiler Flags
							 | 
						||
| 
								 | 
							
								# --------------
							 | 
						||
| 
								 | 
							
								CFLAGS += \
							 | 
						||
| 
								 | 
							
								  -DTARGET=${MAX_DEVICE_UPPER}\
							 | 
						||
| 
								 | 
							
								  -DTARGET_REV=0x4131 \
							 | 
						||
| 
								 | 
							
									-DMXC_ASSERT_ENABLE \
							 | 
						||
| 
								 | 
							
									-D${MAX_DEVICE_UPPER} \
							 | 
						||
| 
								 | 
							
									-DIAR_PRAGMAS=0 \
							 | 
						||
| 
								 | 
							
									-DMAX_PERIPH_ID=${PERIPH_ID} \
							 | 
						||
| 
								 | 
							
								  -DCFG_TUSB_MCU=OPT_MCU_${MAX_DEVICE_UPPER} \
							 | 
						||
| 
								 | 
							
								  -DBOARD_TUD_MAX_SPEED=OPT_MODE_HIGH_SPEED
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# mcu driver cause following warnings
							 | 
						||
| 
								 | 
							
								CFLAGS += \
							 | 
						||
| 
								 | 
							
									-Wno-error=old-style-declaration \
							 | 
						||
| 
								 | 
							
									-Wno-error=redundant-decls \
							 | 
						||
| 
								 | 
							
								  -Wno-error=strict-prototypes \
							 | 
						||
| 
								 | 
							
									-Wno-error=unused-parameter \
							 | 
						||
| 
								 | 
							
									-Wno-error=cast-align \
							 | 
						||
| 
								 | 
							
									-Wno-error=cast-qual \
							 | 
						||
| 
								 | 
							
									-Wno-error=sign-compare \
							 | 
						||
| 
								 | 
							
									-Wno-error=enum-conversion \
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LDFLAGS_GCC += -nostartfiles --specs=nosys.specs --specs=nano.specs
							 | 
						||
| 
								 | 
							
								LD_FILE_GCC ?= $(FAMILY_PATH)/linker/${MAX_DEVICE}.ld
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If the applications needs to be signed (for the MAX32651), sign it first and
							 | 
						||
| 
								 | 
							
								# then need to use MSDK's OpenOCD to flash it
							 | 
						||
| 
								 | 
							
								# Also need to include the __SLA_FWK__ define to enable the signed header into
							 | 
						||
| 
								 | 
							
								# memory
							 | 
						||
| 
								 | 
							
								ifeq ($(SIGNED_BUILD), 1)
							 | 
						||
| 
								 | 
							
								# Extra definitions to build for the secure part
							 | 
						||
| 
								 | 
							
								CFLAGS += -D__SLA_FWK__
							 | 
						||
| 
								 | 
							
								DEFAULT_FLASH := sign-build flash-msdk
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# -----------------
							 | 
						||
| 
								 | 
							
								# Sources & Include
							 | 
						||
| 
								 | 
							
								# -----------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# common
							 | 
						||
| 
								 | 
							
								SRC_C += \
							 | 
						||
| 
								 | 
							
									src/portable/mentor/musb/dcd_musb.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/CMSIS/Device/Maxim/${MAX_DEVICE_UPPER}/Source/heap.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/CMSIS/Device/Maxim/${MAX_DEVICE_UPPER}/Source/system_${MAX_DEVICE}.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/SYS/mxc_assert.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/SYS/mxc_delay.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/SYS/mxc_lock.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/SYS/nvic_table.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/SYS/pins_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/SYS/sys_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/FLC/flc_common.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/FLC/flc_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/FLC/flc_reva.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/GPIO/gpio_common.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/GPIO/gpio_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/GPIO/gpio_reva.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/ICC/icc_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/ICC/icc_reva.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/UART/uart_common.c \
							 | 
						||
| 
								 | 
							
									${MSDK_LIB}/PeriphDrivers/Source/UART/uart_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SRC_S_GCC += ${MSDK_LIB}/CMSIS/Device/Maxim/${MAX_DEVICE_UPPER}/Source/GCC/startup_${MAX_DEVICE}.S
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								INC += \
							 | 
						||
| 
								 | 
							
									$(TOP)/$(BOARD_PATH) \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/CMSIS/5.9.0/Core/Include \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/CMSIS/Device/Maxim/${MAX_DEVICE_UPPER}/Include \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/PeriphDrivers/Include/${MAX_DEVICE_UPPER} \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/PeriphDrivers/Source/SYS \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/PeriphDrivers/Source/GPIO \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/PeriphDrivers/Source/ICC \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/PeriphDrivers/Source/FLC \
							 | 
						||
| 
								 | 
							
									$(TOP)/${MSDK_LIB}/PeriphDrivers/Source/UART \
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# device specific
							 | 
						||
| 
								 | 
							
								ifneq ($(filter $(MAX_DEVICE),max32650 max32665 max32666),)
							 | 
						||
| 
								 | 
							
								  SRC_C += \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/ICC/icc_common.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/TPU/tpu_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/TPU/tpu_reva.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/UART/uart_reva.c \
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  INC += $(TOP)/${MSDK_LIB}/PeriphDrivers/Source/TPU
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq (${MAX_DEVICE},max32690)
							 | 
						||
| 
								 | 
							
								  SRC_C += \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/CTB/ctb_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/CTB/ctb_reva.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/CTB/ctb_common.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/UART/uart_revb.c \
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  INC += ${TOP}/${MSDK_LIB}/PeriphDrivers/Source/CTB
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ifeq (${MAX_DEVICE},max78002)
							 | 
						||
| 
								 | 
							
								  SRC_C += \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/AES/aes_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/AES/aes_revb.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/TRNG/trng_${PERIPH_SUFFIX}${PERIPH_ID}.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/TRNG/trng_revb.c \
							 | 
						||
| 
								 | 
							
										${MSDK_LIB}/PeriphDrivers/Source/UART/uart_revb.c \
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  INC += \
							 | 
						||
| 
								 | 
							
										${TOP}/${MSDK_LIB}/PeriphDrivers/Source/AES \
							 | 
						||
| 
								 | 
							
										${TOP}/${MSDK_LIB}/PeriphDrivers/Source/TRNG
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The MAX32651EVKIT is pin for pin identical to the MAX32650EVKIT, however the
							 | 
						||
| 
								 | 
							
								# MAX32651 has a secure bootloader which requires the image to be signed before
							 | 
						||
| 
								 | 
							
								# loading into flash. All MAX32651EVKIT's have the same key for evaluation
							 | 
						||
| 
								 | 
							
								# purposes, so create a special flash rule to sign the binary and flash using
							 | 
						||
| 
								 | 
							
								# the MSDK.
							 | 
						||
| 
								 | 
							
								MCU_PATH = $(TOP)/hw/mcu/analog/msdk/
							 | 
						||
| 
								 | 
							
								# Assume no extension for sign utility
							 | 
						||
| 
								 | 
							
								SIGN_EXE = sign_app
							 | 
						||
| 
								 | 
							
								ifeq ($(OS), Windows_NT)
							 | 
						||
| 
								 | 
							
								# Must use .exe extension on Windows, since the binaries
							 | 
						||
| 
								 | 
							
								# for Linux may live in the same place.
							 | 
						||
| 
								 | 
							
								SIGN_EXE := sign_app.exe
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								UNAME = $(shell uname -s)
							 | 
						||
| 
								 | 
							
								ifneq ($(findstring MSYS_NT,$(UNAME)),)
							 | 
						||
| 
								 | 
							
								# Must also use .exe extension for MSYS2
							 | 
						||
| 
								 | 
							
								SIGN_EXE := sign_app.exe
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Rule to sign the build.  This will in-place modify the existing .elf file
							 | 
						||
| 
								 | 
							
								# an populate the .sig section with the signature value
							 | 
						||
| 
								 | 
							
								sign-build: $(BUILD)/$(PROJECT).elf
							 | 
						||
| 
								 | 
							
									$(OBJCOPY) $(BUILD)/$(PROJECT).elf -R .sig -O binary $(BUILD)/$(PROJECT).bin
							 | 
						||
| 
								 | 
							
									$(MCU_PATH)/Tools/SBT/bin/$(SIGN_EXE) -c MAX32651 \
							 | 
						||
| 
								 | 
							
										key_file="$(MCU_PATH)/Tools/SBT/devices/MAX32651/keys/maximtestcrk.key" \
							 | 
						||
| 
								 | 
							
										ca=$(BUILD)/$(PROJECT).bin sca=$(BUILD)/$(PROJECT).sbin
							 | 
						||
| 
								 | 
							
									$(OBJCOPY) $(BUILD)/$(PROJECT).elf --update-section .sig=$(BUILD)/$(PROJECT).sig
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Optional flash option when running within an installed MSDK to use OpenOCD
							 | 
						||
| 
								 | 
							
								# Mainline OpenOCD does not yet have the MAX32's flash algorithm integrated.
							 | 
						||
| 
								 | 
							
								# If the MSDK is installed, flash-msdk can be run to utilize the the modified
							 | 
						||
| 
								 | 
							
								# openocd with the algorithms
							 | 
						||
| 
								 | 
							
								MAXIM_PATH := $(subst \,/,$(MAXIM_PATH))
							 | 
						||
| 
								 | 
							
								flash-msdk: $(BUILD)/$(PROJECT).elf
							 | 
						||
| 
								 | 
							
									$(MAXIM_PATH)/Tools/OpenOCD/openocd -s $(MAXIM_PATH)/Tools/OpenOCD/scripts \
							 | 
						||
| 
								 | 
							
										-f interface/cmsis-dap.cfg -f target/max32650.cfg \
							 | 
						||
| 
								 | 
							
										-c "program $(BUILD)/$(PROJECT).elf verify; init; reset; exit"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Configure the flash rule
							 | 
						||
| 
								 | 
							
								flash: $(DEFAULT_FLASH)
							 |