解决自动更新bootloader死机的问题

软件版本2.00
解决检测任务中重试失败后不会填充返回值的bug
This commit is contained in:
ranchuan
2023-10-16 18:53:12 +08:00
parent 54bc5b44ac
commit cbbb2af298
21 changed files with 337 additions and 110 deletions

View File

@@ -94,7 +94,12 @@ static int elec_parper_power(void)
ret=checker_runcfg.excue_rtv;
if(ret){
DBG_WARN("parper power failed,ret=%d.",ret);
}else{
checker_runcfg.power_prapare_exe=1;
}
JQBUS_OFF;
delay_ms(20);
PowerCalibration_set(POWER_DEF_V,POWER_DEF_V-10);
return ret;
}
@@ -133,7 +138,7 @@ array_def *elec_bootinfo(void)
Ye_BoardCheck();
board_st.hard_v=sys_param()->hard_version;
board_st.resistor_diff=sys_param()->resistor_diff;
board_st.hard_v=15;
board_st.hard_v=19;
array_def *r=arr_creat();
arr_append(r,0);
arr_appends(r,&board_st,sizeof(BoartCheck_st));
@@ -294,11 +299,11 @@ static int elec_code_param_check(array_def *uid_psw)
if((uid_psw==0)||(arr_length(uid_psw)==0)){
return 1;
}
if(arr_length(uid_psw)!=(arr_get(uid_psw,0)+arr_get(uid_psw,1)+1)){
if(arr_length(uid_psw)!=(arr_get(uid_psw,0)+arr_get(uid_psw,1)+3)){
return 2;
}
if(arr_get(uid_psw,2)!=0){
return 2;
return 3;
}
if((arr_get(uid_psw,0)>13)||(arr_get(uid_psw,1)>8)){
return 4;
@@ -365,10 +370,11 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
uint8_t res=0;
array_def *r=arr_creat();
CHECK_DO(s->data,arr_delete);
res=checker_runcfg.power_prapare_exe;
memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
checker_runcfg.power_prapare_exe=res;
chip_type=(board_st.plan_id >> 12 ) & 0x0F;
if(elec_code_param_check(uid_psw)==0){
checker_runcfg.code_bind_check_flag = 1;//检测 绑定一起执行
elec_code_load_param(uid_psw);
}
@@ -402,13 +408,18 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
break;
checker_runcfg.rtv_index-=checker_runcfg.rtv_count;
}
DBG_LOG("task_index:%d,taskid:%d,ret=%d.",task_index,taskid,checker_runcfg.excue_rtv);
if(checker_runcfg.excue_rtv){
checker_runcfg.rtv_index+=checker_runcfg.rtv_count;
}
DBG_LOG("task_index:%d,taskid:%d,ret=%d,rtv_index=%d.",task_index,taskid,checker_runcfg.excue_rtv,
checker_runcfg.rtv_index);
// 找寻下一个任务
task_index++;
if(checker_runcfg.excue_rtv != 0){
uint8_t err_to=checker_runcfg.task_info.error_jumpto;
uint8_t temp;
if(err_to==0xff) continue;
if(err_to>s->task_num-1) err_to=s->task_num-1;
for(;task_index<err_to;task_index++){
Checker_MaskResult(1,task_index);