alif: Support building the port for HE or HP or both cores.
With this new Makefile you can build the following:
make BOARD=MY_BOARD MCU_CORE=M55_HP # build HP firmware/ToC.
make BOARD=MY_BOARD MCU_CORE=M55_HE # build HE firmware/ToC.
make BOARD=MY_BOARD MCU_CORE=M55_DUAL # build HE+HP firmware + ToC.
Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
This commit is contained in:
committed by
Damien George
parent
b7df5aa86a
commit
8f82089bd0
@@ -1,242 +1,96 @@
|
|||||||
################################################################################
|
|
||||||
# Initial setup of Makefile environment
|
|
||||||
|
|
||||||
BOARD ?= ALIF_ENSEMBLE
|
BOARD ?= ALIF_ENSEMBLE
|
||||||
BOARD_DIR ?= boards/$(BOARD)
|
BOARD_DIR ?= boards/$(BOARD)
|
||||||
BUILD ?= build-$(BOARD)
|
BUILD ?= build-$(BOARD)
|
||||||
|
MCU_CORE ?= M55_HP
|
||||||
ifeq ($(wildcard $(BOARD_DIR)/.),)
|
|
||||||
$(error Invalid BOARD specified: $(BOARD_DIR))
|
|
||||||
endif
|
|
||||||
|
|
||||||
include ../../py/mkenv.mk
|
|
||||||
include mpconfigport.mk
|
|
||||||
include $(BOARD_DIR)/mpconfigboard.mk
|
|
||||||
|
|
||||||
# qstr definitions (must come before including py.mk)
|
|
||||||
QSTR_DEFS += qstrdefsport.h
|
|
||||||
|
|
||||||
# include py core make definitions
|
|
||||||
include $(TOP)/py/py.mk
|
|
||||||
include $(TOP)/extmod/extmod.mk
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Project specific settings and compiler/linker flags
|
|
||||||
|
|
||||||
CROSS_COMPILE ?= arm-none-eabi-
|
|
||||||
GIT_SUBMODULES += lib/tinyusb lib/alif_ensemble-cmsis-dfp lib/alif-security-toolkit
|
GIT_SUBMODULES += lib/tinyusb lib/alif_ensemble-cmsis-dfp lib/alif-security-toolkit
|
||||||
PORT ?= /dev/ttyACM0
|
PORT ?= /dev/ttyACM0
|
||||||
|
|
||||||
ALIF_TOOLS ?= ../../lib/alif-security-toolkit/toolkit
|
ALIF_TOOLS ?= ../../lib/alif-security-toolkit/toolkit
|
||||||
ALIF_DFP_REL_TOP ?= lib/alif_ensemble-cmsis-dfp
|
|
||||||
ALIF_DFP_REL_HERE ?= $(TOP)/lib/alif_ensemble-cmsis-dfp
|
|
||||||
CMSIS_DIR ?= $(TOP)/lib/cmsis/inc
|
|
||||||
|
|
||||||
MCU_CORE ?= M55_HP
|
JLINK_CMD_PREFIX = \
|
||||||
ALIF_CONFIG ?= mcu/$(MCU_CORE)_cfg.json
|
|
||||||
LD_FILE ?= mcu/ensemble.ld.S
|
|
||||||
|
|
||||||
INC += -I.
|
|
||||||
INC += -I$(TOP)
|
|
||||||
INC += -I$(BUILD)
|
|
||||||
INC += -I$(BOARD_DIR)
|
|
||||||
INC += -I$(CMSIS_DIR)
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/drivers/include/
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/se_services/include/
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/ospi_xip/source/ospi
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/Device/common/config/
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/Device/common/include/
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/Device/core/$(MCU_CORE)/config/
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/Device/core/$(MCU_CORE)/include/
|
|
||||||
INC += -I$(ALIF_DFP_REL_HERE)/Device/$(MCU_SERIES)/$(MCU_VARIANT)/
|
|
||||||
INC += -I$(TOP)/lib/tinyusb/src
|
|
||||||
INC += -Itinyusb_port
|
|
||||||
|
|
||||||
GEN_PIN_MKPINS = mcu/make-pins.py
|
|
||||||
GEN_PIN_PREFIX = mcu/pins_prefix.c
|
|
||||||
GEN_PINS_BOARD_CSV = $(BOARD_DIR)/pins.csv
|
|
||||||
GEN_PINS_SRC = $(BUILD)/pins_board.c
|
|
||||||
GEN_PINS_HDR = $(HEADER_BUILD)/pins_board.h
|
|
||||||
|
|
||||||
CFLAGS_FPU += -mfloat-abi=hard -mfpu=fpv5-d16
|
|
||||||
CFLAGS_CORTEX_M55 += -mthumb -mcpu=cortex-m55 -mtune=cortex-m55 $(CFLAGS_FPU)
|
|
||||||
|
|
||||||
CFLAGS += $(INC) -Wall -Werror -std=c99 $(CFLAGS_CORTEX_M55) -nostdlib
|
|
||||||
CFLAGS += -Wdouble-promotion -Wfloat-conversion
|
|
||||||
CFLAGS += -fdata-sections -ffunction-sections
|
|
||||||
CFLAGS += -D$(MCU_CORE) -DCORE_$(MCU_CORE) -DALIF_CMSIS_H="\"$(MCU_CORE).h\""
|
|
||||||
|
|
||||||
ifeq ($(MICROPY_FLOAT_IMPL),float)
|
|
||||||
CFLAGS += -fsingle-precision-constant
|
|
||||||
CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_FLOAT
|
|
||||||
else
|
|
||||||
CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_DOUBLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
AFLAGS = -mthumb -march=armv8.1-m.main $(CFLAGS_FPU)
|
|
||||||
|
|
||||||
LDFLAGS += -nostdlib
|
|
||||||
LDFLAGS += -T$(BUILD)/ensemble.ld -Map=$@.map --cref --gc-sections
|
|
||||||
LDFLAGS += --wrap=dcd_event_handler
|
|
||||||
|
|
||||||
# Tune for Debugging or Optimization
|
|
||||||
ifeq ($(DEBUG), 1)
|
|
||||||
CFLAGS += -Og -ggdb3
|
|
||||||
# Disable text compression in debug builds
|
|
||||||
MICROPY_ROM_TEXT_COMPRESSION = 0
|
|
||||||
else
|
|
||||||
CFLAGS += -O2 -DNDEBUG
|
|
||||||
endif
|
|
||||||
|
|
||||||
LIBS += "$(shell $(CC) $(CFLAGS) -print-libgcc-file-name)"
|
|
||||||
|
|
||||||
JLINK_CMD = '\
|
|
||||||
ExitOnError 1\n\
|
ExitOnError 1\n\
|
||||||
Device $(JLINK_DEV)\n\
|
Device $(JLINK_DEV)\n\
|
||||||
SelectInterface SWD\n\
|
SelectInterface SWD\n\
|
||||||
Speed auto\n\
|
Speed auto\n\
|
||||||
Connect\n\
|
Connect\n\
|
||||||
Reset\n\
|
Reset\n\
|
||||||
ShowHWStatus\n\
|
ShowHWStatus\n
|
||||||
LoadFile "$(BUILD)/firmware_toc.bin",0x8057f1c0\n\
|
|
||||||
LoadFile "$(BUILD)/firmware.bin",0x80000000\n\
|
JLINK_CMD_SUFFIX = \
|
||||||
Reset\n\
|
Reset\n\
|
||||||
Exit'
|
Exit
|
||||||
|
|
||||||
################################################################################
|
ifeq ($(MCU_CORE),M55_HP)
|
||||||
# Source files and libraries
|
|
||||||
|
|
||||||
SRC_O += \
|
ALIF_TOC_CONFIG = mcu/M55_HP_cfg.json
|
||||||
shared/runtime/gchelper_thumb2.o
|
ALIF_TOC_APPS = $(BUILD)/M55_HP/firmware.bin
|
||||||
|
JLINK_CMD = '\
|
||||||
|
$(JLINK_CMD_PREFIX)\
|
||||||
|
LoadFile "$(BUILD)/M55_HP/firmware.bin",0x80020000\n\
|
||||||
|
$(JLINK_CMD_SUFFIX)'
|
||||||
|
|
||||||
SRC_C = \
|
else ifeq ($(MCU_CORE),M55_HE)
|
||||||
alif_flash.c \
|
|
||||||
fatfs_port.c \
|
ALIF_TOC_CONFIG = mcu/M55_HE_cfg.json
|
||||||
machine_pin.c \
|
ALIF_TOC_APPS = $(BUILD)/M55_HE/firmware.bin
|
||||||
main.c \
|
JLINK_CMD = '\
|
||||||
modalif.c \
|
$(JLINK_CMD_PREFIX)\
|
||||||
mphalport.c \
|
LoadFile "$(BUILD)/M55_HE/firmware.bin",0x80320000\n\
|
||||||
mpuart.c \
|
$(JLINK_CMD_SUFFIX)'
|
||||||
msc_disk.c \
|
|
||||||
ospi_flash.c \
|
else ifeq ($(MCU_CORE),M55_DUAL)
|
||||||
pendsv.c \
|
|
||||||
system_tick.c \
|
ALIF_TOC_CONFIG = mcu/M55_DUAL_cfg.json
|
||||||
se_services.c \
|
ALIF_TOC_APPS = $(BUILD)/M55_HP/firmware.bin $(BUILD)/M55_HE/firmware.bin
|
||||||
usbd.c \
|
JLINK_CMD = '\
|
||||||
$(wildcard $(BOARD_DIR)/*.c)
|
$(JLINK_CMD_PREFIX)\
|
||||||
|
LoadFile "$(BUILD)/M55_HP/firmware.bin",0x80020000\n\
|
||||||
|
LoadFile "$(BUILD)/M55_HE/firmware.bin",0x80320000\n\
|
||||||
|
$(JLINK_CMD_SUFFIX)'
|
||||||
|
|
||||||
ifeq ($(MICROPY_FLOAT_IMPL),float)
|
|
||||||
LIBM_SRC_C += $(SRC_LIB_LIBM_C)
|
|
||||||
LIBM_SRC_C += $(SRC_LIB_LIBM_SQRT_HW_C)
|
|
||||||
$(BUILD)/lib/libm/%.o: CFLAGS += -Wno-maybe-uninitialized
|
|
||||||
else
|
else
|
||||||
LIBM_SRC_C += $(SRC_LIB_LIBM_DBL_C)
|
$(error Invalid MCU core specified))
|
||||||
LIBM_SRC_C += $(SRC_LIB_LIBM_DBL_SQRT_HW_C)
|
|
||||||
$(BUILD)/lib/libm_dbl/%.o: CFLAGS += -Wno-maybe-uninitialized
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SHARED_SRC_C += $(addprefix shared/,\
|
include ../../py/mkenv.mk
|
||||||
libc/string0.c \
|
include mpconfigport.mk
|
||||||
netutils/dhcpserver.c \
|
include $(BOARD_DIR)/mpconfigboard.mk
|
||||||
netutils/netutils.c \
|
|
||||||
netutils/trace.c \
|
|
||||||
readline/readline.c \
|
|
||||||
runtime/gchelper_native.c \
|
|
||||||
runtime/interrupt_char.c \
|
|
||||||
runtime/mpirq.c \
|
|
||||||
runtime/pyexec.c \
|
|
||||||
runtime/softtimer.c \
|
|
||||||
runtime/stdout_helpers.c \
|
|
||||||
runtime/sys_stdio_mphal.c \
|
|
||||||
timeutils/timeutils.c \
|
|
||||||
tinyusb/mp_usbd.c \
|
|
||||||
tinyusb/mp_usbd_cdc.c \
|
|
||||||
tinyusb/mp_usbd_descriptor.c \
|
|
||||||
)
|
|
||||||
|
|
||||||
DRIVERS_SRC_C += $(addprefix drivers/,\
|
# include py core make definitions
|
||||||
bus/softspi.c \
|
include $(TOP)/py/py.mk
|
||||||
bus/softqspi.c \
|
include $(TOP)/extmod/extmod.mk
|
||||||
memory/spiflash.c \
|
|
||||||
dht/dht.c \
|
|
||||||
)
|
|
||||||
|
|
||||||
TINYUSB_SRC_C += \
|
|
||||||
lib/tinyusb/src/tusb.c \
|
|
||||||
lib/tinyusb/src/class/cdc/cdc_device.c \
|
|
||||||
lib/tinyusb/src/class/msc/msc_device.c \
|
|
||||||
lib/tinyusb/src/common/tusb_fifo.c \
|
|
||||||
lib/tinyusb/src/device/usbd.c \
|
|
||||||
lib/tinyusb/src/device/usbd_control.c \
|
|
||||||
tinyusb_port/tusb_alif_dcd.c \
|
|
||||||
|
|
||||||
ALIF_SRC_C += $(addprefix $(ALIF_DFP_REL_TOP)/,\
|
|
||||||
Device/common/source/clk.c \
|
|
||||||
Device/common/source/mpu_M55.c \
|
|
||||||
Device/common/source/system_M55.c \
|
|
||||||
Device/common/source/system_utils.c \
|
|
||||||
Device/core/$(MCU_CORE)/source/startup_$(MCU_CORE).c \
|
|
||||||
drivers/source/adc.c \
|
|
||||||
drivers/source/mhu_driver.c \
|
|
||||||
drivers/source/mhu_receiver.c \
|
|
||||||
drivers/source/mhu_sender.c \
|
|
||||||
drivers/source/pinconf.c \
|
|
||||||
drivers/source/uart.c \
|
|
||||||
drivers/source/utimer.c \
|
|
||||||
ospi_xip/source/ospi/ospi_drv.c \
|
|
||||||
se_services/source/services_host_application.c \
|
|
||||||
se_services/source/services_host_boot.c \
|
|
||||||
se_services/source/services_host_clocks.c \
|
|
||||||
se_services/source/services_host_cryptocell.c \
|
|
||||||
se_services/source/services_host_handler.c \
|
|
||||||
se_services/source/services_host_system.c \
|
|
||||||
)
|
|
||||||
|
|
||||||
$(BUILD)/tinyusb_port/tusb_alif_dcd.o: CFLAGS += -Wno-unused-variable -DTUSB_ALIF_NO_IRQ_CFG=1
|
|
||||||
$(BUILD)/$(ALIF_DFP_REL_TOP)/se_services/source/services_host_boot.o: CFLAGS += -Wno-stringop-truncation
|
|
||||||
|
|
||||||
# List of sources for qstr extraction
|
|
||||||
SRC_QSTR += $(SRC_C) $(SHARED_SRC_C) $(GEN_PINS_SRC)
|
|
||||||
|
|
||||||
OBJ += $(PY_O)
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(SRC_O))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(LIBM_SRC_C:.c=.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(SHARED_SRC_C:.c=.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(TINYUSB_SRC_C:.c=.o))
|
|
||||||
OBJ += $(addprefix $(BUILD)/, $(ALIF_SRC_C:.c=.o))
|
|
||||||
OBJ += $(GEN_PINS_SRC:.c=.o)
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Main targets
|
# Main targets
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(BUILD)/firmware_toc.bin
|
all: $(BUILD)/firmware.toc.bin
|
||||||
|
|
||||||
$(BUILD)/ensemble.ld: $(LD_FILE)
|
# Force make commands to run the targets every time
|
||||||
$(ECHO) "Preprocess linker script $@"
|
# regardless of whether firmware.toc.bin already exists
|
||||||
$(Q)$(CPP) -P -E $(CFLAGS) $^ > $@
|
# to detect changes in the source files and rebuild.
|
||||||
|
.PHONY: $(BUILD)/M55_HE/firmware.bin
|
||||||
|
.PHONY: $(BUILD)/M55_HP/firmware.bin
|
||||||
|
|
||||||
$(BUILD)/firmware.elf: $(OBJ) $(BUILD)/ensemble.ld
|
$(BUILD):
|
||||||
$(ECHO) "Link $@"
|
$(MKDIR) -p $@
|
||||||
$(Q)$(LD) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
|
|
||||||
$(Q)$(SIZE) $@
|
|
||||||
|
|
||||||
$(BUILD)/firmware.bin: $(BUILD)/firmware.elf
|
$(BUILD)/M55_HP/firmware.bin:
|
||||||
$(Q)$(OBJCOPY) -Obinary $^ $(BUILD)/firmware.bin
|
make -f alif.mk MCU_CORE=M55_HP
|
||||||
|
|
||||||
$(BUILD)/firmware_toc.bin: $(BUILD)/firmware.bin
|
$(BUILD)/M55_HE/firmware.bin:
|
||||||
|
make -f alif.mk MCU_CORE=M55_HE
|
||||||
|
|
||||||
|
$(BUILD)/firmware.toc.bin: $(ALIF_TOC_APPS)
|
||||||
$(Q)python $(ALIF_TOOLS)/app-gen-toc.py \
|
$(Q)python $(ALIF_TOOLS)/app-gen-toc.py \
|
||||||
--filename $(abspath $(BUILD)/$(ALIF_TOC_CONFIG)) \
|
--filename $(abspath $(ALIF_TOC_CONFIG)) \
|
||||||
|
--config-dir $(BOARD_DIR) \
|
||||||
--output-dir $(BUILD) \
|
--output-dir $(BUILD) \
|
||||||
--firmware-dir $(BUILD) \
|
--firmware-dir $(BUILD) \
|
||||||
--output $@
|
--output $@
|
||||||
|
|
||||||
.PHONY: deploy
|
.PHONY: deploy
|
||||||
deploy: $(BUILD)/firmware_toc.bin
|
deploy: $(BUILD)/firmware.toc.bin
|
||||||
$(ECHO) "Writing $< to the board"
|
$(ECHO) "Writing $< to the board"
|
||||||
$(Q)python $(ALIF_TOOLS)/app-write-mram.py \
|
$(Q)python $(ALIF_TOOLS)/app-write-mram.py \
|
||||||
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
|
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
|
||||||
@@ -245,7 +99,7 @@ deploy: $(BUILD)/firmware_toc.bin
|
|||||||
--images file:$(BUILD)/application_package.ds
|
--images file:$(BUILD)/application_package.ds
|
||||||
|
|
||||||
.PHONY: deploy-jlink
|
.PHONY: deploy-jlink
|
||||||
deploy-jlink: $(BUILD)/firmware_toc.bin
|
deploy-jlink: $(ALIF_TOC_APPS)
|
||||||
$(Q)echo -e $(JLINK_CMD) | $(JLINK_EXE)
|
$(Q)echo -e $(JLINK_CMD) | $(JLINK_EXE)
|
||||||
|
|
||||||
.PHONY: maintenance
|
.PHONY: maintenance
|
||||||
@@ -260,17 +114,4 @@ update-system-package:
|
|||||||
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
|
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
|
||||||
--port $(PORT)
|
--port $(PORT)
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Remaining make rules
|
|
||||||
|
|
||||||
# Use a pattern rule here so that make will only call make-pins.py once to make
|
|
||||||
# both pins_board.c and pins_board.h
|
|
||||||
$(BUILD)/%_board.c $(HEADER_BUILD)/%_board.h: $(BOARD_DIR)/%.csv $(GEN_PIN_MKPINS) $(GEN_PIN_PREFIX) | $(HEADER_BUILD)
|
|
||||||
$(ECHO) "GEN $@"
|
|
||||||
$(Q)$(PYTHON) $(GEN_PIN_MKPINS) \
|
|
||||||
--board-csv $(GEN_PINS_BOARD_CSV) \
|
|
||||||
--prefix $(GEN_PIN_PREFIX) \
|
|
||||||
--output-source $(GEN_PINS_SRC) \
|
|
||||||
--output-header $(GEN_PINS_HDR)
|
|
||||||
|
|
||||||
include $(TOP)/py/mkrules.mk
|
include $(TOP)/py/mkrules.mk
|
||||||
|
|||||||
257
ports/alif/alif.mk
Normal file
257
ports/alif/alif.mk
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
################################################################################
|
||||||
|
# Initial setup of Makefile environment
|
||||||
|
|
||||||
|
BOARD ?= ALIF_ENSEMBLE
|
||||||
|
BOARD_DIR ?= boards/$(BOARD)
|
||||||
|
BUILD ?= build-$(BOARD)/$(MCU_CORE)
|
||||||
|
|
||||||
|
ifeq ($(wildcard $(BOARD_DIR)/.),)
|
||||||
|
$(error Invalid BOARD specified: $(BOARD_DIR))
|
||||||
|
endif
|
||||||
|
|
||||||
|
include ../../py/mkenv.mk
|
||||||
|
include mpconfigport.mk
|
||||||
|
include $(BOARD_DIR)/mpconfigboard.mk
|
||||||
|
|
||||||
|
# qstr definitions (must come before including py.mk)
|
||||||
|
QSTR_DEFS += qstrdefsport.h
|
||||||
|
|
||||||
|
# include py core make definitions
|
||||||
|
include $(TOP)/py/py.mk
|
||||||
|
include $(TOP)/extmod/extmod.mk
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Project specific settings and compiler/linker flags
|
||||||
|
|
||||||
|
CROSS_COMPILE ?= arm-none-eabi-
|
||||||
|
ALIF_DFP_REL_TOP ?= lib/alif_ensemble-cmsis-dfp
|
||||||
|
ALIF_DFP_REL_HERE ?= $(TOP)/lib/alif_ensemble-cmsis-dfp
|
||||||
|
CMSIS_DIR ?= $(TOP)/lib/cmsis/inc
|
||||||
|
|
||||||
|
MCU_CORE ?= M55_HP
|
||||||
|
ALIF_CONFIG ?= mcu/$(MCU_CORE)_cfg.json
|
||||||
|
LD_FILE ?= mcu/ensemble.ld.S
|
||||||
|
|
||||||
|
INC += -I.
|
||||||
|
INC += -I$(TOP)
|
||||||
|
INC += -I$(BUILD)
|
||||||
|
INC += -I$(BOARD_DIR)
|
||||||
|
INC += -I$(CMSIS_DIR)
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/drivers/include/
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/se_services/include
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/ospi_xip/source/ospi
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/Device/common/config/
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/Device/common/include/
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/Device/core/$(MCU_CORE)/config/
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/Device/core/$(MCU_CORE)/include/
|
||||||
|
INC += -I$(ALIF_DFP_REL_HERE)/Device/$(MCU_SERIES)/$(MCU_VARIANT)/
|
||||||
|
INC += -I$(TOP)/lib/tinyusb/src
|
||||||
|
INC += -Itinyusb_port
|
||||||
|
|
||||||
|
GEN_PIN_MKPINS = mcu/make-pins.py
|
||||||
|
GEN_PIN_PREFIX = mcu/pins_prefix.c
|
||||||
|
GEN_PINS_BOARD_CSV = $(BOARD_DIR)/pins.csv
|
||||||
|
GEN_PINS_SRC = $(BUILD)/pins_board.c
|
||||||
|
GEN_PINS_HDR = $(HEADER_BUILD)/pins_board.h
|
||||||
|
|
||||||
|
CFLAGS_FPU += -mfloat-abi=hard -mfpu=fpv5-d16
|
||||||
|
|
||||||
|
CFLAGS += $(INC) \
|
||||||
|
-std=c99 \
|
||||||
|
-Wall \
|
||||||
|
-Werror \
|
||||||
|
-Wdouble-promotion \
|
||||||
|
-Wfloat-conversion \
|
||||||
|
-mthumb \
|
||||||
|
-mcpu=cortex-m55 \
|
||||||
|
-mtune=cortex-m55 \
|
||||||
|
$(CFLAGS_FPU) \
|
||||||
|
-march=armv8.1-m.main+fp+mve.fp \
|
||||||
|
-nostdlib \
|
||||||
|
-fdata-sections \
|
||||||
|
-ffunction-sections \
|
||||||
|
-D$(MCU_CORE)=1 \
|
||||||
|
-DCORE_$(MCU_CORE) \
|
||||||
|
-DALIF_CMSIS_H="\"$(MCU_CORE).h\""
|
||||||
|
|
||||||
|
ifeq ($(MICROPY_FLOAT_IMPL),float)
|
||||||
|
CFLAGS += -fsingle-precision-constant
|
||||||
|
CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_FLOAT
|
||||||
|
else
|
||||||
|
CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_DOUBLE
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Tune for Debugging or Optimization
|
||||||
|
ifeq ($(DEBUG), 1)
|
||||||
|
CFLAGS += -Og -ggdb3
|
||||||
|
# Disable text compression in debug builds
|
||||||
|
MICROPY_ROM_TEXT_COMPRESSION = 0
|
||||||
|
else
|
||||||
|
CFLAGS += -O2 -DNDEBUG
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS += $(CFLAGS_EXTRA)
|
||||||
|
|
||||||
|
AFLAGS = -mthumb -march=armv8.1-m.main+fp+mve.fp $(CFLAGS_FPU)
|
||||||
|
|
||||||
|
LDFLAGS += -nostdlib \
|
||||||
|
-T$(BUILD)/ensemble.ld \
|
||||||
|
-Map=$@.map \
|
||||||
|
--cref \
|
||||||
|
--gc-sections \
|
||||||
|
--print-memory-usage
|
||||||
|
ifeq ($(MCU_CORE),M55_HP)
|
||||||
|
LDFLAGS += --wrap=dcd_event_handler
|
||||||
|
endif
|
||||||
|
|
||||||
|
LIBS += "$(shell $(CC) $(CFLAGS) -print-libgcc-file-name)"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Source files and libraries
|
||||||
|
|
||||||
|
SRC_O += \
|
||||||
|
shared/runtime/gchelper_thumb2.o
|
||||||
|
|
||||||
|
SRC_C = \
|
||||||
|
alif_flash.c \
|
||||||
|
fatfs_port.c \
|
||||||
|
machine_pin.c \
|
||||||
|
main.c \
|
||||||
|
modalif.c \
|
||||||
|
mphalport.c \
|
||||||
|
mpuart.c \
|
||||||
|
msc_disk.c \
|
||||||
|
ospi_flash.c \
|
||||||
|
pendsv.c \
|
||||||
|
system_tick.c \
|
||||||
|
se_services.c \
|
||||||
|
usbd.c \
|
||||||
|
$(wildcard $(BOARD_DIR)/*.c)
|
||||||
|
|
||||||
|
ifeq ($(MICROPY_FLOAT_IMPL),float)
|
||||||
|
LIBM_SRC_C += $(SRC_LIB_LIBM_C)
|
||||||
|
LIBM_SRC_C += $(SRC_LIB_LIBM_SQRT_HW_C)
|
||||||
|
$(BUILD)/lib/libm/%.o: CFLAGS += -Wno-maybe-uninitialized
|
||||||
|
else
|
||||||
|
LIBM_SRC_C += $(SRC_LIB_LIBM_DBL_C)
|
||||||
|
LIBM_SRC_C += $(SRC_LIB_LIBM_DBL_SQRT_HW_C)
|
||||||
|
$(BUILD)/lib/libm_dbl/%.o: CFLAGS += -Wno-maybe-uninitialized
|
||||||
|
endif
|
||||||
|
|
||||||
|
SHARED_SRC_C += $(addprefix shared/,\
|
||||||
|
libc/string0.c \
|
||||||
|
netutils/dhcpserver.c \
|
||||||
|
netutils/netutils.c \
|
||||||
|
netutils/trace.c \
|
||||||
|
readline/readline.c \
|
||||||
|
runtime/gchelper_native.c \
|
||||||
|
runtime/interrupt_char.c \
|
||||||
|
runtime/mpirq.c \
|
||||||
|
runtime/pyexec.c \
|
||||||
|
runtime/softtimer.c \
|
||||||
|
runtime/stdout_helpers.c \
|
||||||
|
runtime/sys_stdio_mphal.c \
|
||||||
|
timeutils/timeutils.c \
|
||||||
|
tinyusb/mp_usbd.c \
|
||||||
|
tinyusb/mp_usbd_cdc.c \
|
||||||
|
tinyusb/mp_usbd_descriptor.c \
|
||||||
|
)
|
||||||
|
|
||||||
|
DRIVERS_SRC_C += $(addprefix drivers/,\
|
||||||
|
bus/softspi.c \
|
||||||
|
bus/softqspi.c \
|
||||||
|
memory/spiflash.c \
|
||||||
|
dht/dht.c \
|
||||||
|
)
|
||||||
|
|
||||||
|
TINYUSB_SRC_C += \
|
||||||
|
lib/tinyusb/src/tusb.c \
|
||||||
|
lib/tinyusb/src/class/cdc/cdc_device.c \
|
||||||
|
lib/tinyusb/src/class/msc/msc_device.c \
|
||||||
|
lib/tinyusb/src/common/tusb_fifo.c \
|
||||||
|
lib/tinyusb/src/device/usbd.c \
|
||||||
|
lib/tinyusb/src/device/usbd_control.c \
|
||||||
|
tinyusb_port/tusb_alif_dcd.c \
|
||||||
|
|
||||||
|
ALIF_SRC_C += $(addprefix $(ALIF_DFP_REL_TOP)/,\
|
||||||
|
Device/common/source/clk.c \
|
||||||
|
Device/common/source/mpu_M55.c \
|
||||||
|
Device/common/source/system_M55.c \
|
||||||
|
Device/common/source/system_utils.c \
|
||||||
|
Device/common/source/tcm_partition.c \
|
||||||
|
Device/common/source/tgu_M55.c \
|
||||||
|
Device/core/$(MCU_CORE)/source/startup_$(MCU_CORE).c \
|
||||||
|
drivers/source/adc.c \
|
||||||
|
drivers/source/mhu_driver.c \
|
||||||
|
drivers/source/mhu_receiver.c \
|
||||||
|
drivers/source/mhu_sender.c \
|
||||||
|
drivers/source/pinconf.c \
|
||||||
|
drivers/source/uart.c \
|
||||||
|
drivers/source/utimer.c \
|
||||||
|
ospi_xip/source/ospi/ospi_drv.c \
|
||||||
|
se_services/source/services_host_application.c \
|
||||||
|
se_services/source/services_host_boot.c \
|
||||||
|
se_services/source/services_host_clocks.c \
|
||||||
|
se_services/source/services_host_cryptocell.c \
|
||||||
|
se_services/source/services_host_handler.c \
|
||||||
|
se_services/source/services_host_system.c \
|
||||||
|
se_services/source/services_host_power.c \
|
||||||
|
se_services/source/services_host_maintenance.c \
|
||||||
|
)
|
||||||
|
|
||||||
|
$(BUILD)/tinyusb_port/tusb_alif_dcd.o: CFLAGS += -Wno-unused-variable -DTUSB_ALIF_NO_IRQ_CFG=1
|
||||||
|
$(BUILD)/$(ALIF_DFP_REL_TOP)/se_services/source/services_host_boot.o: CFLAGS += -Wno-stringop-truncation
|
||||||
|
$(BUILD)/$(ALIF_DFP_REL_TOP)/se_services/source/services_host_system.o: CFLAGS += -Wno-maybe-uninitialized
|
||||||
|
|
||||||
|
# List of sources for qstr extraction
|
||||||
|
SRC_QSTR += $(SRC_C) $(SHARED_SRC_C) $(GEN_PINS_SRC)
|
||||||
|
|
||||||
|
OBJ += $(PY_O)
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_O))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(LIBM_SRC_C:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(SHARED_SRC_C:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(TINYUSB_SRC_C:.c=.o))
|
||||||
|
OBJ += $(addprefix $(BUILD)/, $(ALIF_SRC_C:.c=.o))
|
||||||
|
OBJ += $(GEN_PINS_SRC:.c=.o)
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Main targets
|
||||||
|
|
||||||
|
.PHONY: all erase deploy gdb objdump release
|
||||||
|
|
||||||
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
|
obj: $(OBJ)
|
||||||
|
all: $(BUILD)/firmware.bin
|
||||||
|
|
||||||
|
$(BUILD):
|
||||||
|
$(MKDIR) -p $@
|
||||||
|
|
||||||
|
$(BUILD)/ensemble.ld: $(LD_FILE)
|
||||||
|
$(ECHO) "Preprocess linker script $@"
|
||||||
|
$(Q)$(CPP) -P -E $(CFLAGS) $^ > $@
|
||||||
|
|
||||||
|
$(BUILD)/firmware.elf: $(OBJ) $(BUILD)/ensemble.ld
|
||||||
|
$(ECHO) "Link $@"
|
||||||
|
$(Q)$(LD) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
|
||||||
|
$(Q)$(SIZE) $@
|
||||||
|
|
||||||
|
$(BUILD)/firmware.bin: $(BUILD)/firmware.elf
|
||||||
|
$(Q)$(OBJCOPY) -Obinary $^ $(BUILD)/firmware.bin
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Remaining make rules
|
||||||
|
|
||||||
|
# Use a pattern rule here so that make will only call make-pins.py once to make
|
||||||
|
# both pins_board.c and pins_board.h
|
||||||
|
$(BUILD)/%_board.c $(HEADER_BUILD)/%_board.h: $(BOARD_DIR)/%.csv $(GEN_PIN_MKPINS) $(GEN_PIN_PREFIX) | $(HEADER_BUILD)
|
||||||
|
$(ECHO) "GEN $@"
|
||||||
|
$(Q)$(PYTHON) $(GEN_PIN_MKPINS) \
|
||||||
|
--board-csv $(GEN_PINS_BOARD_CSV) \
|
||||||
|
--prefix $(GEN_PIN_PREFIX) \
|
||||||
|
--output-source $(GEN_PINS_SRC) \
|
||||||
|
--output-header $(GEN_PINS_HDR)
|
||||||
|
|
||||||
|
include $(TOP)/py/mkrules.mk
|
||||||
@@ -24,25 +24,44 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef CORE_M55_HP
|
||||||
|
__DTCM_SIZE = 1024K;
|
||||||
|
#else
|
||||||
|
__DTCM_SIZE = 256K;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Entry Point
|
// Entry Point
|
||||||
ENTRY(Reset_Handler)
|
ENTRY(Reset_Handler)
|
||||||
|
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
ROM (rx) : ORIGIN = 0x80000000, LENGTH = 0x0057F000
|
MRAM_BL (rx) : ORIGIN = 0x80000000, LENGTH = 128K
|
||||||
ITCM (rwx) : ORIGIN = 0x00000000, LENGTH = 0x00040000
|
MRAM_HP (rx) : ORIGIN = 0x80020000, LENGTH = 3072K
|
||||||
#ifdef CORE_M55_HP
|
MRAM_HE (rx) : ORIGIN = 0x80320000, LENGTH = 1400K
|
||||||
DTCM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00100000
|
MRAM_FS (rx) : ORIGIN = 0x8047e000, LENGTH = 1024K
|
||||||
#else
|
MRAM_TOC (rx): ORIGIN = 0x8057e000, LENGTH = 8K
|
||||||
DTCM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00040000
|
ITCM (rwx) : ORIGIN = 0x00000000, LENGTH = 256K
|
||||||
#endif
|
DTCM (rwx) : ORIGIN = 0x20000000, LENGTH = __DTCM_SIZE
|
||||||
SRAM0 (rwx) : ORIGIN = 0x02000000, LENGTH = 0x00400000
|
SRAM0 (rwx) : ORIGIN = 0x02000000, LENGTH = 4096K
|
||||||
SRAM1 (rwx) : ORIGIN = 0x08000000, LENGTH = 0x00280000
|
SRAM1 (rwx) : ORIGIN = 0x08000000, LENGTH = 2560K
|
||||||
|
SRAM6_A (rw) : ORIGIN = 0x62000000, LENGTH = 1024K
|
||||||
|
SRAM6_B (rw) : ORIGIN = 0x62400000, LENGTH = 1024K
|
||||||
|
SRAM7 (rw) : ORIGIN = 0x63000000, LENGTH = 512K
|
||||||
|
SRAM8 (rw) : ORIGIN = 0x63200000, LENGTH = 2048K
|
||||||
|
SRAM9_A (rw) : ORIGIN = 0x60000000, LENGTH = 256K
|
||||||
|
SRAM9_B (rw) : ORIGIN = 0x60040000, LENGTH = 512K
|
||||||
}
|
}
|
||||||
|
|
||||||
__STACK_SIZE = 0x00004000;
|
#ifdef CORE_M55_HP
|
||||||
__HEAP_SIZE = 0x00004000;
|
REGION_ALIAS("ROM", MRAM_HP);
|
||||||
__MP_HEAP_SIZE = 0x00040000;
|
__MP_HEAP_SIZE = 256K;
|
||||||
|
#else
|
||||||
|
REGION_ALIAS("ROM", MRAM_HE);
|
||||||
|
__MP_HEAP_SIZE = 128K;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__STACK_SIZE = 16K;
|
||||||
|
__HEAP_SIZE = 16K;
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user