添加单独注码命令,实现检测时注码
This commit is contained in:
@@ -1167,7 +1167,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>elec_det</GroupName>
|
<GroupName>elec_det</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1495,7 +1495,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>rt_thread</GroupName>
|
<GroupName>rt_thread</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1871,7 +1871,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>task</GroupName>
|
<GroupName>task</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1939,7 +1939,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>codec</GroupName>
|
<GroupName>codec</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
@@ -210,3 +210,6 @@
|
|||||||
2023.10.12
|
2023.10.12
|
||||||
添加 app_debug 分类 ,app 分类禁用调试,程序压缩到100k以下
|
添加 app_debug 分类 ,app 分类禁用调试,程序压缩到100k以下
|
||||||
app启动时如果boot魔数校验错误则自动升级bootloader
|
app启动时如果boot魔数校验错误则自动升级bootloader
|
||||||
|
2023.10.15
|
||||||
|
添加单独注码命令,实现检测时注码
|
||||||
|
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
CheckerTask_Info_st* task_info_array[PLAN_MAX_TASK];//方案参数结构体指针
|
CheckerTask_Info_st* task_info_array[PLAN_MAX_TASK];//方案参数结构体指针
|
||||||
|
int task_num;
|
||||||
int scheme_inited;
|
int scheme_inited;
|
||||||
array_def *data;
|
array_def *data;
|
||||||
}self_def;
|
}self_def;
|
||||||
@@ -37,13 +38,15 @@ typedef struct{
|
|||||||
static self_def g_self;
|
static self_def g_self;
|
||||||
|
|
||||||
|
|
||||||
|
int elec_check_scheme(void);
|
||||||
|
void elec_load_scheme(void);
|
||||||
|
int elec_parper_power(void);
|
||||||
|
|
||||||
|
|
||||||
// 初始化
|
// 初始化
|
||||||
int elec_init(void)
|
int elec_init(void)
|
||||||
{
|
{
|
||||||
void Ye_BoardInit(void);
|
void Ye_BoardInit(void);
|
||||||
int elec_parper_power(void);
|
|
||||||
Ye_BoardInit();
|
Ye_BoardInit();
|
||||||
elec_bootinfo();
|
elec_bootinfo();
|
||||||
DBG_LOG("local addr:%d.",elec_local_addr());
|
DBG_LOG("local addr:%d.",elec_local_addr());
|
||||||
@@ -56,9 +59,6 @@ int elec_scheme_init(void)
|
|||||||
{
|
{
|
||||||
self_def *s=&g_self;
|
self_def *s=&g_self;
|
||||||
int ret=0;
|
int ret=0;
|
||||||
int elec_check_scheme(void);
|
|
||||||
void elec_load_scheme(void);
|
|
||||||
int elec_parper_power(void);
|
|
||||||
if(elec_check_scheme()!=0){
|
if(elec_check_scheme()!=0){
|
||||||
// 方案校验失败
|
// 方案校验失败
|
||||||
DBG_WARN("scheme check failed.");
|
DBG_WARN("scheme check failed.");
|
||||||
@@ -149,9 +149,6 @@ array_def *elec_check_result(void)
|
|||||||
array_def *r=0;
|
array_def *r=0;
|
||||||
if(s->data){
|
if(s->data){
|
||||||
r=arr_duplicate(s->data);
|
r=arr_duplicate(s->data);
|
||||||
}else{
|
|
||||||
r=arr_creat();
|
|
||||||
arr_append(r,2);
|
|
||||||
}
|
}
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
@@ -257,7 +254,9 @@ static int elec_check_scheme(void)
|
|||||||
board_st.plan_id = ~0;
|
board_st.plan_id = ~0;
|
||||||
LED1_Out_Off;
|
LED1_Out_Off;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}else{
|
||||||
|
board_st.plan_id = *((uint32_t*)APP_TEST_PLAN_ADDR);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,18 +275,83 @@ static void elec_load_scheme(void)
|
|||||||
s->task_info_array[uc_index] = 0;
|
s->task_info_array[uc_index] = 0;
|
||||||
}
|
}
|
||||||
uc_index = 0;
|
uc_index = 0;
|
||||||
|
s->task_num=0;
|
||||||
while((pinfo_st->runindex != 0xFF) && (uc_index < PLAN_MAX_TASK))
|
while((pinfo_st->runindex != 0xFF) && (uc_index < PLAN_MAX_TASK))
|
||||||
{
|
{
|
||||||
s->task_info_array[uc_index++] = pinfo_st;
|
s->task_info_array[uc_index++] = pinfo_st;
|
||||||
|
s->task_num++;
|
||||||
ul_len = pinfo_st->param_rtv_count & 0x0F;
|
ul_len = pinfo_st->param_rtv_count & 0x0F;
|
||||||
ul_len = (ul_len<<1)+5;
|
ul_len = (ul_len<<1)+5;
|
||||||
|
|
||||||
pinfo_st = (CheckerTask_Info_st*)((uint8_t*)pinfo_st + ul_len);
|
pinfo_st = (CheckerTask_Info_st*)((uint8_t*)pinfo_st + ul_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 注码 参数校验
|
||||||
|
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)){
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if(arr_get(uid_psw,2)!=0){
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if((arr_get(uid_psw,0)>13)||(arr_get(uid_psw,1)>8)){
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注码 准备参数
|
||||||
|
static int elec_code_load_param(array_def *uid_psw)
|
||||||
|
{
|
||||||
|
uint8_t pwd_len=0,uid_len=0;
|
||||||
|
uid_len = arr_get(uid_psw,0);
|
||||||
|
pwd_len = arr_get(uid_psw,1);
|
||||||
|
checker_runcfg.uid_len=uid_len;
|
||||||
|
checker_runcfg.pwd_len=pwd_len;
|
||||||
|
memcpy(checker_runcfg.writeuid,arr_data(uid_psw)+3,uid_len);
|
||||||
|
memcpy(checker_runcfg.writepwd,arr_data(uid_psw)+3+uid_len,pwd_len);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测 准备参数
|
||||||
|
static int elec_check_load_task_param(uint8_t taskid,
|
||||||
|
CheckerTask_Info_st *task_par,CheckerTask task_fun)
|
||||||
|
{
|
||||||
|
memset(&checker_runcfg.task_info,0,sizeof(CheckerTask_Info_st));
|
||||||
|
memset(checker_runcfg.params,0,20);
|
||||||
|
checker_runcfg.param_count = 0;//参数个数
|
||||||
|
checker_runcfg.rtv_count = 0;//返回值个数
|
||||||
|
checker_runcfg.excue_rtv = 0;
|
||||||
|
checker_runcfg.task_info.retry_time = 0;
|
||||||
|
if(taskid>=CHECKER_MAXID_COUNT){
|
||||||
|
DBG_WARN("taskid=%d out of bound.",taskid);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if(task_par==0){
|
||||||
|
DBG_WARN("can not find task params.");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if(task_fun==0){
|
||||||
|
DBG_WARN("can not find task fun.");
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 装载参数
|
||||||
|
memcpy(&checker_runcfg.task_info,task_par,sizeof(CheckerTask_Info_st));
|
||||||
|
checker_runcfg.param_count = checker_runcfg.task_info.param_rtv_count & 0x0F;
|
||||||
|
checker_runcfg.rtv_count = (checker_runcfg.task_info.param_rtv_count >> 4) & 0x0F;
|
||||||
|
memcpy(checker_runcfg.params,checker_runcfg.task_info.params,checker_runcfg.param_count*2);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 进行检测
|
// 进行检测
|
||||||
array_def *elec_check_with_scheme(array_def *uid_psw)
|
array_def *elec_check_with_scheme(array_def *uid_psw)
|
||||||
{
|
{
|
||||||
@@ -300,7 +364,14 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
CheckerTask task_fun=0;
|
CheckerTask task_fun=0;
|
||||||
uint8_t res=0;
|
uint8_t res=0;
|
||||||
array_def *r=arr_creat();
|
array_def *r=arr_creat();
|
||||||
|
CHECK_DO(s->data,arr_delete);
|
||||||
|
memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
|
||||||
chip_type=(board_st.plan_id >> 12 ) & 0x0F;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
if(s->scheme_inited==0){
|
if(s->scheme_inited==0){
|
||||||
DBG_WARN("scheme not init.");
|
DBG_WARN("scheme not init.");
|
||||||
arr_append(r,1);
|
arr_append(r,1);
|
||||||
@@ -311,39 +382,16 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
arr_append(r,2);
|
arr_append(r,2);
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
|
|
||||||
int task_index=0;
|
int task_index=0;
|
||||||
int err_flag=0;
|
|
||||||
LED1_Out_Off;
|
LED1_Out_Off;
|
||||||
while((taskid_table[task_index]!=0xff)&&(task_index<PLAN_MAX_TASK)){
|
while(task_index<s->task_num){
|
||||||
memset(&checker_runcfg.task_info,0,sizeof(CheckerTask_Info_st));
|
|
||||||
taskid=taskid_table[task_index];
|
taskid=taskid_table[task_index];
|
||||||
memset(checker_runcfg.params,0,20);
|
|
||||||
checker_runcfg.param_count = 0;//参数个数
|
|
||||||
checker_runcfg.rtv_count = 0;//返回值个数
|
|
||||||
checker_runcfg.excue_rtv = 0;
|
|
||||||
checker_runcfg.task_info.retry_time = 0;
|
|
||||||
if(taskid>=CHECKER_MAXID_COUNT){
|
|
||||||
DBG_WARN("taskid=%d out of bound.",taskid);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
task_par= s->task_info_array[task_index];
|
|
||||||
if(task_par==0){
|
|
||||||
DBG_WARN("can not find task params.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
task_fun=tasks_fun_table[chip_type][taskid];
|
task_fun=tasks_fun_table[chip_type][taskid];
|
||||||
if(task_fun==0){
|
task_par= s->task_info_array[task_index];
|
||||||
DBG_WARN("can not find task fun.");
|
if(elec_check_load_task_param(taskid,task_par,task_fun)){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 装载参数
|
|
||||||
rt_memcpy(&checker_runcfg.task_info,task_par,sizeof(CheckerTask_Info_st));
|
|
||||||
checker_runcfg.param_count = checker_runcfg.task_info.param_rtv_count & 0x0F;
|
|
||||||
checker_runcfg.rtv_count = (checker_runcfg.task_info.param_rtv_count >> 4) & 0x0F;
|
|
||||||
rt_memcpy(checker_runcfg.params,checker_runcfg.task_info.params,checker_runcfg.param_count*2);
|
|
||||||
|
|
||||||
// 执行任务
|
// 执行任务
|
||||||
for(int i=0;i<1+task_par->retry_time;i++)
|
for(int i=0;i<1+task_par->retry_time;i++)
|
||||||
{
|
{
|
||||||
@@ -357,22 +405,16 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
DBG_LOG("task_index:%d,taskid:%d,ret=%d.",task_index,taskid,checker_runcfg.excue_rtv);
|
DBG_LOG("task_index:%d,taskid:%d,ret=%d.",task_index,taskid,checker_runcfg.excue_rtv);
|
||||||
|
|
||||||
// 找寻下一个任务
|
// 找寻下一个任务
|
||||||
if((checker_runcfg.excue_rtv != 0)
|
task_index++;
|
||||||
&& (checker_runcfg.task_info.error_jumpto != 0)
|
if(checker_runcfg.excue_rtv != 0){
|
||||||
&& (checker_runcfg.task_info.error_jumpto != 0xFF)
|
uint8_t err_to=checker_runcfg.task_info.error_jumpto;
|
||||||
)
|
uint8_t temp;
|
||||||
{
|
if(err_to>s->task_num-1) err_to=s->task_num-1;
|
||||||
uint8_t uc_index = task_index+1;//如果时跳至下一个,直接顺序执行
|
for(;task_index<err_to;task_index++){
|
||||||
task_index = checker_runcfg.task_info.error_jumpto;
|
Checker_MaskResult(1,task_index);
|
||||||
while(uc_index < task_index)
|
temp=(s->task_info_array[task_index]->param_rtv_count >> 4) & 0x0F;
|
||||||
{
|
checker_runcfg.rtv_index+=temp;
|
||||||
Checker_MaskResult(1,uc_index);//将跳过的步骤标记未执行
|
|
||||||
//调整参数返回值下标,将跳过的步骤里面的返回值存储空间保留
|
|
||||||
checker_runcfg.rtv_index += (s->task_info_array[uc_index]->param_rtv_count >> 4) & 0x0F;
|
|
||||||
uc_index++;
|
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
task_index++;//正常情况直接顺序执行
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -380,13 +422,29 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
|||||||
arr_appends(r,checker_runcfg.Task_Result,8);
|
arr_appends(r,checker_runcfg.Task_Result,8);
|
||||||
arr_appends(r,checker_runcfg.Task_Excute,8);
|
arr_appends(r,checker_runcfg.Task_Excute,8);
|
||||||
arr_appends(r,checker_runcfg.Test_Rtv,checker_runcfg.rtv_index*2);
|
arr_appends(r,checker_runcfg.Test_Rtv,checker_runcfg.rtv_index*2);
|
||||||
|
s->data=arr_duplicate(r);
|
||||||
|
return arr_temp(r);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 单独注码
|
||||||
|
array_def *elec_code(array_def *uid_psw)
|
||||||
|
{
|
||||||
|
self_def *s=&g_self;
|
||||||
|
array_def *r=arr_creat();
|
||||||
|
uint8_t ret=0;
|
||||||
|
int check_ret=0;
|
||||||
CHECK_DO(s->data,arr_delete);
|
CHECK_DO(s->data,arr_delete);
|
||||||
|
check_ret=elec_code_param_check(uid_psw);
|
||||||
|
if(check_ret){
|
||||||
|
arr_append(r,check_ret);
|
||||||
|
return arr_temp(r);
|
||||||
|
}
|
||||||
|
elec_code_load_param(uid_psw);
|
||||||
|
ret = XT_UID_PWD_Bind();
|
||||||
|
arr_append(r,ret);
|
||||||
s->data=arr_duplicate(r);
|
s->data=arr_duplicate(r);
|
||||||
return arr_temp(r);
|
return arr_temp(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -30,6 +30,7 @@ array_def *elec_check_resistor(void);
|
|||||||
|
|
||||||
array_def *elec_check_with_scheme(array_def *uid_psw);
|
array_def *elec_check_with_scheme(array_def *uid_psw);
|
||||||
|
|
||||||
|
array_def *elec_code(array_def *uid_psw);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2023-10-12 23:23:27"
|
#define BUILD_DATE "2023-10-15 20:45:20"
|
||||||
#define SOFT_VERSION "0.03"
|
#define SOFT_VERSION "2.00"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -193,6 +193,7 @@ static int sysinfo(list_def *argv)
|
|||||||
cmd_print("startup: %s",bk_get_currtype());
|
cmd_print("startup: %s",bk_get_currtype());
|
||||||
cmd_print("watch dog: %s",bk_wdog_fun()?"on":"off");
|
cmd_print("watch dog: %s",bk_wdog_fun()?"on":"off");
|
||||||
cmd_print("reboot times: %d",bk_reboot_times());
|
cmd_print("reboot times: %d",bk_reboot_times());
|
||||||
|
cmd_print("bootloader: %s",(bk_check_magic_num()==0)?"ok":"err");
|
||||||
print_sys_param(par);
|
print_sys_param(par);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,7 @@ import mycopy
|
|||||||
|
|
||||||
|
|
||||||
# 定义软件版本号
|
# 定义软件版本号
|
||||||
SOFT_VERION = "0.03"
|
SOFT_VERION = "2.00"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -351,6 +351,7 @@ void *tappend(void *p,void *del)
|
|||||||
{
|
{
|
||||||
temp_def *t=&g_tempptr;
|
temp_def *t=&g_tempptr;
|
||||||
void *ret=NULL;
|
void *ret=NULL;
|
||||||
|
if(p==NULL) return p;
|
||||||
rt_mutex_take(t->mutex,RT_WAITING_FOREVER);
|
rt_mutex_take(t->mutex,RT_WAITING_FOREVER);
|
||||||
{
|
{
|
||||||
if(tempptr_find(t,p)==0)
|
if(tempptr_find(t,p)==0)
|
||||||
|
@@ -46,7 +46,10 @@ static void slave_del(ucport_def *u)
|
|||||||
static int check_result_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
static int check_result_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
{
|
{
|
||||||
slave_def *s=(slave_def *)u;
|
slave_def *s=(slave_def *)u;
|
||||||
emit tran_reply_signal(u->p,arr_temp(elec_check_result()));
|
array_def *r=elec_check_result();
|
||||||
|
if(r){
|
||||||
|
emit tran_reply_signal(u->p,arr_temp(r));
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static ucport_def *check_result(tran_def *t, uint8_t cmd,array_def *data)
|
static ucport_def *check_result(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
@@ -60,6 +63,7 @@ static ucport_def *check_result(tran_def *t, uint8_t cmd,array_def *data)
|
|||||||
return (ucport_def *)u;
|
return (ucport_def *)u;
|
||||||
}
|
}
|
||||||
transmit_export(ym_slave,0x02,check_result)
|
transmit_export(ym_slave,0x02,check_result)
|
||||||
|
transmit_export(ym_slave,0x18,check_result)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user