From 7cf26cf89876fbb140fb6a18ce9248dae02e75ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=20=E6=B3=BD=E9=9A=86?= Date: Tue, 21 Jan 2025 19:45:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=87=E4=BB=BD=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=89=93=E5=8C=85=E5=8A=9F=E8=83=BD;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/dev_LaminaAdapter.py | 16 ---------------- source/device/LaminaAdapter.py | 16 ++++++---------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/source/dev_LaminaAdapter.py b/source/dev_LaminaAdapter.py index 14ce168..e2730f7 100644 --- a/source/dev_LaminaAdapter.py +++ b/source/dev_LaminaAdapter.py @@ -26,22 +26,6 @@ def test_communication(time_out=2): print(f"Success Rate: {dev_lamina.log['read'] / dev_lamina.log['send'] * 100}%") dev_lamina.flag_print, dev_lamina.retry, dev_lamina.time_out = param_saved - -def make_Pakeage(fp: Path, func): - """ 生成升级包 """ - - hex_update = fp - file_package = fp.parent / f'{hex_update.stem}.dat' - file_update_bin = fp.parent / f'{hex_update.stem}.bin' - - data_package, data_update_bin = func(hex_update) - - file_package.write_bytes(data_package) - file_update_bin.write_bytes(data_update_bin) - - return file_package - - def test(): if 0: dev_lamina.frame_read(0xA9, 1) # 读ADC参考电压 diff --git a/source/device/LaminaAdapter.py b/source/device/LaminaAdapter.py index dbb36c0..2d140ee 100644 --- a/source/device/LaminaAdapter.py +++ b/source/device/LaminaAdapter.py @@ -316,14 +316,14 @@ class LaminaAdapter(DeviceSerial): def GeneratePackage(type_dev: str, path_hex: Path, **kwargs) -> bytearray: """ 生成升级包 """ + if 'upgrade_backup' in kwargs.keys(): + upgrade_backup = kwargs['upgrade_backup'] config = { 'prod_type': [0x45, 0x00], # 产品类型 'method_compress': False, # 文件压缩 'prog_id': list(type_dev.encode('ascii')), # 程序识别号 'prog_type': 'app', # 程序类型 'area_code': [0x00, 0x00], # 地区 - # 升级方式(0-片外缓冲, 1-片内缓冲, 2-升级备份) - 'upgrade_type': [0x02, 0x00] if 'upgrade_backup' in kwargs.keys() else [0x00, 0x00], } match type_dev: case 'SLCP001': @@ -346,6 +346,8 @@ def GeneratePackage(type_dev: str, path_hex: Path, **kwargs) -> bytearray: config['file_length'] = ByteConv.conv_int_to_array(len(bin_main)) config['hex_name'] = list(path_hex.name.encode())[:64] config['hex_name'] += [0] * (64 - len(config['hex_name'])) + if upgrade_backup: + config['prog_id'][:4] = b'BACK' if (main_header:=file_upgrade.build_header_new(config)) is None: raise Exception("Header tag oversize. ") @@ -355,17 +357,10 @@ def GeneratePackage(type_dev: str, path_hex: Path, **kwargs) -> bytearray: print(f"\t header_length={len(main_header)}, bin_length={len(bin_main)}[{hex(len(bin_main))}]") # 组装镜像 - if 'upgrade_backup' in kwargs.keys(): - """ 备份程序填充部分字节以便阻止旧版程序进行升级 """ - dummy_data = bytearray([0x00] * 8) - else: - dummy_data = [] - Image = [0xFF] * (len(main_header) + len(dummy_data) + len(encrypt_main)) + Image = [0xFF] * (len(main_header) + len(encrypt_main)) offset_image = 0 Image[offset_image: offset_image + len(main_header)] = main_header offset_image += len(main_header) - Image[offset_image: offset_image + len(dummy_data)] = dummy_data - offset_image += len(dummy_data) Image[offset_image: offset_image + len(encrypt_main)] = encrypt_main # 额外处理 @@ -417,6 +412,7 @@ def GenerateImage(type_dev: str, path_boot: Path, path_main: Path, path_back: Pa config['file_length'] = ByteConv.conv_int_to_array(len(bin_back)) config['hex_name'] = list(path_back.name.encode())[:64] config['hex_name'] += [0] * (64 - len(config['hex_name'])) + config['prog_id'][:4] = b'BACK' if (back_header:=file_upgrade.build_header_new(config)) is None: raise Exception("Header tag oversize. ")