添加460平台版本镜像生成函数;
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user