启动时调压改为查找任务id0,自检信息中的方案id由方案初始化时确定
接收到升级方案命令时把本机方案状态设置为无效 检测电阻命令index为5时读取本机校准值
This commit is contained in:
@@ -240,4 +240,9 @@
|
||||
添加 DMod_FireBusReadDatasV2_RC 函数
|
||||
2023.11.1
|
||||
make 对文件名是区分大小写的...
|
||||
2023.11.3
|
||||
启动时调压改为查找任务id0,自检信息中的方案id由方案初始化时确定
|
||||
接收到升级方案命令时把本机方案状态设置为无效
|
||||
检测电阻命令index为5时读取本机校准值
|
||||
|
||||
|
||||
|
@@ -271,7 +271,7 @@ int flash_write(uint8_t *addr,const uint8_t *data,int len)
|
||||
if((uint32_t)data%4)
|
||||
{
|
||||
DBG_WARN("write addr err.");
|
||||
return -1;
|
||||
return 1;
|
||||
}
|
||||
uint32_t *t=(uint32_t *)data;
|
||||
uint32_t flash_addr=(uint32_t)addr;
|
||||
@@ -294,7 +294,7 @@ int flash_write(uint8_t *addr,const uint8_t *data,int len)
|
||||
{
|
||||
DBG_WARN("flash write failed.ret=%d",state);
|
||||
DBG_WARN("addr=%08X",flash_addr);
|
||||
ret=-1;
|
||||
ret=2;
|
||||
break;
|
||||
}
|
||||
flash_addr+=4;
|
||||
@@ -303,7 +303,7 @@ int flash_write(uint8_t *addr,const uint8_t *data,int len)
|
||||
if(memcmp(addr,data,(len/4)*4)!=0)
|
||||
{
|
||||
DBG_WARN("addr=%08x write/read data not equate.",addr);
|
||||
ret=-2;
|
||||
ret=3;
|
||||
}
|
||||
rt_mutex_release(s->mutex);
|
||||
return ret;
|
||||
|
@@ -74,16 +74,42 @@ int elec_scheme_init(void)
|
||||
}
|
||||
|
||||
|
||||
// 方案去初始化
|
||||
int elec_scheme_deinit(void)
|
||||
{
|
||||
self_def *s=&g_self;
|
||||
s->scheme_inited=0;
|
||||
board_st.plan_id = ~0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 找到第一个指定taskid的任务
|
||||
static CheckerTask_Info_st *elec_find_task_by_taskid(int id)
|
||||
{
|
||||
self_def *s=&g_self;
|
||||
CheckerTask_Info_st *task_par=0;
|
||||
for(int i=0;i<s->task_num;i++){
|
||||
task_par= s->task_info_array[i];
|
||||
if(task_par->taskid==id){
|
||||
return task_par;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// 调压
|
||||
static int elec_parper_power(void)
|
||||
{
|
||||
self_def *s=&g_self;
|
||||
CheckerTask_Info_st *task_par=0;
|
||||
int ret=0;
|
||||
task_par= s->task_info_array[0];
|
||||
if(task_par->taskid!=0){
|
||||
// 第一个任务不是调压任务,失败
|
||||
DBG_WARN("parper power failed,first taskid is not 0.");
|
||||
task_par= elec_find_task_by_taskid(0);
|
||||
if(task_par==0){
|
||||
// 找不到调压任务,失败
|
||||
DBG_WARN("parper power failed,can not find task with id 0.");
|
||||
return 1;
|
||||
}
|
||||
// 装载参数
|
||||
@@ -226,7 +252,7 @@ array_def *elec_write_fat_buff(array_def *d)
|
||||
|
||||
|
||||
// 测量桥丝阻值
|
||||
array_def *elec_check_resistor(void)
|
||||
array_def *elec_check_resistor(uint8_t index)
|
||||
{
|
||||
/*
|
||||
1 通道1-4通,过桥丝
|
||||
@@ -243,11 +269,12 @@ array_def *elec_check_resistor(void)
|
||||
aus_sample[uc_index] -= board_st.resistor_diff;
|
||||
}
|
||||
// 读取方案中测量电阻的模式
|
||||
switch(0)
|
||||
switch(index)
|
||||
{
|
||||
case 0: us_resistor = aus_sample[0];break;
|
||||
case 1: us_resistor = aus_sample[1];break;
|
||||
case 2: us_resistor = aus_sample[2];break;
|
||||
case 5: us_resistor = board_st.resistor_diff;break;
|
||||
default : us_resistor = 0;break;
|
||||
}
|
||||
array_def *r=arr_creat();
|
||||
@@ -382,7 +409,11 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
||||
CheckerTask task_fun=0;
|
||||
uint8_t res=0;
|
||||
array_def *r=arr_creat();
|
||||
//CHECK_DO(s->data,arr_delete);
|
||||
if(s->scheme_inited==0){
|
||||
DBG_WARN("scheme not init.");
|
||||
arr_append(r,1);
|
||||
return arr_temp(r);
|
||||
}
|
||||
res=checker_runcfg.power_prapare_exe;
|
||||
memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
|
||||
checker_runcfg.power_prapare_exe=res;
|
||||
@@ -391,11 +422,6 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
|
||||
elec_code_load_param(uid_psw);
|
||||
}
|
||||
|
||||
if(s->scheme_inited==0){
|
||||
DBG_WARN("scheme not init.");
|
||||
arr_append(r,1);
|
||||
return arr_temp(r);
|
||||
}
|
||||
if(chip_type>=LENGTH(tasks_fun_table)){
|
||||
DBG_WARN("unknown chip type.");
|
||||
arr_append(r,2);
|
||||
|
@@ -10,6 +10,8 @@ int elec_init(void);
|
||||
|
||||
int elec_scheme_init(void);
|
||||
|
||||
int elec_scheme_deinit(void);
|
||||
|
||||
uint8_t elec_local_addr(void);
|
||||
|
||||
void elec_led1_power(int power);
|
||||
@@ -28,7 +30,7 @@ array_def *elec_write_resistor_cbv(int cbv);
|
||||
|
||||
array_def *elec_write_fat_buff(array_def *d);
|
||||
|
||||
array_def *elec_check_resistor(void);
|
||||
array_def *elec_check_resistor(uint8_t index);
|
||||
|
||||
array_def *elec_check_with_scheme(array_def *uid_psw);
|
||||
|
||||
|
@@ -48,7 +48,7 @@ void Ye_BoardCheck(void)
|
||||
board_st.soft_v = SoftVersion;
|
||||
board_st.hard_v = boardinfo_un.boardinfo.hard_v;
|
||||
board_st.resistor_diff = boardinfo_un.boardinfo.resistor_diff;
|
||||
board_st.plan_id = *((uint32_t*)APP_TEST_PLAN_ADDR);
|
||||
//board_st.plan_id = *((uint32_t*)APP_TEST_PLAN_ADDR);
|
||||
|
||||
|
||||
GetADC1_Value(VCC_1V25_CH,aus_buf,AD_SCAN_COUNT);
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||
|
||||
|
||||
#define BUILD_DATE "2023-11-01 23:50:38"
|
||||
#define BUILD_DATE "2023-11-03 18:01:29"
|
||||
#define SOFT_VERSION "2.03"
|
||||
|
||||
|
||||
|
@@ -116,7 +116,11 @@ transmit_export(ym_slave,0x04,write_resistor_cbv)
|
||||
// 测量桥丝阻值
|
||||
static int check_resistor_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||
{
|
||||
emit tran_reply_signal(u->p,arr_temp(elec_check_resistor()));
|
||||
uint8_t index=0;
|
||||
if(data){
|
||||
index=arr_get(data,0);
|
||||
}
|
||||
emit tran_reply_signal(u->p,arr_temp(elec_check_resistor(index)));
|
||||
return 0;
|
||||
}
|
||||
static ucport_def *check_resistor(tran_def *t, uint8_t cmd,array_def *data)
|
||||
@@ -282,6 +286,7 @@ typedef struct{
|
||||
uint8_t device_state;
|
||||
uint32_t flash_addr;
|
||||
uint32_t flash_addr_base;
|
||||
int erased;
|
||||
}updata_def;
|
||||
static updata_def g_updata;
|
||||
|
||||
@@ -445,24 +450,34 @@ static int write_data2_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *e
|
||||
uint32_t addr=(arr_get(data,0))|(arr_get(data,1)<<8)|(arr_get(data,2)<<16)|(arr_get(data,3)<<24);
|
||||
int len=arr_length(data)-4;
|
||||
int ret=0;
|
||||
if(strcmp(err_str,"ok")!=0){
|
||||
return -1;
|
||||
}
|
||||
if((addr)==MCU_TASKID_ADDR_BASE){
|
||||
//flash_erase_scheme();
|
||||
// 只擦除两个扇区
|
||||
flash_erase_addr((uint32_t)flash_get_scheme());
|
||||
flash_erase_addr((uint32_t)flash_get_scheme()+2048);
|
||||
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_scheme(),"scheme.bin");
|
||||
g_updata.flash_addr_base=MCU_TASKID_ADDR_BASE;
|
||||
if(g_updata.erased==0){
|
||||
flash_erase_scheme();
|
||||
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_scheme(),"scheme.bin");
|
||||
g_updata.flash_addr_base=MCU_TASKID_ADDR_BASE;
|
||||
elec_scheme_deinit();
|
||||
g_updata.erased=1;
|
||||
}
|
||||
}else if((addr)==MCU_JWT_ADDR_BASE){
|
||||
flash_erase_jwtcode();
|
||||
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_jwtcode(),"jwtcode.jwt");
|
||||
g_updata.flash_addr_base=MCU_JWT_ADDR_BASE;
|
||||
if(g_updata.erased==0){
|
||||
flash_erase_jwtcode();
|
||||
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_jwtcode(),"jwtcode.jwt");
|
||||
g_updata.flash_addr_base=MCU_JWT_ADDR_BASE;
|
||||
g_updata.erased=1;
|
||||
}
|
||||
}
|
||||
uint32_t offset=addr-g_updata.flash_addr_base;
|
||||
addr=g_updata.flash_addr+offset;
|
||||
ret=flash_write((uint8_t *)addr,&arr_data(data)[4],len);
|
||||
array_def *r=arr_creat();
|
||||
arr_append(r,(ret!=0));
|
||||
arr_append(r,ret);
|
||||
emit tran_reply_signal(u->p,arr_temp(r));
|
||||
if(ret){
|
||||
g_updata.erased=0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static ucport_def *write_data2(tran_def *t, uint8_t cmd,array_def *data)
|
||||
@@ -486,6 +501,9 @@ static int load_scheme_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *e
|
||||
array_def *r=arr_creat();
|
||||
arr_append(r,ret);
|
||||
emit tran_reply_signal(u->p,arr_temp(r));
|
||||
// 此处如果重启的话会丢失缓存
|
||||
// later_execute((void (*)(void *))bk_reboot_app,0,100);
|
||||
g_updata.erased=0;
|
||||
ret=elec_scheme_init();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -307,11 +307,8 @@ static void updata_prepar_read(updata_def *u,uint8_t cmd,array_def *data)
|
||||
|
||||
static void when_scheme_done(ucport_def *u)
|
||||
{
|
||||
tran_def *tran=app_variable("tran",0,0);
|
||||
if(tran==0){
|
||||
DBG_WARN("can not fond variable \"tran\"");
|
||||
return;
|
||||
}
|
||||
// 升级完成后延时50ms重启
|
||||
later_execute((void (*)(void *))bk_reboot_app,0,50);
|
||||
}
|
||||
static ucport_def *tran_scheme(tran_def *t, uint8_t cmd,array_def *data)
|
||||
{
|
||||
|
Reference in New Issue
Block a user