- 重命名模式文件;
- 更新适配器参数项; - 修改优化器报文函数调用; - 添加自定义升级模式标志位; - 添加升级包生成流程函数;
This commit is contained in:
@@ -91,8 +91,8 @@ modbus_map = {
|
|||||||
0xA5: ["抖动频率上限", 2],
|
0xA5: ["抖动频率上限", 2],
|
||||||
0xA6: ["抖动频率下限", 2],
|
0xA6: ["抖动频率下限", 2],
|
||||||
0xA7: ["电池电压判断限值", 2],
|
0xA7: ["电池电压判断限值", 2],
|
||||||
0xA8: ["保留", 1],
|
0xA8: ["MPPT追踪模式", 1],
|
||||||
0xA9: ["保留", 1],
|
0xA9: ["ADC参考电压", 1],
|
||||||
0xAA: ["保留", 1],
|
0xAA: ["保留", 1],
|
||||||
0xAB: ["保留", 1],
|
0xAB: ["保留", 1],
|
||||||
0xAC: ["保留", 1],
|
0xAC: ["保留", 1],
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import time
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from serial import Serial
|
from serial import Serial
|
||||||
from utl import trans_list_to_str
|
from utl import trans_list_to_str
|
||||||
from func_frame import make_frame_dlt645, check_frame_dlt645
|
from func_frame import make_frame_modbus, check_frame_modbus
|
||||||
|
|
||||||
modbus_map = {
|
modbus_map = {
|
||||||
# 1 - Hex
|
# 1 - Hex
|
||||||
@@ -150,7 +150,7 @@ class LaminaController:
|
|||||||
break
|
break
|
||||||
|
|
||||||
try:
|
try:
|
||||||
output_text = check_frame_dlt645(frame_recv, block=self.block)
|
output_text = check_frame_modbus(frame_recv, self.block['data'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
cnt += 1
|
cnt += 1
|
||||||
@@ -168,7 +168,7 @@ class LaminaController:
|
|||||||
self.block['data']['type'] = 'read'
|
self.block['data']['type'] = 'read'
|
||||||
self.block['data']['data_addr'] = daddr
|
self.block['data']['data_addr'] = daddr
|
||||||
self.block['data']['data_len'] = dlen
|
self.block['data']['data_len'] = dlen
|
||||||
frame = make_frame_dlt645(self.block)
|
frame = make_frame_modbus(self.block['data'])
|
||||||
|
|
||||||
return self.__transfer_data(frame)
|
return self.__transfer_data(frame)
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ class LaminaController:
|
|||||||
self.block['data']['type'] = 'write_one'
|
self.block['data']['type'] = 'write_one'
|
||||||
self.block['data']['data_addr'] = daddr
|
self.block['data']['data_addr'] = daddr
|
||||||
self.block['data']['data_val'] = dval
|
self.block['data']['data_val'] = dval
|
||||||
frame = make_frame_dlt645(self.block)
|
frame = make_frame_modbus(self.block['data'])
|
||||||
|
|
||||||
return self.__transfer_data(frame)
|
return self.__transfer_data(frame)
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ class LaminaController:
|
|||||||
self.block['data']['type'] = 'write_dual'
|
self.block['data']['type'] = 'write_dual'
|
||||||
self.block['data']['data_addr'] = daddr
|
self.block['data']['data_addr'] = daddr
|
||||||
self.block['data']['data_val'] = dval
|
self.block['data']['data_val'] = dval
|
||||||
frame = make_frame_dlt645(self.block)
|
frame = make_frame_modbus(self.block['data'])
|
||||||
|
|
||||||
return self.__transfer_data(frame)
|
return self.__transfer_data(frame)
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ class LaminaController:
|
|||||||
self.block['data']['type'] = 'write_str'
|
self.block['data']['type'] = 'write_str'
|
||||||
self.block['data']['data_addr'] = daddr
|
self.block['data']['data_addr'] = daddr
|
||||||
self.block['data']['data_val'] = dval
|
self.block['data']['data_val'] = dval
|
||||||
frame = make_frame_dlt645(self.block)
|
frame = make_frame_modbus(self.block['data'])
|
||||||
|
|
||||||
return self.__transfer_data(frame)
|
return self.__transfer_data(frame)
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ class LaminaController:
|
|||||||
self.block['data']['file'] = Path(path_bin).read_bytes()
|
self.block['data']['file'] = Path(path_bin).read_bytes()
|
||||||
self.block['data']['header_offset'] = 184
|
self.block['data']['header_offset'] = 184
|
||||||
# 启动帧
|
# 启动帧
|
||||||
frame_master = bytearray(make_frame_dlt645(self.block))
|
frame_master = bytearray(make_frame_modbus(self.block['data']))
|
||||||
|
|
||||||
# 等待擦除完成返回
|
# 等待擦除完成返回
|
||||||
try_times = 30
|
try_times = 30
|
||||||
@@ -220,7 +220,7 @@ class LaminaController:
|
|||||||
try_times -= 1
|
try_times -= 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
_, _, self.block["data"]['file_block_size'] = check_frame_dlt645(frame_slave, self.block)
|
_, _, self.block["data"]['file_block_size'] = check_frame_modbus(frame_slave, self.block['data'])
|
||||||
break
|
break
|
||||||
|
|
||||||
if self.block["data"]['file_block_size'] == 0:
|
if self.block["data"]['file_block_size'] == 0:
|
||||||
@@ -233,7 +233,7 @@ class LaminaController:
|
|||||||
self.block["data"]['step'] = 'trans'
|
self.block["data"]['step'] = 'trans'
|
||||||
data_remain = len(self.block["data"]['file']) - self.block['data']['header_offset']
|
data_remain = len(self.block["data"]['file']) - self.block['data']['header_offset']
|
||||||
while data_remain > 0:
|
while data_remain > 0:
|
||||||
frame_master = bytearray(make_frame_dlt645(self.block))
|
frame_master = bytearray(make_frame_modbus(self.block['data']))
|
||||||
|
|
||||||
cnt = 0
|
cnt = 0
|
||||||
while cnt < self.retry:
|
while cnt < self.retry:
|
||||||
@@ -250,7 +250,7 @@ class LaminaController:
|
|||||||
break
|
break
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ret = check_frame_dlt645(frame_slave, self.block)
|
ret = check_frame_modbus(frame_slave, self.block['data'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
ret = False, 0, 0
|
ret = False, 0, 0
|
||||||
@@ -267,7 +267,7 @@ class LaminaController:
|
|||||||
|
|
||||||
# 结束升级
|
# 结束升级
|
||||||
self.block["data"]['step'] = 'end'
|
self.block["data"]['step'] = 'end'
|
||||||
frame_master = bytearray(make_frame_dlt645(self.block))
|
frame_master = bytearray(make_frame_modbus(self.block['data']))
|
||||||
|
|
||||||
cnt = 0
|
cnt = 0
|
||||||
while cnt < self.retry:
|
while cnt < self.retry:
|
||||||
@@ -284,7 +284,7 @@ class LaminaController:
|
|||||||
break
|
break
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ret = check_frame_dlt645(frame_slave, self.block)
|
ret = check_frame_modbus(frame_slave, self.block['data'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
ret = False, 0, 0
|
ret = False, 0, 0
|
||||||
|
|||||||
@@ -203,6 +203,10 @@ def build_header_new(config: dict):
|
|||||||
|
|
||||||
m_file_header[92: 94] = config['area_code']
|
m_file_header[92: 94] = config['area_code']
|
||||||
m_file_header[94: 158] = config['hex_name']
|
m_file_header[94: 158] = config['hex_name']
|
||||||
|
if 'upgrade_type' in config.keys():
|
||||||
|
m_file_header[158: 160] = config['upgrade_type']
|
||||||
|
m_file_header[160: 182] = [0x00] * 22
|
||||||
|
else:
|
||||||
m_file_header[158: 182] = [0x00] * 24
|
m_file_header[158: 182] = [0x00] * 24
|
||||||
|
|
||||||
m_file_header = bytearray(m_file_header)
|
m_file_header = bytearray(m_file_header)
|
||||||
@@ -385,6 +389,16 @@ 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 task5():
|
||||||
|
""" 文件缓冲区对比测试 """
|
||||||
|
file_dat = Path(r"test\p280039\result\lamina_controller_dsp_t1.dat")
|
||||||
|
file_dat_buffer = Path(r"test\p280039\result\lamina_controller_dsp_buffer.bin")
|
||||||
|
file_dat_buffer.exists(), file_dat.exists()
|
||||||
|
data_dat = file_dat.read_bytes()
|
||||||
|
data_dat_buffer = file_dat_buffer.read_bytes()
|
||||||
|
for i in range(len(data_dat)):
|
||||||
|
if data_dat[i] != data_dat_buffer[2*i]:
|
||||||
|
print(f"Diff in {hex(i)}, Data: {data_dat[i]}!={data_dat_buffer[2*i]}")
|
||||||
|
|
||||||
def GenerateImage_SLCP001_p460(path_boot, path_main, path_back):
|
def GenerateImage_SLCP001_p460(path_boot, path_main, path_back):
|
||||||
""" 叠光适配器-460平台版本 镜像生成 """
|
""" 叠光适配器-460平台版本 镜像生成 """
|
||||||
@@ -454,6 +468,7 @@ def GeneratePackage_XXX001_p280039(path_hex):
|
|||||||
'prog_id': list(b"SLCP001"), # 程序识别号
|
'prog_id': list(b"SLCP001"), # 程序识别号
|
||||||
'prog_type': 'app', # 程序类型
|
'prog_type': 'app', # 程序类型
|
||||||
'area_code': [0x00, 0x00], # 地区
|
'area_code': [0x00, 0x00], # 地区
|
||||||
|
'upgrade_type': [0x00, 0x00], # 升级方式(0-片外缓冲, 1-片内缓冲, 2-升级备份)
|
||||||
}
|
}
|
||||||
|
|
||||||
path_hex = Path(path_hex)
|
path_hex = Path(path_hex)
|
||||||
@@ -537,18 +552,24 @@ def Process2():
|
|||||||
file_bin.write_bytes(data_bins)
|
file_bin.write_bytes(data_bins)
|
||||||
|
|
||||||
def Process3():
|
def Process3():
|
||||||
""" 升级包生成流程 """
|
""" 叠光控制器DSP升级包生成流程 """
|
||||||
root = Path(r"test\p280039")
|
root = Path(r"test\p280039")
|
||||||
result = Path(r"test\p280039\result")
|
result = Path(r"test\p280039\result")
|
||||||
|
|
||||||
hex_main = root / r"lamina_controller_dsp_t1.hex"
|
hex_main = root / r"lamina_controller_dsp_t1.hex"
|
||||||
file_package = result / f'{hex_main.stem}.dat'
|
file_package = result / f'{hex_main.stem}.dat'
|
||||||
file_bin = result / f'{hex_main.stem}.bin'
|
file_bin = result / f'{hex_main.stem}.bin'
|
||||||
|
file_package_buffer = result / f'{hex_main.stem}.datbuffer'
|
||||||
|
|
||||||
data_package, data_bins = GeneratePackage_XXX001_p280039(hex_main)
|
data_package, data_bins = GeneratePackage_XXX001_p280039(hex_main)
|
||||||
file_package.write_bytes(data_package)
|
file_package.write_bytes(data_package)
|
||||||
file_bin.write_bytes(data_bins)
|
file_bin.write_bytes(data_bins)
|
||||||
|
|
||||||
|
data_buff = bytearray(2 * len(data_package))
|
||||||
|
for i in range(len(data_package)):
|
||||||
|
data_buff[2*i] = data_package[i]
|
||||||
|
file_package_buffer.write_bytes(data_buff)
|
||||||
|
|
||||||
|
|
||||||
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")
|
||||||
|
|||||||
Reference in New Issue
Block a user