esp8266: Add support for frozen modules

This commit is contained in:
Josef Gajdusek 2015-05-06 00:19:26 +02:00 committed by Damien George
parent d39d96b700
commit bda7041294
4 changed files with 24 additions and 0 deletions

View File

@ -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

View File

@ -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) {

View File

@ -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

1
esp8266/scripts/main.py Normal file
View File

@ -0,0 +1 @@
# This script is run on boot