From 679908a6bb2a040db0b11bd43e75a501b9ac1dbc Mon Sep 17 00:00:00 2001 From: Bartlomiej Zimon Date: Wed, 25 Mar 2020 23:56:59 +0000 Subject: [PATCH] ESP32: add subtarget for genuine units firmware-factory.bin Resolves #2964 #2941 #2486 --- platformio_esp32_envs.ini | 7 +++++-- post_esp32.py | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100755 post_esp32.py diff --git a/platformio_esp32_envs.ini b/platformio_esp32_envs.ini index dfb9aca1b..8f842a532 100644 --- a/platformio_esp32_envs.ini +++ b/platformio_esp32_envs.ini @@ -15,6 +15,7 @@ board_build.f_flash = 80000000L board_build.flash_mode = dout board_upload.maximum_size = 1900544 board_build.partitions = esp32_partition_app1810k_spiffs316k.csv +extra_scripts = post:post_esp32.py build_unflags = -Wall build_flags = ${mqtt_flags.build_flags} -D BUILD_GIT='"${sysenv.TRAVIS_TAG}"' @@ -30,14 +31,15 @@ extends = esp32_common platform = ${esp32_common.platform} build_flags = ${esp32_common.build_flags} -DPLUGIN_BUILD_CUSTOM board = esp32dev -extra_scripts = pre:pre_custom_esp32.py - +extra_scripts = ${esp32_common.extra_scripts} + pre:pre_custom_esp32.py [env:test_ESP32_4M316k] extends = esp32_common platform = ${esp32_common.platform} build_flags = ${esp32_common.build_flags} -DPLUGIN_SET_TEST_ESP32 board = esp32dev +extra_scripts = ${esp32_common.extra_scripts} [env:test_ESP32-wrover-kit_4M316k] @@ -48,5 +50,6 @@ board = esp-wrover-kit upload_protocol = ftdi debug_tool = ftdi debug_extra_cmds = break Misc.ino:3011 +extra_scripts = ${esp32_common.extra_scripts} diff --git a/post_esp32.py b/post_esp32.py new file mode 100755 index 000000000..49952f5d3 --- /dev/null +++ b/post_esp32.py @@ -0,0 +1,23 @@ +Import("env") + +def after_build(source, target, env): + print("Generating factory bin for genuine esp units") + #offset = 0x1000 + offset = 0x0 + new_file_name = env.subst("$BUILD_DIR/${PROGNAME}-factory.bin") + sections = env.subst(env.get('FLASH_EXTRA_IMAGES')) + new_file = open(new_file_name,"wb") + for section in sections: + sect_adr,sect_file = section.split(" ") + source = open(sect_file,"rb") + new_file.seek(int(sect_adr,0)-offset) + new_file.write(source.read()); + source.close() + + firmware = open(env.subst("$BUILD_DIR/${PROGNAME}.bin"),"rb") + new_file.seek(0x10000-offset) + new_file.write(firmware.read()) + new_file.close() + firmware.close() + +env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", after_build)