移植Test命令,验证成功
EJ EX 写工厂信息验证成功
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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 //数组结束
|
||||
};
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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 //数组结束
|
||||
};
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user