diff --git a/.gitignore b/.gitignore index e125a3d..03add94 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ # 缓存文件 **/__pycache__/*.pyc +# 测试文件 +test + # 生成结果 result/*.bin result/*.html diff --git a/source/utl_upgrade.py b/source/utl_upgrade.py index e2badc7..d20bb90 100644 --- a/source/utl_upgrade.py +++ b/source/utl_upgrade.py @@ -425,27 +425,38 @@ def GenerateImage_SLCP001_p460(path_boot, path_main, path_back): return bytearray(Image), main_header, main_data_b, main_data_e, back_header, back_data_b, back_data_e +def GeneratePackage_SLCP001_p460(path_hex): + """ 叠光适配器-460平台版本 生成升级包 """ + config = { + 'prod_type': [0x45, 0x00], # 产品类型 + 'method_compress': False, # 文件压缩 + 'prog_id': list(b"SLCP001"), # 程序识别号 + 'prog_type': 'app', # 程序类型 + 'area_code': [0x00, 0x00], # 地区 + } + main_header, main_data_b, main_data_e = make_datafile3(path_hex, config) -if __name__ == "__main__": - # path_bin = Path("F:\\Work\\FPGA\\Test\\Vivado\\test_update\\test_update.vitis\\upgrade_system\\Debug\\sd_card\\BOOT.BIN") - # test3(path_bin) + print("Merge Image generated successfully.") + print(f"File Info:") + print(f"\t header_length={len(main_header)}, bin_length={len(main_data_b)}[{hex(len(main_data_b))}]") - # test2() + # 组装镜像 + Image = [0xFF] * (len(main_header) + len(main_data_e)) + offset_image = 0 + Image[offset_image: offset_image + len(main_header)] = main_header + offset_image += len(main_header) + Image[offset_image: offset_image + len(main_data_e)] = main_data_e - if 0: - bin_back = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\lamina_adapter_back.bin") - bin_main = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\lamina_adapter_main.bin") - main_header1 = bin_main.read_bytes()[:184] - main_data_e1 = bin_main.read_bytes()[184:] - back_header1 = bin_back.read_bytes()[:184] - back_data_e1 = bin_back.read_bytes()[184:] + return bytearray(Image), main_data_b - root = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\uart_tool\p460") - result = root +def Process1(): + """ 镜像生成流程 """ + root = Path(r"test\p460") + result = Path(r"test\p460\result") # 正常启动镜像 hex_boot = root / r"bootloader.hex" - hex_main = root / r"SLCP001_240625_2030_V1.04.hex" - hex_back = root / r"SLCP001_240625_2030_B1.04.hex" + hex_main = root / r"lamina_adapter.hex" + hex_back = root / r"lamina_adapter_back.hex" file_image = result / f'{hex_main.stem[:-6]}_ROM.bin' file_main_header = result / 'SLCP001_header_main.bin' @@ -474,3 +485,33 @@ if __name__ == "__main__": data_image[0x054018: 0x05401A] = [0x00, 0x01] data_image[0x056018: 0x05601A] = [0x00, 0x01] file_image3.write_bytes(data_image) + +def Process2(): + """ 升级包生成流程 """ + root = Path(r"test\p460") + result = Path(r"test\p460\result") + + hex_main = root / r"lamina_adapter_t1.hex" + file_package = result / f'{hex_main.stem}.dat' + file_bin = result / f'{hex_main.stem}.bin' + + data_package, data_bins = GeneratePackage_SLCP001_p460(hex_main) + file_package.write_bytes(data_package) + file_bin.write_bytes(data_bins) + + +if __name__ == "__main__": + # path_bin = Path("F:\\Work\\FPGA\\Test\\Vivado\\test_update\\test_update.vitis\\upgrade_system\\Debug\\sd_card\\BOOT.BIN") + # test3(path_bin) + + # test2() + + if 0: + bin_back = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\lamina_adapter_back.bin") + bin_main = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\lamina_adapter_main.bin") + main_header1 = bin_main.read_bytes()[:184] + main_data_e1 = bin_main.read_bytes()[184:] + back_header1 = bin_back.read_bytes()[:184] + back_data_e1 = bin_back.read_bytes()[184:] + + Process1()