启动时调压改为查找任务id0,自检信息中的方案id由方案初始化时确定

接收到升级方案命令时把本机方案状态设置为无效
    检测电阻命令index为5时读取本机校准值
This commit is contained in:
ranchuan
2023-11-03 18:15:01 +08:00
parent 250f91bbad
commit c13291bc03
10 changed files with 100 additions and 56 deletions

View File

@@ -120,7 +120,7 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>DLGUARM</Key> <Key>DLGUARM</Key>
<Name>(105=-1,-1,-1,-1,0)</Name> <Name>d</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@@ -299,7 +299,7 @@
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget> <IsCurrentTarget>1</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>18</CpuCode>
<DebugOpt> <DebugOpt>
@@ -523,7 +523,7 @@
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget> <IsCurrentTarget>0</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>18</CpuCode>
<DebugOpt> <DebugOpt>
@@ -583,7 +583,6 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>DLGUARM</Key> <Key>DLGUARM</Key>
<Name>d</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@@ -771,7 +770,7 @@
<Group> <Group>
<GroupName>stm32lib</GroupName> <GroupName>stm32lib</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>
@@ -1123,7 +1122,7 @@
<Group> <Group>
<GroupName>dev</GroupName> <GroupName>dev</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>
@@ -1475,7 +1474,7 @@
<Group> <Group>
<GroupName>rtt</GroupName> <GroupName>rtt</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>
@@ -1507,7 +1506,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>
@@ -1743,7 +1742,7 @@
<Group> <Group>
<GroupName>soft</GroupName> <GroupName>soft</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>

View File

@@ -185,7 +185,6 @@
<uocXRam>0</uocXRam> <uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP> <RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve> <RvdsMve>0</RvdsMve>
<RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2> <hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2> <hadIROM2>0</hadIROM2>
<StupSel>8</StupSel> <StupSel>8</StupSel>
@@ -352,7 +351,7 @@
<NoWarn>0</NoWarn> <NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc> <uSurpInc>0</uSurpInc>
<useXO>0</useXO> <useXO>0</useXO>
<ClangAsOpt>4</ClangAsOpt> <uClangAs>0</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -799,7 +798,7 @@
<NoWarn>2</NoWarn> <NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc> <uSurpInc>2</uSurpInc>
<useXO>2</useXO> <useXO>2</useXO>
<ClangAsOpt>0</ClangAsOpt> <uClangAs>2</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -1893,7 +1892,7 @@
<NoWarn>2</NoWarn> <NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc> <uSurpInc>2</uSurpInc>
<useXO>2</useXO> <useXO>2</useXO>
<ClangAsOpt>0</ClangAsOpt> <uClangAs>2</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -2384,7 +2383,7 @@
<NoWarn>2</NoWarn> <NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc> <uSurpInc>2</uSurpInc>
<useXO>2</useXO> <useXO>2</useXO>
<ClangAsOpt>0</ClangAsOpt> <uClangAs>2</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -2483,7 +2482,7 @@
<NoWarn>2</NoWarn> <NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc> <uSurpInc>2</uSurpInc>
<useXO>2</useXO> <useXO>2</useXO>
<ClangAsOpt>0</ClangAsOpt> <uClangAs>2</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -2562,7 +2561,7 @@
<NoWarn>2</NoWarn> <NoWarn>2</NoWarn>
<uSurpInc>2</uSurpInc> <uSurpInc>2</uSurpInc>
<useXO>2</useXO> <useXO>2</useXO>
<ClangAsOpt>0</ClangAsOpt> <uClangAs>2</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -2636,7 +2635,7 @@
<TargetName>app</TargetName> <TargetName>app</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed> <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
<uAC6>0</uAC6> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
@@ -2811,11 +2810,10 @@
<uocXRam>0</uocXRam> <uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP> <RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve> <RvdsMve>0</RvdsMve>
<RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2> <hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2> <hadIROM2>0</hadIROM2>
<StupSel>8</StupSel> <StupSel>8</StupSel>
<useUlib>0</useUlib> <useUlib>1</useUlib>
<EndSel>0</EndSel> <EndSel>0</EndSel>
<uLtcg>0</uLtcg> <uLtcg>0</uLtcg>
<nSecure>0</nSecure> <nSecure>0</nSecure>
@@ -2978,7 +2976,7 @@
<NoWarn>0</NoWarn> <NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc> <uSurpInc>0</uSurpInc>
<useXO>0</useXO> <useXO>0</useXO>
<ClangAsOpt>4</ClangAsOpt> <uClangAs>0</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
@@ -4256,7 +4254,6 @@
<uocXRam>0</uocXRam> <uocXRam>0</uocXRam>
<RvdsVP>0</RvdsVP> <RvdsVP>0</RvdsVP>
<RvdsMve>0</RvdsMve> <RvdsMve>0</RvdsMve>
<RvdsCdeCp>0</RvdsCdeCp>
<hadIRAM2>0</hadIRAM2> <hadIRAM2>0</hadIRAM2>
<hadIROM2>0</hadIROM2> <hadIROM2>0</hadIROM2>
<StupSel>8</StupSel> <StupSel>8</StupSel>
@@ -4423,7 +4420,7 @@
<NoWarn>0</NoWarn> <NoWarn>0</NoWarn>
<uSurpInc>0</uSurpInc> <uSurpInc>0</uSurpInc>
<useXO>0</useXO> <useXO>0</useXO>
<ClangAsOpt>4</ClangAsOpt> <uClangAs>0</uClangAs>
<VariousControls> <VariousControls>
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>

