ew写延时验证成功,ej写流水号验证成功

解决上位机协议crc错误依然执行命令的bug
    注意:小板方案中芯片类型与主板不同时,使用槽任务可能造成各种异常问题(死机,死循环,不返回数据等)
This commit is contained in:
ranchuan
2023-12-26 18:08:59 +08:00
parent a6ba0a1818
commit d22fdc1ccb
9 changed files with 73 additions and 10 deletions

View File

@@ -618,7 +618,24 @@
<Name></Name> <Name></Name>
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint/> <Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>108</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134339522</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>D:\work\SVN\鍐夊窛\mcu_program\checker_slave\source\rt_thread\board.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\checker_slave_app\source/rt_thread/board.c\108</Expression>
</Bp>
</Breakpoint>
<WatchWindow1> <WatchWindow1>
<Ww> <Ww>
<count>0</count> <count>0</count>
@@ -635,6 +652,21 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>state</ItemText> <ItemText>state</ItemText>
</Ww> </Ww>
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>cmd_buf</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>readbuf</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>JQ_SendRead</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<MemoryWindow1> <MemoryWindow1>
<Mm> <Mm>
@@ -648,7 +680,7 @@
<Mm> <Mm>
<WinNumber>2</WinNumber> <WinNumber>2</WinNumber>
<SubType>1</SubType> <SubType>1</SubType>
<ItemText>0x200079a0</ItemText> <ItemText>0x20003DD0</ItemText>
<AccSizeX>0</AccSizeX> <AccSizeX>0</AccSizeX>
</Mm> </Mm>
</MemoryWindow2> </MemoryWindow2>

View File

@@ -312,3 +312,7 @@
解决EW写流水号数组越界的bug 解决EW写流水号数组越界的bug
解决0x20指令只会解析第一个槽参数的bug 解决0x20指令只会解析第一个槽参数的bug
ew写延时添加crc8 ew写延时添加crc8
2023.12.26
ew写延时验证成功ej写流水号验证成功
解决上位机协议crc错误依然执行命令的bug
注意:小板方案中芯片类型与主板不同时,使用槽任务可能造成各种异常问题(死机,死循环,不返回数据等)

View File

@@ -66,7 +66,7 @@ array_def *protu_decode(protu_def *p,array_def *data)
{ {
// crc校验不对 // crc校验不对
DBG_WARN("recv data check error.h_crc=%02x %02x,crc=%02x %02x",chk_a,chk_b,arr_get(data,-2),arr_get(data,-1)); DBG_WARN("recv data check error.h_crc=%02x %02x,crc=%02x %02x",chk_a,chk_b,arr_get(data,-2),arr_get(data,-1));
//str_set(p->str_err,"recv data check error."); str_set(p->str_err,"recv data check error.");
} }
int cmd_no=arr_get(data,5)|(arr_get(data,6)<<8); int cmd_no=arr_get(data,5)|(arr_get(data,6)<<8);
// if(p->cmd_no==cmd_no) // if(p->cmd_no==cmd_no)

View File

@@ -197,6 +197,19 @@ elec_task_judge, //33 写模块版本
elec_task_judge, //34 读取版本号 elec_task_judge, //34 读取版本号
elec_task_judge, //35 写缓存数据 elec_task_judge, //35 写缓存数据
elec_task_judge, //36 验证缓存数据 elec_task_judge, //36 验证缓存数据
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge, //49
0, 0,
}; };
@@ -286,6 +299,17 @@ elec_task_judge, //35 检测过程中注码
elec_task_judge, //36 验证注码 elec_task_judge, //36 验证注码
elec_task_judge, //37 模块在线检测 elec_task_judge, //37 模块在线检测
elec_task_judge, //38 升级 elec_task_judge, //38 升级
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge,
elec_task_judge, //49
0, 0,
}; };

View File

