diff --git a/checher_slave.uvprojx b/checher_slave.uvprojx index 1253d31..991cf16 100644 --- a/checher_slave.uvprojx +++ b/checher_slave.uvprojx @@ -10,7 +10,7 @@ app 0x4 ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC + 5060960::V5.06 update 7 (build 960)::.\ARMCC 0 @@ -185,6 +185,7 @@ 0 0 0 + 0 0 0 8 @@ -351,7 +352,7 @@ 0 0 0 - 0 + 4 @@ -1247,6 +1248,7 @@ 0 0 0 + 0 0 0 8 @@ -1413,7 +1415,7 @@ 0 0 0 - 0 + 4 @@ -1860,7 +1862,7 @@ 2 2 2 - 2 + 0 @@ -2924,7 +2926,7 @@ 2 2 2 - 2 + 0 @@ -3466,7 +3468,7 @@ 2 2 2 - 2 + 0 @@ -3570,7 +3572,7 @@ 2 2 2 - 2 + 0 @@ -3649,7 +3651,7 @@ 2 2 2 - 2 + 0 diff --git a/source/ReadMe.txt b/source/ReadMe.txt index 6e27929..e3e7f5a 100644 --- a/source/ReadMe.txt +++ b/source/ReadMe.txt @@ -181,4 +181,7 @@ 移植与雷管通信相关代码,编译通过 2023.10.7 实现大部分小板命令 - \ No newline at end of file +2023.10.7 + 添加iic模块升级相关命令 + 添加下载模块程序指令0xec + diff --git a/source/elec_det/driver/EWDriver.c b/source/elec_det/driver/EWDriver.c index 92d3c29..55f033f 100644 --- a/source/elec_det/driver/EWDriver.c +++ b/source/elec_det/driver/EWDriver.c @@ -1283,7 +1283,7 @@ uint8_t EW_Inspect(uint16_t bgaddr ,uint16_t endaddr,uint16_t state,uint8_t* buf @param 反码状态 0 比较通过不反码 1 比较通过反码 @param */ -uint8_t EW_CheckRunCfg(uint16_t addr,uint32_t cfg_mask ,uint16_t cfg_state,uint8_t* rtv) +uint8_t EW_CheckRunCfg(uint16_t addr,uint32_t cfg_mask ,uint32_t cfg_state,uint8_t* rtv) { addr<<=6; addr = (addr & 0xFFC0) | 31; @@ -1396,6 +1396,7 @@ uint8_t EW_SetReportCfg(uint8_t speed,uint8_t cur) EW_CommBuf[2] = speed; EW_CommBuf[3] = cur; DMod_SendBytes((uint8_t*)EW_CommBuf,4,EW_DMOD_Peroid,0); + return 0; } /* @@ -1532,4 +1533,6 @@ uint8_t EW_ReadUID(uint16_t addr,uint8_t* uid,uint8_t uid_len) uc_ack = 1; } return uc_ack; -} \ No newline at end of file +} + + diff --git a/source/elec_det/driver/EWDriver.h b/source/elec_det/driver/EWDriver.h index 1cb42cc..0e1ca48 100644 --- a/source/elec_det/driver/EWDriver.h +++ b/source/elec_det/driver/EWDriver.h @@ -279,7 +279,7 @@ uint8_t EW_Inspect(uint16_t bgaddr ,uint16_t endaddr,uint16_t state,uint8_t* buf @param 反码状态 0 比较通过不反码 1 比较通过反码 @param */ -uint8_t EW_CheckRunCfg(uint16_t addr,uint32_t cfg_mask ,uint16_t cfg_state,uint8_t* rtv); +uint8_t EW_CheckRunCfg(uint16_t addr,uint32_t cfg_mask ,uint32_t cfg_state,uint8_t* rtv); /* @brief 配置验证 @param addr 通信地址 diff --git a/source/elec_det/elec_cmd.c b/source/elec_det/elec_cmd.c index d8d863f..2b93992 100644 --- a/source/elec_det/elec_cmd.c +++ b/source/elec_det/elec_cmd.c @@ -1,14 +1,16 @@ #include "elec_det.h" #include "commend.h" #include "mystring.h" - - - +#include "hardware/jw3425iic.h" +#include "interface/BaseChecker.h" +#include "base/define.h" +#include "base/utility.h" // 电子模块相关调试命令 +// 运行检测方案 static int cmd_check(list_def *argv) { array_def *data=arr_creat(); @@ -21,9 +23,73 @@ commend_export(check,cmd_check,"start check") - - - +// 通过iic擦除芯片 +static int cmd_iic_erase(list_def *argv) +{ + if(list_length(argv)<3){ + cmd_print("param num too less."); + return -1; + } + int mtp_addr=str_atoi(list_get_str(argv,1)); + int erase_mode=str_atoi(list_get_str(argv,2)); + int ret=0; + checker_runcfg.params[0]=(uint16_t)mtp_addr; + checker_runcfg.params[1]=(uint16_t)erase_mode; + checker_runcfg.param_count=2; + MC_EraseMTP(); + ret=checker_runcfg.excue_rtv; + cmd_print("cmd end,ret=%d.",ret); + return 0; +} +commend_export(iic_erase,cmd_iic_erase,"erase mtp via iic,param:mtp_addr,erase_mode") + + + +// 通过iic升级芯片 +static int cmd_iic_updata(list_def *argv) +{ + if(list_length(argv)<3){ + cmd_print("param num too less."); + return -1; + } + int mtp_addr=str_atoi(list_get_str(argv,1)); + int data_length=str_atoi(list_get_str(argv,2)); + int ret=0; + uint32_t crc32=0; + checker_runcfg.params[0]=(uint16_t)mtp_addr; + checker_runcfg.params[1]=(uint16_t)data_length; + checker_runcfg.param_count=2; + crc32=Crc32Calu((uint32_t*)MC_CODE_ADDR,16*1024); + boardinfo_un.boardinfo.mc_ICodeCrc32=crc32; + cmd_print("crc32=0x%04x.",crc32); + MC_IICUpdateMTP(); + ret=checker_runcfg.excue_rtv; + cmd_print("cmd end,ret=%d.",ret); + return 0; +} +commend_export(iic_updata,cmd_iic_updata,"updata mtp via iic,param:mtp_addr,data_length") + + + +// 通过iic读取mtp +static int cmd_iic_read(list_def *argv) +{ + if(list_length(argv)<3){ + cmd_print("param num too less."); + return -1; + } + int mtp_addr=str_atoi(list_get_str(argv,1)); + int data_length=str_atoi(list_get_str(argv,2)); + int ret=0; + checker_runcfg.params[0]=(uint16_t)mtp_addr; + checker_runcfg.params[1]=(uint16_t)data_length; + checker_runcfg.param_count=2; + MC_IICReadMTP(); + ret=checker_runcfg.excue_rtv; + cmd_print("cmd end,ret=%d.",ret); + return 0; +} +commend_export(iic_read,cmd_iic_read,"read mtp via iic,param:mtp_addr,data_length") diff --git a/source/elec_det/interface/EWChecker.c b/source/elec_det/interface/EWChecker.c index e6d846d..729ba90 100644 --- a/source/elec_det/interface/EWChecker.c +++ b/source/elec_det/interface/EWChecker.c @@ -121,7 +121,7 @@ void EW_Updata(void) { Checker_RunCfg_st *cfg=&checker_runcfg; uint8_t ret=0; - uint8_t *data=(uint8_t *)MC_CODE_ADDR; + uint8_t *data=(uint8_t *)MC_CODE_ADDR+UPDATA_BASE_ADDR; uint16_t len=UPDATA_DATA_LEN; uint16_t addr=UPDATA_BASE_ADDR; uint8_t pack_len=UPDATA_PACK_LEN; diff --git a/source/main/compiler_info.h b/source/main/compiler_info.h index aef8df8..184cfa4 100644 --- a/source/main/compiler_info.h +++ b/source/main/compiler_info.h @@ -6,7 +6,7 @@ -#define BUILD_DATE "2023-10-07 18:12:30" +#define BUILD_DATE "2023-10-07 22:39:04" #define SOFT_VERSION "0.03" diff --git a/source/task/transmit.c b/source/task/transmit.c index c71ddd2..6fb7016 100644 --- a/source/task/transmit.c +++ b/source/task/transmit.c @@ -438,6 +438,33 @@ static ucport_def *tran_upslave(tran_def *t,uint8_t cmd,array_def *data) +static ucport_def *tran_upjwtcode(tran_def *t,uint8_t cmd,array_def *data) +{ + if(arr_length(data)<1){ + DBG_WARN("cmd format err."); + return 0; + } + uint8_t op=arr_get(data,0); + updata_def *u=calloc(1,sizeof(updata_def)); + arr_remove(data,0,1); + u->recved_bytes=0; + u->addr=(uint8_t *)flash_get_jwtcode(); + u->u.p=t; + if(op==1) + { + flash_erase_jwtcode(); + updata_prepar_write(u,cmd,data); + }else if(op==0) + { + updata_prepar_read(u,cmd,data); + } + else{ + DBG_WARN("cmd=%02x err,op!=0 or 1 .",cmd); + free(u); + return 0; + } + return (ucport_def *)u; +} @@ -448,6 +475,7 @@ transmit_export(ym_checker,0x32,tran_scheme) transmit_export(ym_checker,0x36,tran_judge) transmit_export(ym_checker,0xed,tran_upself) transmit_export(ym_checker,0xee,tran_upslave) +transmit_export(ym_checker,0xec,tran_upjwtcode)