diff --git a/source/utl_upgrade.py b/source/utl_upgrade.py index 0f16ed5..e2badc7 100644 --- a/source/utl_upgrade.py +++ b/source/utl_upgrade.py @@ -389,6 +389,43 @@ def test4(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 GenerateImage_SLCP001_p460(path_boot, path_main, path_back): + """ 叠光适配器-460平台版本 镜像生成 """ + config = { + 'prod_type': [0x45, 0x00], # 产品类型 + 'method_compress': False, # 文件压缩 + 'prog_id': list(b"SLCP001"), # 程序识别号 + 'prog_type': 'app', # 程序类型 + 'area_code': [0x00, 0x00], # 地区 + } + file_path = Path(path_boot) + file_data = file_path.read_text() + boot_bin = file_IntelHex_to_Bin(file_data, len_max=0x00C000) + main_header, main_data_b, main_data_e = make_datafile3(path_main, config) + back_header, back_data_b, back_data_e = make_datafile3(path_back, config) + + print("Merge Image generated successfully.") + print(f"Main File:") + print(f"\t header_length={len(main_header)}, bin_length={len(main_data_b)}[{hex(len(main_data_b))}]") + print(f"Back File:") + print(f"\t header_length={len(back_header)}, bin_length={len(back_data_b)}[{hex(len(back_data_b))}]") + + # 组装镜像 + Image = [0xFF] * 0x058000 + offset_image = 0 + Image[offset_image: offset_image + len(boot_bin)] = boot_bin + offset_image = 0x00C000 + Image[offset_image: offset_image + len(main_data_b)] = main_data_b + offset_image = 0x030000 + Image[offset_image: offset_image + len(back_data_b)] = back_data_b + offset_image = 0x054000 + Image[offset_image: offset_image + len(main_header)] = main_header + offset_image = 0x056000 + Image[offset_image: offset_image + len(back_header)] = back_header + + return bytearray(Image), main_header, main_data_b, main_data_e, back_header, back_data_b, back_data_e + + 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) @@ -403,18 +440,18 @@ if __name__ == "__main__": back_header1 = bin_back.read_bytes()[:184] back_data_e1 = bin_back.read_bytes()[184:] - root = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\uart_tool\生产版本9") + root = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\uart_tool\p460") result = root # 正常启动镜像 hex_boot = root / r"bootloader.hex" - hex_main = root / r"SLCP001_240614_2210_V1.03.hex" - hex_back = root / r"SLCP001_240614_2210_B1.03.hex" + hex_main = root / r"SLCP001_240625_2030_V1.04.hex" + hex_back = root / r"SLCP001_240625_2030_B1.04.hex" file_image = result / f'{hex_main.stem[:-6]}_ROM.bin' file_main_header = result / 'SLCP001_header_main.bin' file_back_header = result / 'SLCP001_header_back.bin' - data_bins = test4(hex_boot, hex_main, hex_back) + data_bins = GenerateImage_SLCP001_p460(hex_boot, hex_main, hex_back) file_image.write_bytes(data_bins[0].copy()) file_main_header.write_bytes(data_bins[1].copy()) file_back_header.write_bytes(data_bins[4].copy()) @@ -422,18 +459,18 @@ if __name__ == "__main__": # 异常镜像-主分区md5错误 file_image1 = result / f'{file_image.stem}_b1.bin' data_image = data_bins[0].copy() - data_image[0x0FC018: 0x0FC01A] = [0x00, 0x01] + data_image[0x054018: 0x05401A] = [0x00, 0x01] file_image1.write_bytes(data_image) # 异常镜像-备份分区md5错误 file_image2 = result / f'{file_image.stem}_b2.bin' data_image = data_bins[0].copy() - data_image[0x0FE018: 0x0FE01A] = [0x00, 0x01] + data_image[0x056018: 0x05601A] = [0x00, 0x01] file_image2.write_bytes(data_image) # 异常镜像-双分区md5错误 file_image3 = result / f'{file_image.stem}_b3.bin' data_image = data_bins[0].copy() - data_image[0x0FC018: 0x0FC01A] = [0x00, 0x01] - data_image[0x0FE018: 0x0FE01A] = [0x00, 0x01] + data_image[0x054018: 0x05401A] = [0x00, 0x01] + data_image[0x056018: 0x05601A] = [0x00, 0x01] file_image3.write_bytes(data_image)