From db80c0ed4678f4bacc6c7c9b67cbf26846fc21be Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 11 May 2016 16:57:29 +0100 Subject: esp8266: Enable frozen bytecode, with scripts in modules/ subdir. To start with, the critical scripts _boot.py and flashbdev.py are frozen to improve performance and reduce RAM consumption. Saves about 1000 bytes of heap RAM for a bare boot with filesystem. --- esp8266/Makefile | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'esp8266/Makefile') diff --git a/esp8266/Makefile b/esp8266/Makefile index 946440bee..00826cfe4 100644 --- a/esp8266/Makefile +++ b/esp8266/Makefile @@ -8,9 +8,12 @@ MICROPY_PY_USSL = 1 # include py core make definitions include ../py/py.mk +MPY_CROSS = ../mpy-cross/mpy-cross +MPY_TOOL = ../tools/mpy-tool.py MAKE_FROZEN = ../tools/make-frozen.py SCRIPTDIR = scripts +FROZEN_MPY_DIR = modules PORT ?= /dev/ttyACM0 BAUD ?= 115200 CROSS_COMPILE = xtensa-lx106-elf- @@ -131,6 +134,9 @@ DRIVERS_SRC_C = $(addprefix drivers/,\ SRC_S = \ gchelper.s \ +FROZEN_MPY_PY_FILES := $(shell find $(FROZEN_MPY_DIR)/ -type f -name '*.py') +FROZEN_MPY_MPY_FILES := $(addprefix $(BUILD)/,$(FROZEN_MPY_PY_FILES:.py=.mpy)) + OBJ = OBJ += $(PY_O) OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) @@ -139,6 +145,7 @@ OBJ += $(addprefix $(BUILD)/, $(STM_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(EXTMOD_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o)) OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o)) +OBJ += $(BUILD)/$(BUILD)/frozen_mpy.o #OBJ += $(BUILD)/pins_$(BOARD).o # List of sources for qstr extraction @@ -163,6 +170,17 @@ $(BUILD)/frozen.c: $(wildcard $(SCRIPTDIR)/*) $(CONFVARS_FILE) $(ECHO) "Generating $@" $(Q)$(MAKE_FROZEN) $(SCRIPTDIR) > $@ +# to build .mpy files from .py files +$(BUILD)/$(FROZEN_MPY_DIR)/%.mpy: $(FROZEN_MPY_DIR)/%.py + @$(ECHO) "MPY $<" + $(Q)$(MKDIR) -p $(dir $@) + $(Q)$(MPY_CROSS) -o $@ -s $(^:$(FROZEN_MPY_DIR)/%=%) $^ + +# to build frozen_mpy.c from all .mpy files +$(BUILD)/frozen_mpy.c: $(FROZEN_MPY_MPY_FILES) $(BUILD)/genhdr/qstrdefs.generated.h + @$(ECHO) "Creating $@" + $(Q)$(PYTHON) $(MPY_TOOL) -f -q $(BUILD)/genhdr/qstrdefs.preprocessed.h $(FROZEN_MPY_MPY_FILES) > $@ + .PHONY: deploy deploy: $(BUILD)/firmware-combined.bin -- cgit v1.2.3