- 重命名模式文件;
- 更新适配器参数项; - 修改优化器报文函数调用; - 添加自定义升级模式标志位; - 添加升级包生成流程函数;
This commit is contained in:
@@ -91,8 +91,8 @@ modbus_map = {
|
||||
0xA5: ["抖动频率上限", 2],
|
||||
0xA6: ["抖动频率下限", 2],
|
||||
0xA7: ["电池电压判断限值", 2],
|
||||
0xA8: ["保留", 1],
|
||||
0xA9: ["保留", 1],
|
||||
0xA8: ["MPPT追踪模式", 1],
|
||||
0xA9: ["ADC参考电压", 1],
|
||||
0xAA: ["保留", 1],
|
||||
0xAB: ["保留", 1],
|
||||
0xAC: ["保留", 1],
|
||||
|
||||
@@ -2,7 +2,7 @@ import time
|
||||
from pathlib import Path
|
||||
from serial import Serial
|
||||
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 = {
|
||||
# 1 - Hex
|
||||
@@ -150,7 +150,7 @@ class LaminaController:
|
||||
break
|
||||
|
||||
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:
|
||||
print(e)
|
||||
cnt += 1
|
||||
@@ -168,7 +168,7 @@ class LaminaController:
|
||||
self.block['data']['type'] = 'read'
|
||||
self.block['data']['data_addr'] = daddr
|
||||
self.block['data']['data_len'] = dlen
|
||||
frame = make_frame_dlt645(self.block)
|
||||
frame = make_frame_modbus(self.block['data'])
|
||||
|
||||
return self.__transfer_data(frame)
|
||||
|
||||
@@ -176,7 +176,7 @@ class LaminaController:
|
||||
self.block['data']['type'] = 'write_one'
|
||||
self.block['data']['data_addr'] = daddr
|
||||
self.block['data']['data_val'] = dval
|
||||
frame = make_frame_dlt645(self.block)
|
||||
frame = make_frame_modbus(self.block['data'])
|
||||
|
||||
return self.__transfer_data(frame)
|
||||
|
||||
@@ -184,7 +184,7 @@ class LaminaController:
|
||||
self.block['data']['type'] = 'write_dual'
|
||||
self.block['data']['data_addr'] = daddr
|
||||
self.block['data']['data_val'] = dval
|
||||
frame = make_frame_dlt645(self.block)
|
||||
frame = make_frame_modbus(self.block['data'])
|
||||
|
||||
return self.__transfer_data(frame)
|
||||
|
||||
@@ -192,7 +192,7 @@ class LaminaController:
|
||||
self.block['data']['type'] = 'write_str'
|
||||
self.block['data']['data_addr'] = daddr
|
||||
self.block['data']['data_val'] = dval
|
||||
frame = make_frame_dlt645(self.block)
|
||||
frame = make_frame_modbus(self.block['data'])
|
||||
|
||||
return self.__transfer_data(frame)
|
||||
|
||||
@@ -207,7 +207,7 @@ class LaminaController:
|
||||
self.block['data']['file'] = Path(path_bin).read_bytes()
|
||||
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
|
||||
@@ -220,7 +220,7 @@ class LaminaController:
|
||||
try_times -= 1
|
||||
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
|
||||
|
||||
if self.block["data"]['file_block_size'] == 0:
|
||||
@@ -233,7 +233,7 @@ class LaminaController:
|
||||
self.block["data"]['step'] = 'trans'
|
||||
data_remain = len(self.block["data"]['file']) - self.block['data']['header_offset']
|
||||
while data_remain > 0:
|
||||
frame_master = bytearray(make_frame_dlt645(self.block))
|
||||
frame_master = bytearray(make_frame_modbus(self.block['data']))
|
||||
|
||||
cnt = 0
|
||||
while cnt < self.retry:
|
||||
@@ -250,7 +250,7 @@ class LaminaController:
|
||||
break
|
||||
|
||||
try:
|
||||
ret = check_frame_dlt645(frame_slave, self.block)
|
||||
ret = check_frame_modbus(frame_slave, self.block['data'])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
ret = False, 0, 0
|
||||
@@ -267,7 +267,7 @@ class LaminaController:
|
||||
|
||||
# 结束升级
|
||||
self.block["data"]['step'] = 'end'
|
||||
frame_master = bytearray(make_frame_dlt645(self.block))
|
||||
frame_master = bytearray(make_frame_modbus(self.block['data']))
|
||||
|
||||
cnt = 0
|
||||
while cnt < self.retry:
|
||||
@@ -284,7 +284,7 @@ class LaminaController:
|
||||
break
|
||||
|
||||
try:
|
||||
ret = check_frame_dlt645(frame_slave, self.block)
|
||||
ret = check_frame_modbus(frame_slave, self.block['data'])
|
||||
except Exception as e:
|
||||
print(e)
|
||||
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[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 = 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
|
||||
|
||||
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):
|
||||
""" 叠光适配器-460平台版本 镜像生成 """
|
||||
@@ -454,6 +468,7 @@ def GeneratePackage_XXX001_p280039(path_hex):
|
||||
'prog_id': list(b"SLCP001"), # 程序识别号
|
||||
'prog_type': 'app', # 程序类型
|
||||
'area_code': [0x00, 0x00], # 地区
|
||||
'upgrade_type': [0x00, 0x00], # 升级方式(0-片外缓冲, 1-片内缓冲, 2-升级备份)
|
||||
}
|
||||
|
||||
path_hex = Path(path_hex)
|
||||
@@ -537,18 +552,24 @@ def Process2():
|
||||
file_bin.write_bytes(data_bins)
|
||||
|
||||
def Process3():
|
||||
""" 升级包生成流程 """
|
||||
""" 叠光控制器DSP升级包生成流程 """
|
||||
root = Path(r"test\p280039")
|
||||
result = Path(r"test\p280039\result")
|
||||
|
||||
hex_main = root / r"lamina_controller_dsp_t1.hex"
|
||||
file_package = result / f'{hex_main.stem}.dat'
|
||||
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)
|
||||
file_package.write_bytes(data_package)
|
||||
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__":
|
||||
# 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