移植Test命令,验证成功

EJ EX 写工厂信息验证成功
This commit is contained in:
ranchuan
2023-10-12 18:43:17 +08:00
parent f0f36cf79a
commit 17b4ebf188
25 changed files with 2363 additions and 87 deletions

View File

@@ -213,4 +213,21 @@ uint8_t Checker_FunIsValid(CheckerTask* taskArray,uint16_t run_index)
}
return 0;
}
/*
@brief 缓存空间检测
@rtv 1 失败 0 成功
*/
uint8_t Checker_FacBufCheck()
{
uint8_t uc_len = Checker_FacBuf[0];
uint8_t uc_crc = Checker_FacBuf[1];
if(uc_len > (CHECKER_FAC_BUF_LEN-2) || uc_len == 0)
{
return 1;
}
if(uc_crc != CheckCRC_8(Checker_FacBuf+2,uc_len))
{
return 1;
}
return 0;
}

View File

@@ -98,4 +98,9 @@ uint8_t JQXT_Test_IsNeedBind(void);
检测执行函数是否正常
*/
uint8_t Checker_FunIsValid(CheckerTask* taskArray,uint16_t run_index);
/*
@brief 缓存空间检测
@rtv 1 失败 0 成功
*/
uint8_t Checker_FacBufCheck(void);
#endif

View File