View File

@@ -240,4 +240,9 @@
添加 DMod_FireBusReadDatasV2_RC 函数 添加 DMod_FireBusReadDatasV2_RC 函数
2023.11.1 2023.11.1
make 对文件名是区分大小写的... make 对文件名是区分大小写的...
2023.11.3
启动时调压改为查找任务id0自检信息中的方案id由方案初始化时确定
接收到升级方案命令时把本机方案状态设置为无效
检测电阻命令index为5时读取本机校准值

View File

@@ -271,7 +271,7 @@ int flash_write(uint8_t *addr,const uint8_t *data,int len)
if((uint32_t)data%4) if((uint32_t)data%4)
{ {
DBG_WARN("write addr err."); DBG_WARN("write addr err.");
return -1; return 1;
} }
uint32_t *t=(uint32_t *)data; uint32_t *t=(uint32_t *)data;
uint32_t flash_addr=(uint32_t)addr; 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("flash write failed.ret=%d",state);
DBG_WARN("addr=%08X",flash_addr); DBG_WARN("addr=%08X",flash_addr);
ret=-1; ret=2;
break; break;
} }
flash_addr+=4; 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) if(memcmp(addr,data,(len/4)*4)!=0)
{ {
DBG_WARN("addr=%08x write/read data not equate.",addr); DBG_WARN("addr=%08x write/read data not equate.",addr);
ret=-2; ret=3;
} }
rt_mutex_release(s->mutex); rt_mutex_release(s->mutex);
return ret; return ret;

View File

@@ -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) static int elec_parper_power(void)
{ {
self_def *s=&g_self; self_def *s=&g_self;
CheckerTask_Info_st *task_par=0; CheckerTask_Info_st *task_par=0;
int ret=0; int ret=0;
task_par= s->task_info_array[0]; task_par= elec_find_task_by_taskid(0);
if(task_par->taskid!=0){ if(task_par==0){
// 第一个任务不是调压任务,失败 // 找不到调压任务,失败
DBG_WARN("parper power failed,first taskid is not 0."); DBG_WARN("parper power failed,can not find task with id 0.");
return 1; 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通过桥丝 1 通道1-4通过桥丝
@@ -243,11 +269,12 @@ array_def *elec_check_resistor(void)
aus_sample[uc_index] -= board_st.resistor_diff; aus_sample[uc_index] -= board_st.resistor_diff;
} }
// 读取方案中测量电阻的模式 // 读取方案中测量电阻的模式
switch(0) switch(index)
{ {
case 0: us_resistor = aus_sample[0];break; case 0: us_resistor = aus_sample[0];break;
case 1: us_resistor = aus_sample[1];break; case 1: us_resistor = aus_sample[1];break;
case 2: us_resistor = aus_sample[2];break; case 2: us_resistor = aus_sample[2];break;
case 5: us_resistor = board_st.resistor_diff;break;
default : us_resistor = 0;break; default : us_resistor = 0;break;
} }
array_def *r=arr_creat(); array_def *r=arr_creat();
@@ -382,7 +409,11 @@ 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); if(s->scheme_inited==0){
DBG_WARN("scheme not init.");
arr_append(r,1);
return arr_temp(r);
}
res=checker_runcfg.power_prapare_exe; res=checker_runcfg.power_prapare_exe;
memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st)); memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
checker_runcfg.power_prapare_exe=res; 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); 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)){ if(chip_type>=LENGTH(tasks_fun_table)){
DBG_WARN("unknown chip type."); DBG_WARN("unknown chip type.");
arr_append(r,2); arr_append(r,2);

View File

@@ -10,6 +10,8 @@ int elec_init(void);
int elec_scheme_init(void); int elec_scheme_init(void);
int elec_scheme_deinit(void);
uint8_t elec_local_addr(void); uint8_t elec_local_addr(void);
void elec_led1_power(int power); 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_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); array_def *elec_check_with_scheme(array_def *uid_psw);

View File

@@ -48,7 +48,7 @@ void Ye_BoardCheck(void)
board_st.soft_v = SoftVersion; board_st.soft_v = SoftVersion;
board_st.hard_v = boardinfo_un.boardinfo.hard_v; board_st.hard_v = boardinfo_un.boardinfo.hard_v;
board_st.resistor_diff = boardinfo_un.boardinfo.resistor_diff; 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); GetADC1_Value(VCC_1V25_CH,aus_buf,AD_SCAN_COUNT);

