重构代码.
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
import time
|
||||
import socket
|
||||
import random
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
from tools.ByteConv import trans_list_to_str
|
||||
from source.func_frame import make_frame_modbus, check_frame_modbus, print_display
|
||||
from function.tools.ByteConv import conv_int_to_array, trans_list_to_str
|
||||
from function.frame import make_frame_modbus, check_frame_modbus, print_display
|
||||
from function.file_upgrade import build_header, file_encryption
|
||||
|
||||
modbus_map = {
|
||||
ParamMap_EnergyRouter = {
|
||||
0x00: ['编译日期', 4, 6],
|
||||
0x06: ['编译时间', 4, 5],
|
||||
}
|
||||
@@ -25,7 +27,7 @@ class EnergyRouter:
|
||||
|
||||
self.block = {
|
||||
'addr_dev' : adddr_modbus,
|
||||
'data_define': modbus_map,
|
||||
'data_define': ParamMap_EnergyRouter,
|
||||
}
|
||||
self.output = {
|
||||
'result': False,
|
||||
@@ -160,6 +162,51 @@ class EnergyRouter:
|
||||
self.output = check_frame_modbus(frame_slave[:18], self.block)
|
||||
|
||||
|
||||
def GeneratePackage_Demo_Xilinx(path_bin: Path):
|
||||
""" 完整升级包生成测试 """
|
||||
config = {
|
||||
'file_type': [0x10, 0x01], # Xilinx-Demo 自机升级文件
|
||||
'file_version': [0x00, 0x00], # 文件版本-00 用于兼容文件格式升级
|
||||
# 'file_length': [], # 文件长度(自动生成)
|
||||
# 'md5': [], # 文件MD5(自动生成)
|
||||
'encrypt': [0x01], # 默认加密算法
|
||||
'update_type': [0x01], # APP升级
|
||||
'update_spec': [0x00, 0x00, 0x00, 0x00], # 升级特征字
|
||||
'update_verison': [0x02, 0x00, 0x00, 0x01], # 升级版本号
|
||||
'update_date': [0x22, 0x04, 0x24], # 升级版本日期
|
||||
# 'area_code': [], # 省份特征
|
||||
# 'uptate_str': [], # 升级段描述
|
||||
# 'device_str': [], # 设备特征描述
|
||||
# 'hex_name': [], # Hex文件名(自动读取)
|
||||
|
||||
# 文件Hex结构信息
|
||||
# 'flash_addr': 0x3E8020, # 程序起始地址
|
||||
# 'flash_size': 0x005FC0, # 程序空间大小
|
||||
}
|
||||
|
||||
data_bin = path_bin.read_bytes()
|
||||
md5_ctx = hashlib.md5()
|
||||
md5_ctx.update(data_bin)
|
||||
config["md5"] = list(md5_ctx.digest())
|
||||
config['file_length'] = conv_int_to_array(len(data_bin))
|
||||
config['hex_name'] = list(path_bin.name.encode())[:80]
|
||||
|
||||
if (header:= build_header(config, 128)) is None:
|
||||
raise Exception("Header tag oversize. ")
|
||||
if (header_512:= build_header(config, 512)) is None:
|
||||
raise Exception("Header tag oversize. ")
|
||||
|
||||
data_encrypt = file_encryption(data_bin)
|
||||
|
||||
print("Upgrade file generated successfully.")
|
||||
print(f"\t header_length={len(header)}, bin_length={len(data_bin)}[{hex(len(data_bin))}]")
|
||||
print(f"\t file md5: {trans_list_to_str(config['md5'])}")
|
||||
file1 = path_bin.parent / (path_bin.stem + '.dat')
|
||||
file1.write_bytes(header + data_bin)
|
||||
file2 = path_bin.parent / (path_bin.stem + '_h512.dat')
|
||||
file2.write_bytes(header_512 + data_bin)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
""" 升级测试 """
|
||||
path_file = Path("F:\\Work\\FPGA\\Test\\Vivado\\test_update\\test_update.vitis\\upgrade_system\\Debug\\sd_card\\BOOT.dat")
|
||||
|
||||
Reference in New Issue
Block a user