@@ -1097,8 +1097,8 @@ void EW_Test_WriteSN(void)
void EW_Test_WriteDelay(void) void EW_Test_WriteDelay(void)
{ {
uint8_t uc_rtv=0; uint8_t uc_rtv=0;
uint8_t addr[2]={0x18/4,0xa8/4}; uint8_t addr[2]={0x48/4,0xa8/4};
uint8_t len=3; uint8_t len=4;
// 缓存开大一点防止数据越界 // 缓存开大一点防止数据越界
typedef union{ typedef union{
uint8_t arr[6]; uint8_t arr[6];
@@ -1117,7 +1117,7 @@ void EW_Test_WriteDelay(void)
// } // }
delay_ms(50); delay_ms(50);
temp.data=delay; temp.data=delay;
temp.arr[2]=CheckCRC_8(temp.arr,2); temp.arr[len-1]=CheckCRC_8(temp.arr,len-1);
uc_rtv |= EW_WriteMTP(checker_runcfg.netid,addr[i],temp.arr,len); uc_rtv |= EW_WriteMTP(checker_runcfg.netid,addr[i],temp.arr,len);
if(uc_rtv){ if(uc_rtv){
uc_rtv=2+i; uc_rtv=2+i;
@@ -1195,6 +1195,7 @@ CheckerExt_SetCbv, //37 设置电阻校准值
EW_Test_ReadSN, //38 读取流水号 EW_Test_ReadSN, //38 读取流水号
EW_Test_WriteSN, //39 写入流水号 EW_Test_WriteSN, //39 写入流水号
EW_Test_WriteDelay, //40 写固定延时 EW_Test_WriteDelay, //40 写固定延时
EW_Test_RunBoot, //41 复位0复位至boot1复位至app
(void*)0 //数组结束 (void*)0 //数组结束
}; };

View File

@@ -318,7 +318,7 @@ static int EW_TurnToBoot1(ew_updata_def *e)
delay_ms(5); delay_ms(5);
EW_EnWriteMTP(0,1); EW_EnWriteMTP(0,1);
delay_ms(5); delay_ms(5);
EW_RunBootLoader(0,1); EW_RunBootLoader(0,0);
delay_ms(500); delay_ms(500);
if(EW_bootCharg()==0) if(EW_bootCharg()==0)
return 0; return 0;
@@ -340,7 +340,7 @@ static int EW_TurnToBoot2(ew_updata_def *e)
int EW_TurnToBoot(ew_updata_def *e) int EW_TurnToBoot(ew_updata_def *e)
{ {
typedef int (*turnfun)(ew_updata_def *e); typedef int (*turnfun)(ew_updata_def *e);
turnfun func_table[]={EW_TurnToBoot2,EW_TurnToBoot2}; turnfun func_table[]={EW_TurnToBoot1,EW_TurnToBoot2};
int ret=0; int ret=0;
for(int i=0;i<2;i++){ for(int i=0;i<2;i++){
if(e->state!=1){ if(e->state!=1){

View File

@@ -87,7 +87,7 @@ static const uart_dtb g_uartdtb[]={
.uart=USART1, .uart=USART1,
.uart_clock_fun=RCC_APB2PeriphClockCmd, .uart_clock_fun=RCC_APB2PeriphClockCmd,
.uart_rcc=RCC_APB2Periph_USART1, .uart_rcc=RCC_APB2Periph_USART1,
.baudrate=57600, .baudrate=38400,
.irq_channel=USART1_IRQn, .irq_channel=USART1_IRQn,
.gpio_tx_clock_fun=RCC_APB2PeriphClockCmd, .gpio_tx_clock_fun=RCC_APB2PeriphClockCmd,

View File

@@ -6,7 +6,7 @@
#define BUILD_DATE "2023-12-25 17:21:14" #define BUILD_DATE "2023-12-26 17:20:22"
#define SOFT_VERSION "2.10" #define SOFT_VERSION "2.10"

View File

@@ -122,6 +122,8 @@ static void slave_adds(self_def *s)
t->task_index=arr_get(s->data,off+5); t->task_index=arr_get(s->data,off+5);
memcpy(t->params,arr_data(s->data)+off+6,t->par_count*2); memcpy(t->params,arr_data(s->data)+off+6,t->par_count*2);
task_slot_add_item(slot,t); task_slot_add_item(slot,t);
DBG_LOG("slot_index=%d,task_id=%d,par_count=%d,ret_count=%d",
t->slot_index,t->task_id,t->par_count,t->ret_count);
off+=6+t->par_count*2; off+=6+t->par_count*2;
} }
free(t); free(t);