From 84aada884536e277d7f9740a25a539748ffe6e71 Mon Sep 17 00:00:00 2001 From: Krzysztof Kucharski Date: Mon, 29 Sep 2025 10:34:06 +0200 Subject: [PATCH 1/7] fix(tools): Automated syntax migration (futurize) Applies 'futurize -1 -w .' across all files. No functional changes, only syntax cleanup towards Python 3 compatibility. --- examples/gen_patch_bin/gen_patch_bin.py | 6 +++-- .../gen_patch_bin/tools/gen_appbin_user.py | 26 ++++++++++--------- tools/gen_appbin.py | 2 ++ tools/make_cacert.py | 4 ++- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/examples/gen_patch_bin/gen_patch_bin.py b/examples/gen_patch_bin/gen_patch_bin.py index e2d0e251..887a7e85 100644 --- a/examples/gen_patch_bin/gen_patch_bin.py +++ b/examples/gen_patch_bin/gen_patch_bin.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os if os.path.exists("./patch_array.h"): @@ -24,13 +26,13 @@ Hex_Str += "0x"+(hex(ord(mystr[i])).replace('0x','').zfill(2)).upper()+ "," offset += 1 if offset == 16: - print Hex_Str + print(Hex_Str) patch_fd.write(" {}\r\n".format(Hex_Str)) Hex_Str = "" offset = 0 if Hex_Str != "": - print Hex_Str + print(Hex_Str) patch_fd.write(" {}\r\n".format(Hex_Str)) patch_fd.write("};\r\n") diff --git a/examples/gen_patch_bin/tools/gen_appbin_user.py b/examples/gen_patch_bin/tools/gen_appbin_user.py index 833bc90c..3c5fb75a 100755 --- a/examples/gen_patch_bin/tools/gen_appbin_user.py +++ b/examples/gen_patch_bin/tools/gen_appbin_user.py @@ -20,6 +20,8 @@ argv[1] is elf file name argv[2] is version num""" +from __future__ import print_function + import string import sys import os @@ -41,7 +43,7 @@ def write_file(file_name,data): if file_name is None: - print 'file_name cannot be none\n' + print('file_name cannot be none\n') sys.exit(0) fp = open(file_name,'ab') @@ -51,13 +53,13 @@ def write_file(file_name,data): fp.write(data) fp.close() else: - print '%s write fail\n'%(file_name) + print('%s write fail\n'%(file_name)) def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): global chk_sum global blocks if dest_file_name is None: - print 'dest_file_name cannot be none\n' + print('dest_file_name cannot be none\n') sys.exit(0) if file_name: @@ -79,7 +81,7 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): if need_chk: for loop in range(len(data_bin)): chk_sum ^= ord(data_bin[loop]) - print '%s size is %d(0x%x),align 4 bytes,\nultimate size is %d(0x%x)'%(file_name,data_len,data_len,tmp_len,tmp_len) + print('%s size is %d(0x%x),align 4 bytes,\nultimate size is %d(0x%x)'%(file_name,data_len,data_len,tmp_len,tmp_len)) tmp_len = tmp_len - data_len if tmp_len: data_str = ['00']*(tmp_len) @@ -91,13 +93,13 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): blocks = blocks + 1 fp.close() else: - print '!!!Open %s fail!!!'%(file_name) + print('!!!Open %s fail!!!'%(file_name)) def gen_appbin(): global chk_sum global blocks if len(sys.argv) != 3: - print 'Usage: gen_appbin.py eagle.app.out mode' + print('Usage: gen_appbin.py eagle.app.out mode') sys.exit(0) elf_file = sys.argv[1] @@ -122,7 +124,7 @@ def gen_appbin(): fp = file('./eagle.app.sym') if fp is None: - print "open sym file error\n" + print("open sym file error\n") sys.exit(0) lines = fp.readlines() @@ -134,10 +136,10 @@ def gen_appbin(): m = p.search(line) if m != None: entry_addr = m.group(1) - print entry_addr + print(entry_addr) if entry_addr is None: - print 'no entry point!!' + print('no entry point!!') sys.exit(0) data_start_addr = '0' @@ -146,7 +148,7 @@ def gen_appbin(): m = p.search(line) if m != None: data_start_addr = m.group(1) - print data_start_addr + print(data_start_addr) rodata_start_addr = '0' p = re.compile('(\w*)(\sA\s)(_rodata_start)$') @@ -154,7 +156,7 @@ def gen_appbin(): m = p.search(line) if m != None: rodata_start_addr = m.group(1) - print rodata_start_addr + print(rodata_start_addr) if mode == '2': # write irom bin head @@ -201,7 +203,7 @@ def gen_appbin(): write_file(flash_bin_name,data_bin) fp.close() else : - print '!!!Open %s fail!!!'%(flash_bin_name) + print('!!!Open %s fail!!!'%(flash_bin_name)) sys.exit(0) cmd = 'rm eagle.app.sym' diff --git a/tools/gen_appbin.py b/tools/gen_appbin.py index 20631502..d399f219 100644 --- a/tools/gen_appbin.py +++ b/tools/gen_appbin.py @@ -30,6 +30,8 @@ argv[1] is elf file name argv[2] is version num""" +from __future__ import print_function + import string import sys import os diff --git a/tools/make_cacert.py b/tools/make_cacert.py index 221a3037..6fe5c53c 100644 --- a/tools/make_cacert.py +++ b/tools/make_cacert.py @@ -21,6 +21,8 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # +from __future__ import print_function + import os @@ -50,7 +52,7 @@ def main(): for _file in file_list: if _file.endswith(".cer"): cert_file_list.append(_file) - print cert_file_list + print(cert_file_list) for cert_file in cert_file_list: with open(cert_file, 'rb') as f: buff = f.read() From d6dd45b03fec07f4e331e300a68ff65f4c5cf52a Mon Sep 17 00:00:00 2001 From: Krzysztof Kucharski Date: Mon, 29 Sep 2025 10:45:47 +0200 Subject: [PATCH 2/7] fix(tools): Manually replace long with int for Py3 compatibility --- examples/gen_patch_bin/tools/gen_appbin_user.py | 8 ++++---- tools/gen_appbin.py | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/gen_patch_bin/tools/gen_appbin_user.py b/examples/gen_patch_bin/tools/gen_appbin_user.py index 3c5fb75a..c0906806 100755 --- a/examples/gen_patch_bin/tools/gen_appbin_user.py +++ b/examples/gen_patch_bin/tools/gen_appbin_user.py @@ -160,7 +160,7 @@ def gen_appbin(): if mode == '2': # write irom bin head - data_bin = struct.pack(' Date: Mon, 29 Sep 2025 11:25:04 +0200 Subject: [PATCH 3/7] fix(gen_appbin_user): Correct indentation and formatting in combine_bin function --- .../gen_patch_bin/tools/gen_appbin_user.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/gen_patch_bin/tools/gen_appbin_user.py b/examples/gen_patch_bin/tools/gen_appbin_user.py index c0906806..9cfe418b 100755 --- a/examples/gen_patch_bin/tools/gen_appbin_user.py +++ b/examples/gen_patch_bin/tools/gen_appbin_user.py @@ -65,35 +65,35 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): if file_name: fp = open(file_name,'rb') if fp: - ########## write text ########## + ########## write text ########## fp.seek(0,os.SEEK_END) data_len = fp.tell() if data_len: - if need_chk: + if need_chk: tmp_len = (data_len + 3) & (~3) - else: - tmp_len = (data_len + 15) & (~15) + else: + tmp_len = (data_len + 15) & (~15) data_bin = struct.pack(' Date: Mon, 29 Sep 2025 11:27:21 +0200 Subject: [PATCH 4/7] fix(tools): Escape backslashes in regex patterns for proper matching --- examples/gen_patch_bin/tools/gen_appbin_user.py | 6 +++--- tools/gen_appbin.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/gen_patch_bin/tools/gen_appbin_user.py b/examples/gen_patch_bin/tools/gen_appbin_user.py index 9cfe418b..89125080 100755 --- a/examples/gen_patch_bin/tools/gen_appbin_user.py +++ b/examples/gen_patch_bin/tools/gen_appbin_user.py @@ -131,7 +131,7 @@ def gen_appbin(): fp.close() entry_addr = None - p = re.compile('(\w*)(\sT\s)(call_user_start1)$') + p = re.compile('(\\w*)(\\sT\\s)(call_user_start1)$') for line in lines: m = p.search(line) if m != None: @@ -143,7 +143,7 @@ def gen_appbin(): sys.exit(0) data_start_addr = '0' - p = re.compile('(\w*)(\sA\s)(_data_start)$') + p = re.compile('(\\w*)(\\sA\\s)(_data_start)$') for line in lines: m = p.search(line) if m != None: @@ -151,7 +151,7 @@ def gen_appbin(): print(data_start_addr) rodata_start_addr = '0' - p = re.compile('(\w*)(\sA\s)(_rodata_start)$') + p = re.compile('(\\w*)(\\sA\\s)(_rodata_start)$') for line in lines: m = p.search(line) if m != None: diff --git a/tools/gen_appbin.py b/tools/gen_appbin.py index dafbbdd4..ae6c15f6 100644 --- a/tools/gen_appbin.py +++ b/tools/gen_appbin.py @@ -166,7 +166,7 @@ def gen_appbin(): fp.close() entry_addr = None - p = re.compile('(\w*)(\sT\s)(call_user_start1)$') + p = re.compile('(\\w*)(\\sT\\s)(call_user_start1)$') for line in lines: m = p.search(line) if m != None: @@ -178,7 +178,7 @@ def gen_appbin(): sys.exit(0) data_start_addr = '0' - p = re.compile('(\w*)(\sA\s)(_data_start)$') + p = re.compile('(\\w*)(\\sA\\s)(_data_start)$') for line in lines: m = p.search(line) if m != None: @@ -186,7 +186,7 @@ def gen_appbin(): # print data_start_addr rodata_start_addr = '0' - p = re.compile('(\w*)(\sA\s)(_rodata_start)$') + p = re.compile('(\\w*)(\\sA\\s)(_rodata_start)$') for line in lines: m = p.search(line) if m != None: From 35745d0a227390e28ee9a0c184d3af3943f9947d Mon Sep 17 00:00:00 2001 From: Krzysztof Kucharski Date: Mon, 29 Sep 2025 14:02:13 +0200 Subject: [PATCH 5/7] fix(tools): Enhance Python 3 compatibility in binary handling functions --- examples/gen_patch_bin/gen_patch_bin.py | 14 +++++++-- .../gen_patch_bin/tools/gen_appbin_user.py | 18 ++++++++--- tools/gen_appbin.py | 31 +++++++++++++++---- 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/examples/gen_patch_bin/gen_patch_bin.py b/examples/gen_patch_bin/gen_patch_bin.py index 887a7e85..2f63b9d0 100644 --- a/examples/gen_patch_bin/gen_patch_bin.py +++ b/examples/gen_patch_bin/gen_patch_bin.py @@ -1,7 +1,10 @@ from __future__ import print_function +import sys import os +PY3 = sys.version_info[0] == 3 + if os.path.exists("./patch_array.h"): os.remove("./patch_array.h") @@ -13,7 +16,13 @@ print("Run gen_bin.sh failed") exit(-1) -with open("bin/eagle.app.v6.flash.bin","r") as fd: +def get_byte_value(data_item): + if PY3: + return data_item + else: + return ord(data_item) + +with open("bin/eagle.app.v6.flash.bin","rb") as fd: with open("./patch_array.h","w+") as patch_fd: patch_fd.write("// This file is a patch for th25q16\r\n\r\n") patch_fd.write("#include \"os_type.h\"\r\n\r\n") @@ -23,7 +32,8 @@ Hex_Str = "" offset = 0 for i in range(0, len1,1): - Hex_Str += "0x"+(hex(ord(mystr[i])).replace('0x','').zfill(2)).upper()+ "," + byte_value = get_byte_value(mystr[i]) + Hex_Str += "0x{:02X},".format(byte_value) offset += 1 if offset == 16: print(Hex_Str) diff --git a/examples/gen_patch_bin/tools/gen_appbin_user.py b/examples/gen_patch_bin/tools/gen_appbin_user.py index 89125080..8e2bd10b 100755 --- a/examples/gen_patch_bin/tools/gen_appbin_user.py +++ b/examples/gen_patch_bin/tools/gen_appbin_user.py @@ -40,6 +40,7 @@ chk_sum = CHECKSUM_INIT blocks = 0 +PY3 = sys.version_info[0] == 3 def write_file(file_name,data): if file_name is None: @@ -79,8 +80,12 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): data_bin = fp.read(data_len) write_file(dest_file_name,data_bin) if need_chk: - for loop in range(len(data_bin)): - chk_sum ^= ord(data_bin[loop]) + if need_chk: + for byte_val in data_bin: + if PY3: + chk_sum ^= byte_val + else: + chk_sum ^= ord(byte_val) print('%s size is %d(0x%x),align 4 bytes,\nultimate size is %d(0x%x)'%(file_name,data_len,data_len,tmp_len,tmp_len)) tmp_len = tmp_len - data_len if tmp_len: @@ -88,8 +93,11 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): data_bin = binascii.a2b_hex(''.join(data_str)) write_file(dest_file_name,data_bin) if need_chk: - for loop in range(len(data_bin)): - chk_sum ^= ord(data_bin[loop]) + for byte_val in data_bin: + if PY3: + chk_sum ^= byte_val + else: + chk_sum ^= ord(byte_val) blocks = blocks + 1 fp.close() else: @@ -189,7 +197,7 @@ def gen_appbin(): data_str = ['00']*(sum_size) data_bin = binascii.a2b_hex(''.join(data_str)) write_file(flash_bin_name,data_bin) - write_file(flash_bin_name,chr(chk_sum & 0xFF)) + write_file(flash_bin_name,bytearray([chk_sum & 0xFF])) if mode == '1': sum_size = os.path.getsize(flash_bin_name) diff --git a/tools/gen_appbin.py b/tools/gen_appbin.py index ae6c15f6..69009c35 100644 --- a/tools/gen_appbin.py +++ b/tools/gen_appbin.py @@ -51,6 +51,7 @@ chk_sum = CHECKSUM_INIT blocks = 0 +PY3 = sys.version_info[0] == 3 def write_file(file_name,data): if file_name is None: @@ -90,8 +91,11 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): data_bin = fp.read(data_len) write_file(dest_file_name,data_bin) if need_chk: - for loop in range(len(data_bin)): - chk_sum ^= ord(data_bin[loop]) + for byte_val in data_bin: + if PY3: + chk_sum ^= byte_val + else: + chk_sum ^= ord(byte_val) # print '%s size is %d(0x%x),align 4 bytes,\nultimate size is %d(0x%x)'%(file_name,data_len,data_len,tmp_len,tmp_len) tmp_len = tmp_len - data_len if tmp_len: @@ -99,8 +103,11 @@ def combine_bin(file_name,dest_file_name,start_offset_addr,need_chk): data_bin = binascii.a2b_hex(''.join(data_str)) write_file(dest_file_name,data_bin) if need_chk: - for loop in range(len(data_bin)): - chk_sum ^= ord(data_bin[loop]) + for byte_val in data_bin: + if PY3: + chk_sum ^= byte_val + else: + chk_sum ^= ord(byte_val) blocks = blocks + 1 fp.close() else: @@ -256,7 +263,7 @@ def gen_appbin(): data_str = ['00']*(sum_size) data_bin = binascii.a2b_hex(''.join(data_str)) write_file(flash_bin_name,data_bin) - write_file(flash_bin_name,chr(chk_sum & 0xFF)) + write_file(flash_bin_name,bytearray([chk_sum & 0xFF])) if boot_mode == '1': sum_size = os.path.getsize(flash_bin_name) @@ -280,7 +287,19 @@ def gen_appbin(): else : all_bin_crc = abs(all_bin_crc) + 1 print(all_bin_crc) - write_file(flash_bin_name,chr((all_bin_crc & 0x000000FF))+chr((all_bin_crc & 0x0000FF00) >> 8)+chr((all_bin_crc & 0x00FF0000) >> 16)+chr((all_bin_crc & 0xFF000000) >> 24)) + if PY3: + data = bytes([ + all_bin_crc & 0xFF, + (all_bin_crc >> 8) & 0xFF, + (all_bin_crc >> 16) & 0xFF, + (all_bin_crc >> 24) & 0xFF + ]) + else: + data = chr(all_bin_crc & 0xFF) + \ + chr((all_bin_crc >> 8) & 0xFF) + \ + chr((all_bin_crc >> 16) & 0xFF) + \ + chr((all_bin_crc >> 24) & 0xFF) + write_file(flash_bin_name,data) cmd = 'rm eagle.app.sym' os.system(cmd) From 72d0f2aac03f5afab8a28449a137c1291da70fe8 Mon Sep 17 00:00:00 2001 From: Krzysztof Kucharski Date: Mon, 29 Sep 2025 14:08:42 +0200 Subject: [PATCH 6/7] fix(tools): Changed Python invocation to version-neutral --- Makefile | 2 +- examples/gen_patch_bin/gen_bin.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 6fc35749..da59b4ff 100755 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ else OBJDUMP = xt-objdump endif -PYTHON?=python2 +PYTHON?=python BOOT?=none APP?=0 SPI_SPEED?=40 diff --git a/examples/gen_patch_bin/gen_bin.sh b/examples/gen_patch_bin/gen_bin.sh index 601e932d..86ac57af 100755 --- a/examples/gen_patch_bin/gen_bin.sh +++ b/examples/gen_patch_bin/gen_bin.sh @@ -20,7 +20,7 @@ xtensa-lx106-elf-objcopy --only-section .data -O binary eagle.app.v6.out eagle.a xtensa-lx106-elf-objcopy --only-section .rodata -O binary eagle.app.v6.out eagle.app.v6.rodata.bin xtensa-lx106-elf-objcopy --only-section .irom0.text -O binary eagle.app.v6.out eagle.app.v6.irom0text.bin -python2 ../../../../tools/gen_appbin_user.py eagle.app.v6.out 0 +python ../../../../tools/gen_appbin_user.py eagle.app.v6.out 0 cp eagle.app.v6.irom0text.bin ../../../../bin/ cp eagle.app.flash.bin ../../../../bin/eagle.app.v6.flash.bin From 7530f50b860420d24fb68c4ca80a821e9138daf8 Mon Sep 17 00:00:00 2001 From: Krzysztof Kucharski Date: Mon, 29 Sep 2025 14:11:02 +0200 Subject: [PATCH 7/7] fix(version): Update version to 3.0.7 --- include/version.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/version.h b/include/version.h index c1559db0..4a2bf949 100755 --- a/include/version.h +++ b/include/version.h @@ -3,9 +3,9 @@ #define ESP_SDK_VERSION_MAJOR 3 #define ESP_SDK_VERSION_MINOR 0 -#define ESP_SDK_VERSION_PATCH 4 +#define ESP_SDK_VERSION_PATCH 7 -#define ESP_SDK_VERSION_NUMBER 0x030004 -#define ESP_SDK_VERSION_STRING "3.0.4" +#define ESP_SDK_VERSION_NUMBER 0x030007 +#define ESP_SDK_VERSION_STRING "3.0.7" #endif