- 重命名模式文件;

- 更新适配器参数项;
 - 修改优化器报文函数调用;
 - 添加自定义升级模式标志位;
 - 添加升级包生成流程函数;
This commit is contained in:
何 泽隆
2024-08-27 21:20:10 +08:00
parent b407fe1f27
commit 5cb2a423c6
4 changed files with 36 additions and 15 deletions

View File

@@ -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],

View File

@@ -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

View File

@@ -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")