From f2ad37152be72486a732d1021249dca8428e73d8 Mon Sep 17 00:00:00 2001 From: Max Prokhorov Date: Fri, 29 Mar 2019 11:05:11 +0300 Subject: [PATCH] special dummy printf to disable Serial using some boards --- code/espurna/config/prototypes.h | 5 +++++ code/extra_scripts.py | 26 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/code/espurna/config/prototypes.h b/code/espurna/config/prototypes.h index 684637c4..f6e488da 100644 --- a/code/espurna/config/prototypes.h +++ b/code/espurna/config/prototypes.h @@ -57,6 +57,11 @@ extern "C" { #endif } +// special dummy printf to disable Serial using some boards +int dummy_ets_printf(const char* format, ...) { + return 0; +} + // ----------------------------------------------------------------------------- // Domoticz // ----------------------------------------------------------------------------- diff --git a/code/extra_scripts.py b/code/extra_scripts.py index de37bd31..70bc640d 100644 --- a/code/extra_scripts.py +++ b/code/extra_scripts.py @@ -59,12 +59,12 @@ def remove_float_support(): LINKFLAGS = newflags ) -def cpp_check(source, target, env): +def cpp_check(target, source, env): print("Started cppcheck...\n") call(["cppcheck", os.getcwd()+"/espurna", "--force", "--enable=all"]) print("Finished cppcheck...\n") -def check_size(source, target, env): +def check_size(target, source, env): (binary,) = target path = binary.get_abspath() size = os.stat(path).st_size @@ -78,6 +78,21 @@ def check_size(source, target, env): print_warning("https://github.com/xoseperez/espurna/wiki/TwoStepUpdates", color=Color.LIGHT_CYAN) print_filler("*", color=Color.LIGHT_YELLOW, err=True) +def dummy_ets_printf(target, source, env): + (postmortem_src_file, ) = source + (postmortem_obj_file, ) = target + + cmd = ["xtensa-lx106-elf-objcopy"] + + # recent Core switched to cpp+newlib & ets_printf_P + if postmortem_src_file.get_abspath().endswith(".cpp"): + cmd.extend(["--redefine-sym", "ets_printf_P=dummy_ets_printf"]) + else: + cmd.extend(["--redefine-sym", "ets_printf=dummy_ets_printf"]) + + cmd.append(postmortem_obj_file.get_abspath()) + env.VerboseAction(cmd, "Running $TARGET") + # ------------------------------------------------------------------------------ # Hooks # ------------------------------------------------------------------------------ @@ -85,6 +100,13 @@ def check_size(source, target, env): # Always show warnings for project code projenv.ProcessUnFlags("-w") +# 2.4.0 and up remove_float_support() +# two-step update hint when using 1MB boards env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", check_size) + +# disable postmortem printing to the uart. another one is in eboot, but this is what causes the most harm +if "DISABLE_POSTMORTEM_STACKDUMP" if env["CPPFLAGS"]: + env.AddPostAction("$BUILD_DIR/FrameworkArduino/core_esp8266_postmortem.c.o", dummy_ets_printf) + env.AddPostAction("$BUILD_DIR/FrameworkArduino/core_esp8266_postmortem.cpp.o", dummy_ets_printf)