添加460平台版本镜像生成函数;

This commit is contained in:
何 泽隆
2024-08-02 17:41:04 +08:00
parent a417ceb1ee
commit fb88f85490

View File

@@ -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 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__": if __name__ == "__main__":
# path_bin = Path("F:\\Work\\FPGA\\Test\\Vivado\\test_update\\test_update.vitis\\upgrade_system\\Debug\\sd_card\\BOOT.BIN") # path_bin = Path("F:\\Work\\FPGA\\Test\\Vivado\\test_update\\test_update.vitis\\upgrade_system\\Debug\\sd_card\\BOOT.BIN")
# test3(path_bin) # test3(path_bin)
@@ -403,18 +440,18 @@ if __name__ == "__main__":
back_header1 = bin_back.read_bytes()[:184] back_header1 = bin_back.read_bytes()[:184]
back_data_e1 = 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 result = root
# 正常启动镜像 # 正常启动镜像
hex_boot = root / r"bootloader.hex" hex_boot = root / r"bootloader.hex"
hex_main = root / r"SLCP001_240614_2210_V1.03.hex" hex_main = root / r"SLCP001_240625_2030_V1.04.hex"
hex_back = root / r"SLCP001_240614_2210_B1.03.hex" hex_back = root / r"SLCP001_240625_2030_B1.04.hex"
file_image = result / f'{hex_main.stem[:-6]}_ROM.bin' file_image = result / f'{hex_main.stem[:-6]}_ROM.bin'
file_main_header = result / 'SLCP001_header_main.bin' file_main_header = result / 'SLCP001_header_main.bin'
file_back_header = result / 'SLCP001_header_back.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_image.write_bytes(data_bins[0].copy())
file_main_header.write_bytes(data_bins[1].copy()) file_main_header.write_bytes(data_bins[1].copy())
file_back_header.write_bytes(data_bins[4].copy()) file_back_header.write_bytes(data_bins[4].copy())
@@ -422,18 +459,18 @@ if __name__ == "__main__":
# 异常镜像-主分区md5错误 # 异常镜像-主分区md5错误
file_image1 = result / f'{file_image.stem}_b1.bin' file_image1 = result / f'{file_image.stem}_b1.bin'
data_image = data_bins[0].copy() data_image = data_bins[0].copy()
data_image[0x0FC018: 0x0FC01A] = [0x00, 0x01] data_image[0x054018: 0x05401A] = [0x00, 0x01]
file_image1.write_bytes(data_image) file_image1.write_bytes(data_image)
# 异常镜像-备份分区md5错误 # 异常镜像-备份分区md5错误
file_image2 = result / f'{file_image.stem}_b2.bin' file_image2 = result / f'{file_image.stem}_b2.bin'
data_image = data_bins[0].copy() data_image = data_bins[0].copy()
data_image[0x0FE018: 0x0FE01A] = [0x00, 0x01] data_image[0x056018: 0x05601A] = [0x00, 0x01]
file_image2.write_bytes(data_image) file_image2.write_bytes(data_image)
# 异常镜像-双分区md5错误 # 异常镜像-双分区md5错误
file_image3 = result / f'{file_image.stem}_b3.bin' file_image3 = result / f'{file_image.stem}_b3.bin'
data_image = data_bins[0].copy() data_image = data_bins[0].copy()
data_image[0x0FC018: 0x0FC01A] = [0x00, 0x01] data_image[0x054018: 0x05401A] = [0x00, 0x01]
data_image[0x0FE018: 0x0FE01A] = [0x00, 0x01] data_image[0x056018: 0x05601A] = [0x00, 0x01]
file_image3.write_bytes(data_image) file_image3.write_bytes(data_image)