mirror of
https://github.com/micropython/micropython.git
synced 2025-12-13 08:20:13 +01:00
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
The HP and HE CPUs have double-precision hardware floating point, so can use the armv7emdp architecture. This allows frozen code to use native/viper/asm_thumb decorators. Fixes issue #17896. Signed-off-by: Damien George <damien@micropython.org>
290 lines
8.2 KiB
Makefile
290 lines
8.2 KiB
Makefile
################################################################################
|
|
# Initial setup of Makefile environment
|
|
|
|
BOARD ?= ALIF_ENSEMBLE
|
|
BOARD_DIR ?= boards/$(BOARD)
|
|
|
|
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
|
|
|
|
MPY_CROSS_FLAGS += -march=armv7emdp
|
|
|
|
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
|
|
INC += -Ilwip_inc
|
|
|
|
GEN_PIN_MKPINS = mcu/make-pins.py
|
|
GEN_PIN_PREFIX = mcu/pins_prefix.c
|
|
GEN_PINS_BOARD_CSV = $(BOARD_DIR)/pins.csv
|
|
GEN_PINS_MCU_CSV = mcu/ensemble_pin_alt.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 \
|
|
-fdata-sections \
|
|
-ffunction-sections \
|
|
--specs=nosys.specs \
|
|
-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)
|
|
|
|
CFLAGS += -Wl,-T$(BUILD)/ensemble.ld \
|
|
-Wl,-Map=$@.map \
|
|
-Wl,--cref \
|
|
-Wl,--gc-sections \
|
|
-Wl,--print-memory-usage \
|
|
-Wl,--no-warn-rwx-segment
|
|
|
|
################################################################################
|
|
# Source files and libraries
|
|
|
|
SRC_O += \
|
|
shared/runtime/gchelper_thumb2.o
|
|
|
|
SRC_C = \
|
|
alif_flash.c \
|
|
cyw43_port_spi.c \
|
|
fatfs_port.c \
|
|
machine_pin.c \
|
|
machine_i2c.c \
|
|
machine_spi.c \
|
|
machine_rtc.c \
|
|
main.c \
|
|
modalif.c \
|
|
mphalport.c \
|
|
mpnetworkport.c \
|
|
mpu.c \
|
|
mpuart.c \
|
|
msc_disk.c \
|
|
nosys_stubs.c \
|
|
ospi_ext.c \
|
|
ospi_flash.c \
|
|
pendsv.c \
|
|
system_tick.c \
|
|
se_services.c \
|
|
usbd.c \
|
|
vfs_rom_ioctl.c \
|
|
$(wildcard $(BOARD_DIR)/*.c)
|
|
|
|
ifeq ($(MICROPY_SSL_MBEDTLS),1)
|
|
SRC_C += mbedtls/mbedtls_port.c
|
|
endif
|
|
|
|
ifeq ($(MICROPY_PY_BLUETOOTH),1)
|
|
SRC_C += mpbthciport.c mpnimbleport.c
|
|
endif
|
|
|
|
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/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/common/source/pm.c \
|
|
Device/core/$(MCU_CORE)/source/startup_$(MCU_CORE).c \
|
|
drivers/source/adc.c \
|
|
drivers/source/i2c.c \
|
|
drivers/source/mhu_driver.c \
|
|
drivers/source/mhu_receiver.c \
|
|
drivers/source/mhu_sender.c \
|
|
drivers/source/mram.c \
|
|
drivers/source/pinconf.c \
|
|
drivers/source/spi.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)/drivers/source/mram.o: CFLAGS += -Wno-strict-aliasing
|
|
$(BUILD)/$(ALIF_DFP_REL_TOP)/drivers/source/spi.o: CFLAGS += -Wno-maybe-uninitialized
|
|
$(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
|
|
|
|
# Add Alif-specific implementation of libmetal (and optionally OpenAMP's rproc).
|
|
# Note: libmetal code is generated via a pre-processor so ensure that runs first.
|
|
ifeq ($(MICROPY_PY_OPENAMP),1)
|
|
SRC_C += mpmetalport.c
|
|
$(BUILD)/mpmetalport.o: $(BUILD)/openamp/metal/config.h
|
|
ifeq ($(MICROPY_PY_OPENAMP_REMOTEPROC),1)
|
|
SRC_C += mpremoteprocport.c
|
|
$(BUILD)/mpremoteprocport.o: $(BUILD)/openamp/metal/config.h
|
|
endif
|
|
endif
|
|
|
|
# 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)$(CC) $(CFLAGS) -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) \
|
|
--af-csv $(GEN_PINS_MCU_CSV) \
|
|
--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
|