View File

@@ -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" #define SOFT_VERSION "2.03"

View File

@@ -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) 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; return 0;
} }
static ucport_def *check_resistor(tran_def *t, uint8_t cmd,array_def *data) static ucport_def *check_resistor(tran_def *t, uint8_t cmd,array_def *data)
@@ -282,6 +286,7 @@ typedef struct{
uint8_t device_state; uint8_t device_state;
uint32_t flash_addr; uint32_t flash_addr;
uint32_t flash_addr_base; uint32_t flash_addr_base;
int erased;
}updata_def; }updata_def;
static updata_def g_updata; 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); 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 len=arr_length(data)-4;
int ret=0; int ret=0;
if(strcmp(err_str,"ok")!=0){
return -1;
}
if((addr)==MCU_TASKID_ADDR_BASE){ if((addr)==MCU_TASKID_ADDR_BASE){
//flash_erase_scheme(); if(g_updata.erased==0){
// 只擦除两个扇区 flash_erase_scheme();
flash_erase_addr((uint32_t)flash_get_scheme()); g_updata.flash_addr=creat_file_head((uint32_t)flash_get_scheme(),"scheme.bin");
flash_erase_addr((uint32_t)flash_get_scheme()+2048); g_updata.flash_addr_base=MCU_TASKID_ADDR_BASE;
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_scheme(),"scheme.bin"); elec_scheme_deinit();
g_updata.flash_addr_base=MCU_TASKID_ADDR_BASE; g_updata.erased=1;
}
}else if((addr)==MCU_JWT_ADDR_BASE){ }else if((addr)==MCU_JWT_ADDR_BASE){
flash_erase_jwtcode(); if(g_updata.erased==0){
g_updata.flash_addr=creat_file_head((uint32_t)flash_get_jwtcode(),"jwtcode.jwt"); flash_erase_jwtcode();
g_updata.flash_addr_base=MCU_JWT_ADDR_BASE; 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; uint32_t offset=addr-g_updata.flash_addr_base;
addr=g_updata.flash_addr+offset; addr=g_updata.flash_addr+offset;
ret=flash_write((uint8_t *)addr,&arr_data(data)[4],len); ret=flash_write((uint8_t *)addr,&arr_data(data)[4],len);
array_def *r=arr_creat(); array_def *r=arr_creat();
arr_append(r,(ret!=0)); arr_append(r,ret);
emit tran_reply_signal(u->p,arr_temp(r)); emit tran_reply_signal(u->p,arr_temp(r));
if(ret){
g_updata.erased=0;
}
return 0; return 0;
} }
static ucport_def *write_data2(tran_def *t, uint8_t cmd,array_def *data) 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(); array_def *r=arr_creat();
arr_append(r,ret); arr_append(r,ret);
emit tran_reply_signal(u->p,arr_temp(r)); 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(); ret=elec_scheme_init();
return 0; return 0;
} }

View File

@@ -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) static void when_scheme_done(ucport_def *u)
{ {
tran_def *tran=app_variable("tran",0,0); // 升级完成后延时50ms重启
if(tran==0){ later_execute((void (*)(void *))bk_reboot_app,0,50);
DBG_WARN("can not fond variable \"tran\"");
return;
}
} }
static ucport_def *tran_scheme(tran_def *t, uint8_t cmd,array_def *data) static ucport_def *tran_scheme(tran_def *t, uint8_t cmd,array_def *data)
{ {