diff --git a/esp8266/Makefile b/esp8266/Makefile index 389e86edf9..c891c50dcb 100644 --- a/esp8266/Makefile +++ b/esp8266/Makefile @@ -6,6 +6,9 @@ QSTR_DEFS = qstrdefsport.h #$(BUILD)/pins_qstr.h # include py core make definitions include ../py/py.mk +MAKE_FROZEN = ../tools/make-frozen.py + +SCRIPTDIR = scripts PORT = /dev/ttyACM0 CROSS_COMPILE = xtensa-lx106-elf- ESP_SDK = $(shell $(CC) -print-sysroot)/usr @@ -51,6 +54,7 @@ SRC_C = \ modpybpin.c \ modesp.c \ utils.c \ + $(BUILD)/frozen.c \ STM_SRC_C = $(addprefix stmhal/,\ printf.c \ @@ -77,6 +81,19 @@ OBJ += $(addprefix $(BUILD)/, $(LIB_SRC_C:.c=.o)) all: $(BUILD)/firmware-combined.bin +SCRIPTDIR_FILE = $(BUILD)/scriptdir + +ifeq ($(wildcard $(SCRIPTDIR_FILE)),) +$(shell $(MKDIR) -p $(BUILD)) +$(shell echo $(SCRIPTDIR) > $(SCRIPTDIR_FILE)) +else ifneq ($(shell cat $(SCRIPTDIR_FILE)), $(SCRIPTDIR)) +$(shell echo $(SCRIPTDIR) > $(SCRIPTDIR_FILE)) +endif + +$(BUILD)/frozen.c: $(wildcard $(SCRIPTDIR)/*) $(SCRIPTDIR_FILE) + $(ECHO) "Generating $@" + $(Q)$(MAKE_FROZEN) $(SCRIPTDIR) > $@ + .PHONY: deploy deploy: $(BUILD)/firmware-combined.bin diff --git a/esp8266/main.c b/esp8266/main.c index 81618cd63f..59b415c1d9 100644 --- a/esp8266/main.c +++ b/esp8266/main.c @@ -32,6 +32,7 @@ #include "py/runtime0.h" #include "py/runtime.h" #include "py/stackctrl.h" +#include "py/frozenmod.h" #include "py/gc.h" #include "pyexec.h" #include "gccollect.h" @@ -46,6 +47,10 @@ STATIC void mp_reset(void) { mp_init(); mp_obj_list_init(mp_sys_path, 0); mp_obj_list_init(mp_sys_argv, 0); +#if MICROPY_MODULE_FROZEN + mp_lexer_t *lex = mp_find_frozen_module("main", 4); + mp_parse_compile_execute(lex, MP_PARSE_FILE_INPUT, mp_globals_get(), mp_locals_get()); +#endif } void soft_reset(void) { diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h index cae5398f97..6d70c48e21 100644 --- a/esp8266/mpconfigport.h +++ b/esp8266/mpconfigport.h @@ -36,6 +36,7 @@ #define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_LONGLONG) #define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_NONE) #define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_TERSE) +#define MICROPY_MODULE_FROZEN (1) // type definitions for the specific machine diff --git a/esp8266/scripts/main.py b/esp8266/scripts/main.py new file mode 100644 index 0000000000..83bc52a321 --- /dev/null +++ b/esp8266/scripts/main.py @@ -0,0 +1 @@ +# This script is run on boot