4fc2866f45
This commit simplifies and cleans up the bare-arm port, and adds just enough system and library code to make it execute on an STM32F405 MCU. The mpconfigport.h configuration is simplified to just specify those configuration values that are different from the defaults. And the addition of -fdata-sections and -ffunction-sections means the final firmware is smaller than it previously was, by about 4200 bytes. A README is also added. Signed-off-by: Damien George <damien@micropython.org>
60 lines
1.5 KiB
Makefile
60 lines
1.5 KiB
Makefile
# Include the core environment definitions; this will set $(TOP).
|
|
include ../../py/mkenv.mk
|
|
|
|
# Include py core make definitions.
|
|
include $(TOP)/py/py.mk
|
|
|
|
# Set makefile-level MicroPython feature configurations.
|
|
MICROPY_ROM_TEXT_COMPRESSION ?= 1
|
|
|
|
# Define toolchain and other tools.
|
|
CROSS_COMPILE ?= arm-none-eabi-
|
|
DFU ?= $(TOP)/tools/dfu.py
|
|
PYDFU ?= $(TOP)/tools/pydfu.py
|
|
|
|
# Set CFLAGS.
|
|
CFLAGS += -I. -I$(TOP) -I$(BUILD)
|
|
CFLAGS += -Wall -Werror -std=c99 -nostdlib
|
|
CFLAGS += -mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -msoft-float
|
|
CSUPEROPT = -Os # save some code space for performance-critical code
|
|
|
|
# Select debugging or optimisation build.
|
|
ifeq ($(DEBUG), 1)
|
|
CFLAGS += -Og
|
|
else
|
|
CFLAGS += -Os -DNDEBUG
|
|
CFLAGS += -fdata-sections -ffunction-sections
|
|
endif
|
|
|
|
# Set linker flags.
|
|
LDFLAGS += -nostdlib -T stm32f405.ld --gc-sections
|
|
|
|
# Define the required source files.
|
|
SRC_C += lib.c main.c system.c
|
|
|
|
# Define the required object files.
|
|
OBJ += $(PY_CORE_O)
|
|
OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
|
|
|
# Define the top-level target, the main firmware.
|
|
all: $(BUILD)/firmware.dfu
|
|
|
|
$(BUILD)/firmware.elf: $(OBJ)
|
|
$(ECHO) "LINK $@"
|
|
$(Q)$(LD) $(LDFLAGS) -o $@ $^
|
|
$(Q)$(SIZE) $@
|
|
|
|
$(BUILD)/firmware.bin: $(BUILD)/firmware.elf
|
|
$(ECHO) "Create $@"
|
|
$(Q)$(OBJCOPY) -O binary -j .isr_vector -j .text -j .data $^ $@
|
|
|
|
$(BUILD)/firmware.dfu: $(BUILD)/firmware.bin
|
|
$(ECHO) "Create $@"
|
|
$(Q)$(PYTHON) $(DFU) -b 0x08000000:$^ $@
|
|
|
|
deploy: $(BUILD)/firmware.dfu
|
|
$(Q)$(PYTHON) $(PYDFU) -u $^
|
|
|
|
# Include remaining core make rules.
|
|
include $(TOP)/py/mkrules.mk
|