From d97d67a498f5542e4d19c6b1a9779377b9339bf6 Mon Sep 17 00:00:00 2001 From: fvanroie Date: Mon, 7 Dec 2020 21:12:44 +0100 Subject: [PATCH] Copy boot partitions --- platformio.ini | 4 ++ tools/copy_partitions.py | 69 +++++++++++++++++++++ user_setups/esp32/d1-mini-esp32_ili9341.ini | 5 +- user_setups/esp32/lolin-d32-pro_ili9341.ini | 4 ++ 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 tools/copy_partitions.py diff --git a/platformio.ini b/platformio.ini index e802f77c..fdb7c28c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -123,6 +123,10 @@ lib_ignore = lib_deps = LittleFS_esp32 +extra_scripts = + tools/copy_partitions.py + + [esp8266] build_flags= -D HTTP_UPLOAD_BUFLEN=640 ; lower http upload buffer diff --git a/tools/copy_partitions.py b/tools/copy_partitions.py new file mode 100644 index 00000000..7cdba495 --- /dev/null +++ b/tools/copy_partitions.py @@ -0,0 +1,69 @@ +#This script is based on the Tasmota rename-firmware.py script. https://github.com/arendst/Tasmota + +Import('env') +import os +import shutil + +buildFlags = env.ParseFlags(env['BUILD_FLAGS']) +OUTPUT_DIR = "build_output{}".format(os.path.sep) + +platform = env.PioPlatform() +FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoespressif32") +FRAMEWORK_DIR = "{}{}".format(FRAMEWORK_DIR, os.path.sep) + +def copy_boot_partitions(source, target, env): + # check if output directories exist and create if necessary + if not os.path.isdir(OUTPUT_DIR): + os.mkdir(OUTPUT_DIR) + + for d in ['firmware', 'map']: + if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): + os.mkdir("{}{}".format(OUTPUT_DIR, d)) + + # create string with location and file names based on variant + src = str(target[0]) + dst = "{}firmware{}{}".format(OUTPUT_DIR, os.path.sep, "partitions.bin") + + print(src) + print(dst) + + # check if new target files exist and remove if necessary + for f in [dst]: + if os.path.isfile(f): + os.remove(f) + + # copy firmware.bin to firmware/.bin + shutil.copy(src,dst) + + # create string with location and file names based on variant + src = "{}tools{}partitions{}boot_app0.bin".format(FRAMEWORK_DIR, os.path.sep, os.path.sep, os.path.sep) + dst = "{}firmware{}{}".format(OUTPUT_DIR, os.path.sep, "boot_app0.bin") + + print(src) + print(dst) + + # check if new target files exist and remove if necessary + for f in [dst]: + if os.path.isfile(f): + os.remove(f) + + # copy firmware.bin to firmware/.bin + shutil.copy(src,dst) + + # create string with location and file names based on variant + src = "{}tools{}sdk{}bin{}bootloader_dio_40m.bin".format(FRAMEWORK_DIR, os.path.sep, os.path.sep, os.path.sep, os.path.sep) + dst = "{}firmware{}{}".format(OUTPUT_DIR, os.path.sep, "bootloader_dio_40m.bin") + + print(src) + print(dst) + + # check if new target files exist and remove if necessary + for f in [dst]: + if os.path.isfile(f): + os.remove(f) + + # copy firmware.bin to firmware/.bin + shutil.copy(src,dst) + + +env.AddPostAction("$BUILD_DIR/partitions.bin", [copy_boot_partitions]) diff --git a/user_setups/esp32/d1-mini-esp32_ili9341.ini b/user_setups/esp32/d1-mini-esp32_ili9341.ini index be4a6653..31975e33 100644 --- a/user_setups/esp32/d1-mini-esp32_ili9341.ini +++ b/user_setups/esp32/d1-mini-esp32_ili9341.ini @@ -38,4 +38,7 @@ lib_ignore = ${env.lib_ignore} ${esp32.lib_ignore} ;endregion - \ No newline at end of file + +extra_scripts = + ${env.extra_scripts} + ${esp32.extra_scripts} \ No newline at end of file diff --git a/user_setups/esp32/lolin-d32-pro_ili9341.ini b/user_setups/esp32/lolin-d32-pro_ili9341.ini index ae102f2a..8ffc3b03 100644 --- a/user_setups/esp32/lolin-d32-pro_ili9341.ini +++ b/user_setups/esp32/lolin-d32-pro_ili9341.ini @@ -41,3 +41,7 @@ lib_ignore = ${env.lib_ignore} ${esp32.lib_ignore} ;endregion + +extra_scripts = + ${env.extra_scripts} + ${esp32.extra_scripts} \ No newline at end of file