@@ -1058,6 +1058,107 @@ void JQ_Test_ReadVersion(void)
Checker_SetRtv(&us_temp,checker_runcfg.rtv_count);
}
/*
@brief 写入OTP数据
@param0 OTP起始地址
@param1 缓存首地址
@param2 写入长度
*/
void JQ_Test_WriteFacBuff(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_ack;
uint8_t uc_otpAddr = checker_runcfg.params[0];
uint8_t uc_bufIndex = checker_runcfg.params[1];
uint8_t uc_writeCount = checker_runcfg.params[2];
uint8_t uc_count = 0;
uint8_t uc_wcount ;
uint8_t ul_temp[4];
//Checker_FacBuf 验证合法性
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
JQ_EnWOTP();
JQ_EnWOTP();
for(uc_count = 0; uc_count < uc_writeCount;uc_count++,uc_otpAddr++,uc_bufIndex++)
{
uc_ack = JQ_ReadOTP(CHECKER_NET_ID,uc_otpAddr,1,ul_temp);
if(uc_ack < 1)
{
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
if(Checker_FacBuf[uc_bufIndex+2] == ul_temp[0])
{
continue;
}
if(ul_temp[0] != 0)
{
if((ul_temp[0] & Checker_FacBuf[uc_bufIndex+2]) != ul_temp[0])//OTP不能由1变成0
{
uc_rtv = 3;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
}
uc_wcount = JQ_WriteOTP(uc_otpAddr,1,&Checker_FacBuf[uc_bufIndex+2]);
if(uc_wcount != 1)
{
uc_rtv = 4;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
}
uc_rtv = 0;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
/*
@brief 验证OTP内部与缓存比较
@param0 OTP起始地址
@param1 缓存首地址
@param2 验证长度
*/
void JQ_Test_VerifyFacBuff(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_ack;
uint8_t uc_otpAddr = checker_runcfg.params[0];
uint8_t uc_bufIndex = checker_runcfg.params[1];
uint8_t uc_verifyCount = checker_runcfg.params[2];
uint8_t uc_count = 0;
uint8_t ul_temp[4];
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
for(uc_count = 0; uc_count < uc_verifyCount;uc_count++)
{
uc_ack = JQ_ReadOTP(CHECKER_NET_ID,uc_otpAddr,1,ul_temp);
if((uc_ack < 1) || (Checker_FacBuf[uc_bufIndex+2] != ul_temp[0]))
{
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
uc_bufIndex++;
uc_otpAddr++;
}
uc_rtv = 0;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
CheckerTask jqtaskArray[CHECKER_MAXID_COUNT] ={
Checker_PowerPrapare, //0 电源准备
JQ_Test_PowerOn, //1 上电充能
@@ -1094,6 +1195,8 @@ Checker_ResistorSample,//31 测量桥丝阻值
JQ_Test_EnOTPW ,//32 使能OTP写
JQ_Test_WriteVersion ,//33 写模块版本
JQ_Test_ReadVersion ,//34 读取版本号
JQ_Test_WriteFacBuff ,//35 写缓存数据
JQ_Test_VerifyFacBuff ,//36 验证缓存数据
(void*)0 //数组结束
};

View File

@@ -215,4 +215,18 @@ void JQ_Test_ReadVersion(void);
@param0 模块版本号
*/
void JQ_Test_WriteVersion(void);
/*
@brief 写入OTP数据
@param0 OTP起始地址
@param1 缓存首地址
@param2 写入长度
*/
void JQ_Test_WriteFacBuff(void);
/*
@brief 验证OTP内部与缓存比较
@param0 OTP起始地址
@param1 缓存首地址
@param2 验证长度
*/
void JQ_Test_VerifyFacBuff(void);
#endif

View File

@@ -480,34 +480,22 @@ void XT_Test_WriteShell(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_count = 0;
if((checker_runcfg.params[0] + checker_runcfg.params[1] > CHECKER_WRITE_BUF))
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
if(CheckCRC_8(&Checker_FacBuf[2],Checker_FacBuf[0]) != Checker_FacBuf[1])
//管壳号最长 13个字节
if((checker_runcfg.params[0] + checker_runcfg.params[1] > CHECKER_WRITE_BUF) || checker_runcfg.params[1] > 13)
{
uc_rtv = 1;
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
memset(XT_RunBuf,0,XT_CHECKER_RUN_BUF);
memcpy(XT_RunBuf,&Checker_FacBuf[2]+checker_runcfg.params[0],checker_runcfg.params[1]);
uc_rtv |= XT_Write_Shell(XT_RunBuf);
if(checker_runcfg.uid_len > 0)
{
uc_rtv |= XT_Read_Shell(checker_runcfg.writeuid,checker_runcfg.uid_len,XT_RunBuf+16);
}else{
uc_rtv |= XT_Read_Shell_All(XT_RunBuf+16);
}
for(uc_count = 0; uc_count < 13;uc_count++)
{
if(XT_RunBuf[uc_count] != XT_RunBuf[13+uc_count])
{
uc_rtv |= 0x01;
}
}
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
@@ -1237,7 +1225,49 @@ void XT_CurMonitor(void)
Checker_MaskResult(0,checker_runcfg.task_info.runindex);
}
/*
@brief 验证壳码 如果测试器有uid将采用uid方式通信
@param 命令缓存参数的起始
@param 验证数据长度
*/
void XT_Test_VerfyShell(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_count = 0;
uint8_t uc_index = 0;
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
//管壳号最长 13个字节
if((checker_runcfg.params[0] + checker_runcfg.params[1] > CHECKER_WRITE_BUF) || checker_runcfg.params[1] > 13)
{
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
memset(XT_RunBuf,0,XT_CHECKER_RUN_BUF);
if(checker_runcfg.uid_len > 0)
{
uc_rtv=XT_Read_Shell(checker_runcfg.writeuid,checker_runcfg.uid_len,XT_RunBuf);
if(uc_rtv) uc_rtv =3;
}else{
uc_rtv=XT_Read_Shell_All(XT_RunBuf);
if(uc_rtv) uc_rtv =4;
}
uc_index = checker_runcfg.params[0]+2;
for(uc_count = 0; uc_count < checker_runcfg.params[1];uc_count++)
{
if(Checker_FacBuf[uc_index++] != XT_RunBuf[uc_count])
{
uc_rtv =5;
break;
}
}
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
CheckerTask xttaskArray[CHECKER_MAXID_COUNT] ={
Checker_PowerPrapare, //0 电源准备
@@ -1278,6 +1308,7 @@ Checker_ResistorSample,//34 桥丝电阻测试
XT_Test_UID_PWD_Bind ,//35 检测过程中注码
XT_Test_UID_PWD_Verify,//36 验证注码
XT_OnLine_SCAN ,//37 模块在线检测
XT_Test_VerfyShell ,//38 验证管壳码
(void*)0 //数组结束
};

View File

@@ -240,6 +240,12 @@ void XT_OnLine_SCAN(void);
void XT_OFFLine_SCAN(void);
/*
@brief 验证壳码 如果测试器有uid将采用uid方式通信
@param 命令缓存参数的起始
@param 验证数据长度
*/
void XT_Test_VerfyShell(void);
/*
@brief 芯片离线检测
@param0 充电使能
@param1 采样周期 10ms
@@ -247,4 +253,5 @@ void XT_OFFLine_SCAN(void);
*/
void XT_CurMonitor(void);
#endif