适配Ew开头的协议
注释iic相关命令,添加命令jwtcrc用于验证jwt程序是否正常 EW_Updata 添加错误12表示小板中无jwt程序
This commit is contained in:
@@ -153,24 +153,7 @@
|
|||||||
<Name></Name>
|
<Name></Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>185</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>.\source\rt_thread\libcpu\arm\cortex-m3\context_rvds.S</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
@@ -316,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>
|
||||||
@@ -557,7 +540,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>
|
||||||
@@ -652,22 +635,6 @@
|
|||||||
<ExecCommand></ExecCommand>
|
<ExecCommand></ExecCommand>
|
||||||
<Expression>\\checker_slave_app\source/rt_thread/board.c\108</Expression>
|
<Expression>\\checker_slave_app\source/rt_thread/board.c\108</Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>185</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>.\source\rt_thread\libcpu\arm\cortex-m3\context_rvds.S</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
</Breakpoint>
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
|
@@ -3555,57 +3555,6 @@
|
|||||||
<FileName>EW_TestUsartApp.c</FileName>
|
<FileName>EW_TestUsartApp.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>.\source\elec_det\test\EW_TestUsartApp.c</FilePath>
|
<FilePath>.\source\elec_det\test\EW_TestUsartApp.c</FilePath>
|
||||||
<FileOption>
|
|
||||||
<CommonProperty>
|
|
||||||
<UseCPPCompiler>2</UseCPPCompiler>
|
|
||||||
<RVCTCodeConst>0</RVCTCodeConst>
|
|
||||||
<RVCTZI>0</RVCTZI>
|
|
||||||
<RVCTOtherData>0</RVCTOtherData>
|
|
||||||
<ModuleSelection>0</ModuleSelection>
|
|
||||||
<IncludeInBuild>0</IncludeInBuild>
|
|
||||||
<AlwaysBuild>2</AlwaysBuild>
|
|
||||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
|
||||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
|
||||||
<PublicsOnly>2</PublicsOnly>
|
|
||||||
<StopOnExitCode>11</StopOnExitCode>
|
|
||||||
<CustomArgument></CustomArgument>
|
|
||||||
<IncludeLibraryModules></IncludeLibraryModules>
|
|
||||||
<ComprImg>1</ComprImg>
|
|
||||||
</CommonProperty>
|
|
||||||
<FileArmAds>
|
|
||||||
<Cads>
|
|
||||||
<interw>2</interw>
|
|
||||||
<Optim>0</Optim>
|
|
||||||
<oTime>2</oTime>
|
|
||||||
<SplitLS>2</SplitLS>
|
|
||||||
<OneElfS>2</OneElfS>
|
|
||||||
<Strict>2</Strict>
|
|
||||||
<EnumInt>2</EnumInt>
|
|
||||||
<PlainCh>2</PlainCh>
|
|
||||||
<Ropi>2</Ropi>
|
|
||||||
<Rwpi>2</Rwpi>
|
|
||||||
<wLevel>0</wLevel>
|
|
||||||
<uThumb>2</uThumb>
|
|
||||||
<uSurpInc>2</uSurpInc>
|
|
||||||
<uC99>2</uC99>
|
|
||||||
<uGnu>2</uGnu>
|
|
||||||
<useXO>2</useXO>
|
|
||||||
<v6Lang>0</v6Lang>
|
|
||||||
<v6LangP>0</v6LangP>
|
|
||||||
<vShortEn>2</vShortEn>
|
|
||||||
<vShortWch>2</vShortWch>
|
|
||||||
<v6Lto>2</v6Lto>
|
|
||||||
<v6WtE>2</v6WtE>
|
|
||||||
<v6Rtti>2</v6Rtti>
|
|
||||||
<VariousControls>
|
|
||||||
<MiscControls></MiscControls>
|
|
||||||
<Define></Define>
|
|
||||||
<Undefine></Undefine>
|
|
||||||
<IncludePath></IncludePath>
|
|
||||||
</VariousControls>
|
|
||||||
</Cads>
|
|
||||||
</FileArmAds>
|
|
||||||
</FileOption>
|
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<FileName>EWCheckerTest.c</FileName>
|
<FileName>EWCheckerTest.c</FileName>
|
||||||
|
@@ -316,3 +316,8 @@
|
|||||||
ew写延时验证成功,ej写流水号验证成功
|
ew写延时验证成功,ej写流水号验证成功
|
||||||
解决上位机协议crc错误依然执行命令的bug
|
解决上位机协议crc错误依然执行命令的bug
|
||||||
注意:小板方案中芯片类型与主板不同时,使用槽任务可能造成各种异常问题(死机,死循环,不返回数据等)
|
注意:小板方案中芯片类型与主板不同时,使用槽任务可能造成各种异常问题(死机,死循环,不返回数据等)
|
||||||
|
2023.12.29
|
||||||
|
适配Ew开头的协议
|
||||||
|
注释iic相关命令,添加命令jwtcrc用于验证jwt程序是否正常
|
||||||
|
EW_Updata 添加错误12表示小板中无jwt程序
|
||||||
|
|
||||||
|
@@ -314,14 +314,5 @@ protuc_codec_export(ym_slave,protm_decode,protm_encode);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 小板ew协议解码
|
|
||||||
array_def *protew_decode(protu_def *p,array_def *data)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
array_def *protew_encode(protu_def *p,array_def *data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
// protuc_codec_export(ew_slave,protm_decode,protm_encode);
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ static int cmd_iic_erase(list_def *argv)
|
|||||||
cmd_print("cmd end,ret=%d.",ret);
|
cmd_print("cmd end,ret=%d.",ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
commend_export(iic_erase,cmd_iic_erase,"erase mtp via iic,param:mtp_addr,erase_mode")
|
//commend_export(iic_erase,cmd_iic_erase,"erase mtp via iic,param:mtp_addr,erase_mode")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ static int cmd_iic_updata(list_def *argv)
|
|||||||
cmd_print("cmd end,ret=%d.",ret);
|
cmd_print("cmd end,ret=%d.",ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
commend_export(iic_updata,cmd_iic_updata,"updata mtp via iic,param:mtp_addr,data_length")
|
//commend_export(iic_updata,cmd_iic_updata,"updata mtp via iic,param:mtp_addr,data_length")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ static int cmd_iic_read(list_def *argv)
|
|||||||
cmd_print("cmd end,ret=%d.",ret);
|
cmd_print("cmd end,ret=%d.",ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
commend_export(iic_read,cmd_iic_read,"read mtp via iic,param:mtp_addr,data_length")
|
//commend_export(iic_read,cmd_iic_read,"read mtp via iic,param:mtp_addr,data_length")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -18,14 +18,32 @@
|
|||||||
#include "elec_det.h"
|
#include "elec_det.h"
|
||||||
#include "dev_flash.h"
|
#include "dev_flash.h"
|
||||||
#include "mystring.h"
|
#include "mystring.h"
|
||||||
|
#include "prot_uc.h"
|
||||||
|
#include "board.h"
|
||||||
|
#include "transmit.h"
|
||||||
|
#include "mystdlib.h"
|
||||||
#include "elec_io.h"
|
#include "elec_io.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 此文件实现elec模块的输入输出接口
|
// 此文件实现elec模块的输入输出接口
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct{
|
||||||
|
tran_def *tran;
|
||||||
|
}self_def;
|
||||||
|
|
||||||
|
static self_def g_self;
|
||||||
|
|
||||||
int ConsoleUsart_send_bytes(uint8_t *d,int len)
|
int ConsoleUsart_send_bytes(uint8_t *d,int len)
|
||||||
{
|
{
|
||||||
|
self_def *s=&g_self;
|
||||||
|
if(s->tran){
|
||||||
|
array_def *r=arr_creat();
|
||||||
|
arr_appends(r,d,len);
|
||||||
|
emit tran_reply_signal(s->tran,arr_temp(r));
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +82,43 @@ void Ye_RunPlanCheckTest(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 小板ew协议解码
|
||||||
|
array_def *protew_decode(protu_def *p,array_def *data)
|
||||||
|
{
|
||||||
|
if((arr_get(data,0)=='E')&&(arr_get(data,1)=='w')){
|
||||||
|
str_set(p->str_err,"ok");
|
||||||
|
p->cmd=0x01;
|
||||||
|
return arr_duplicate(data);
|
||||||
|
}
|
||||||
|
str_set(p->str_err,"decode for Ew failed.");
|
||||||
|
return arr_creat();
|
||||||
|
}
|
||||||
|
array_def *protew_encode(protu_def *p,array_def *data)
|
||||||
|
{
|
||||||
|
array_def *r;
|
||||||
|
r=arr_duplicate(data);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
protuc_codec_export(ew_slave,protew_decode,protew_encode);
|
||||||
|
|
||||||
|
static int ew_slave_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
|
||||||
|
{
|
||||||
|
void EW_UsartApp_Push_Cmd(uint8_t* buf, uint16_t len);
|
||||||
|
EW_UsartApp_Push_Cmd(arr_data(data),arr_length(data));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
static ucport_def *ew_slave_fun(tran_def *t, uint8_t cmd,array_def *data)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
self_def *s=&g_self;
|
||||||
|
s->tran=t;
|
||||||
|
ucport_def *u=calloc(1,sizeof(ucport_def));
|
||||||
|
u->p=t;
|
||||||
|
u->dolater=ew_slave_dolater;
|
||||||
|
u->dolater(u,cmd,data,"ok");
|
||||||
|
return (ucport_def *)u;
|
||||||
|
}
|
||||||
|
transmit_export(ew_slave,0x01,ew_slave_fun)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -40,10 +40,6 @@
|
|||||||
}\
|
}\
|
||||||
commend_export(cmd_,__msh_##fun_,#desc);
|
commend_export(cmd_,__msh_##fun_,#desc);
|
||||||
|
|
||||||
|
|
||||||
#define ConsoleRxDisable()
|
|
||||||
|
|
||||||
#define ConsoleRxEnable()
|
|
||||||
|
|
||||||
int ConsoleUsart_send_bytes(uint8_t *d,int len);
|
int ConsoleUsart_send_bytes(uint8_t *d,int len);
|
||||||
|
|
||||||
|
@@ -383,6 +383,69 @@ uint16_t AD_CurMonitor(uint32_t ul_times)
|
|||||||
return ul_shake;
|
return ul_shake;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void ad_gets(uint16_t *v,int num)
|
||||||
|
{
|
||||||
|
for(int i =0; i < num;i++)
|
||||||
|
{
|
||||||
|
v[i] = ADC_GetCurADCFast();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*rc{ 重写电流采集 }*/
|
||||||
|
uint16_t AD_CurMonitor_(uint32_t ul_times)
|
||||||
|
{
|
||||||
|
uint32_t ul_count = 0, ul_count2;
|
||||||
|
uint16_t us_count = 0;
|
||||||
|
uint16_t aus_adc[20];
|
||||||
|
uint16_t us_maxadv=0,us_minadv = 4096;
|
||||||
|
uint16_t ul_shake = 0;
|
||||||
|
uint16_t us_mid;
|
||||||
|
ul_count2 = 0;
|
||||||
|
while(ul_times > 0)
|
||||||
|
{
|
||||||
|
ul_count = 0;
|
||||||
|
Get100usCount();
|
||||||
|
while(ul_count< 50000 && ul_count < ul_times)
|
||||||
|
{
|
||||||
|
us_maxadv = 0;
|
||||||
|
us_minadv = 0xFFF;
|
||||||
|
|
||||||
|
ad_gets(aus_adc,20);
|
||||||
|
Bubble_Sort_u16(aus_adc,20);
|
||||||
|
us_mid=aus_adc[10];
|
||||||
|
if(us_mid>us_maxadv){
|
||||||
|
us_maxadv=us_mid;
|
||||||
|
}
|
||||||
|
if(us_mid<us_minadv){
|
||||||
|
us_minadv=us_mid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ul_shake < us_maxadv-us_minadv)
|
||||||
|
{
|
||||||
|
ul_shake = us_maxadv-us_minadv;
|
||||||
|
}
|
||||||
|
delay_us(40);
|
||||||
|
ul_count = GET_COUNTTIM_VAL();
|
||||||
|
}
|
||||||
|
if(ul_count >= ul_times)
|
||||||
|
{
|
||||||
|
LED1_Out = 0;
|
||||||
|
return ul_shake;
|
||||||
|
}
|
||||||
|
ul_times -= ul_count;
|
||||||
|
}
|
||||||
|
LED1_Out= 0;
|
||||||
|
return ul_shake;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@brief 电流降到指定电流下的时间
|
@brief 电流降到指定电流下的时间
|
||||||
@param 采样超时
|
@param 采样超时
|
||||||
|
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#define UPDATA_CRC_ALL ((uint32_t *)(MC_CODE_ADDR+16*1024))[0]
|
#define UPDATA_CRC_ALL ((uint32_t *)(MC_CODE_ADDR+16*1024))[0]
|
||||||
#define UPDATA_CRC_APP ((uint32_t *)(MC_CODE_ADDR+16*1024))[1]
|
#define UPDATA_CRC_APP ((uint32_t *)(MC_CODE_ADDR+16*1024))[1]
|
||||||
|
#define UPDATA_FILE_NAME ((const char *)(MC_CODE_ADDR+16*1024+8))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -50,7 +51,7 @@ static int cmd_jwt_boot_erase(list_def *argv)
|
|||||||
ret=EW_bootErease();
|
ret=EW_bootErease();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_boot_erase,cmd_jwt_boot_erase,"jwt srase in boot")
|
//commend_export(jwt_boot_erase,cmd_jwt_boot_erase,"jwt srase in boot")
|
||||||
|
|
||||||
|
|
||||||
// 跳转
|
// 跳转
|
||||||
@@ -70,7 +71,7 @@ static int cmd_jwt_boot_jump(list_def *argv)
|
|||||||
ret=EW_bootJump();
|
ret=EW_bootJump();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_boot_jump,cmd_jwt_boot_jump,"jwt jump in boot")
|
//commend_export(jwt_boot_jump,cmd_jwt_boot_jump,"jwt jump in boot")
|
||||||
|
|
||||||
|
|
||||||
// 充电
|
// 充电
|
||||||
@@ -91,7 +92,7 @@ static int cmd_jwt_boot_charg(list_def *argv)
|
|||||||
ret=EW_bootCharg();
|
ret=EW_bootCharg();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_boot_charg,cmd_jwt_boot_charg,"jwt charg in boot")
|
//commend_export(jwt_boot_charg,cmd_jwt_boot_charg,"jwt charg in boot")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ static int cmd_jwt_boot_discharg(list_def *argv)
|
|||||||
ret=EW_bootDisCharg();
|
ret=EW_bootDisCharg();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_boot_discharg,cmd_jwt_boot_discharg,"jwt discharg in boot")
|
//commend_export(jwt_boot_discharg,cmd_jwt_boot_discharg,"jwt discharg in boot")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -172,7 +173,27 @@ static int cmd_jwt_boot_checkcrc(list_def *argv)
|
|||||||
cmd_print("local crc32=0x%04x.",crc);
|
cmd_print("local crc32=0x%04x.",crc);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_boot_checkcrc,cmd_jwt_boot_checkcrc,"jwt checkcrc in boot")
|
//commend_export(jwt_boot_checkcrc,cmd_jwt_boot_checkcrc,"jwt checkcrc in boot")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 校验jwt程序的crc
|
||||||
|
static int cmd_jwtcrc(list_def *argv)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
uint32_t crc=0,crc2=0;
|
||||||
|
crc=Crc32Calu((uint32_t *)(MC_CODE_ADDR+UPDATA_BASE_ADDR),UPDATA_DATA_LEN);
|
||||||
|
crc2=UPDATA_CRC_APP;
|
||||||
|
cmd_print("crc_calc=0x%08x,crc_rom=0x%08x.",crc,crc2);
|
||||||
|
if(crc==crc2){
|
||||||
|
cmd_print("rom name:%s.",UPDATA_FILE_NAME);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
commend_export(jwtcrc,cmd_jwtcrc,"check jwt app crc32.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -215,7 +236,7 @@ static int cmd_jwt_app_read(list_def *argv)
|
|||||||
ret=EW_appRead();
|
ret=EW_appRead();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_app_read,cmd_jwt_app_read,"jwt read in app")
|
//commend_export(jwt_app_read,cmd_jwt_app_read,"jwt read in app")
|
||||||
|
|
||||||
|
|
||||||
// app:通信测试
|
// app:通信测试
|
||||||
@@ -235,7 +256,7 @@ static int cmd_jwt_app_commtest(list_def *argv)
|
|||||||
ret=EW_appCommTest();
|
ret=EW_appCommTest();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_app_commtest,cmd_jwt_app_commtest,"jwt commtest in app")
|
//commend_export(jwt_app_commtest,cmd_jwt_app_commtest,"jwt commtest in app")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -255,7 +276,7 @@ static int cmd_jwt_app_runboot(list_def *argv)
|
|||||||
EW_appRunBoot();
|
EW_appRunBoot();
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
commend_export(jwt_app_runboot,cmd_jwt_app_runboot,"jwt turn to bootloader")
|
//commend_export(jwt_app_runboot,cmd_jwt_app_runboot,"jwt turn to bootloader")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -389,6 +410,15 @@ void EW_Updata(void)
|
|||||||
ew_updata.time_poweroff=checker_runcfg.params[2];
|
ew_updata.time_poweroff=checker_runcfg.params[2];
|
||||||
// 升级模式,0,无app时升级;1,无条件升级
|
// 升级模式,0,无app时升级;1,无条件升级
|
||||||
ew_updata.updata_mode=checker_runcfg.params[3];
|
ew_updata.updata_mode=checker_runcfg.params[3];
|
||||||
|
|
||||||
|
// 校验jwt程序是否正常
|
||||||
|
crc=Crc32Calu((uint32_t *)(MC_CODE_ADDR+UPDATA_BASE_ADDR),UPDATA_DATA_LEN);
|
||||||
|
if(crc!=UPDATA_CRC_APP)
|
||||||
|
{
|
||||||
|
ret=12;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
EW_ParamPrint(&ew_updata);
|
EW_ParamPrint(&ew_updata);
|
||||||
PowerCalibration_set(200,120);
|
PowerCalibration_set(200,120);
|
||||||
ret=EW_CheckState(&ew_updata);
|
ret=EW_CheckState(&ew_updata);
|
||||||
|
@@ -1,14 +1,12 @@
|
|||||||
#include "driver/ewdriver.h"
|
#include "driver/ewdriver.h"
|
||||||
#include "base/define.h"
|
#include "base/define.h"
|
||||||
#include "base/delay.h"
|
#include "base/delay.h"
|
||||||
//#include "console_usart.h"
|
|
||||||
#include "base/utility.h"
|
#include "base/utility.h"
|
||||||
//#include "usartapp.h"
|
|
||||||
//#include "arrayfifo.h"
|
|
||||||
//#include "YeCommProtocol.h"
|
|
||||||
#include "hardware/power.h"
|
#include "hardware/power.h"
|
||||||
#include "elec_io.h"
|
#include "elec_io.h"
|
||||||
|
|
||||||
|
#include "mymisc.h"
|
||||||
|
|
||||||
#pragma pack(1)
|
#pragma pack(1)
|
||||||
typedef struct{
|
typedef struct{
|
||||||
uint8_t head[2];//<2F>̶<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
uint8_t head[2];//<2F>̶<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||||
@@ -100,7 +98,6 @@ static void EW_AckCmd(EWCmd_un* cmd_un)
|
|||||||
uc_crc = CheckCRC_8(cmd_un->buf,cmd_un->head.frame_len-1);
|
uc_crc = CheckCRC_8(cmd_un->buf,cmd_un->head.frame_len-1);
|
||||||
cmd_un->buf[cmd_un->head.frame_len-1] = uc_crc;
|
cmd_un->buf[cmd_un->head.frame_len-1] = uc_crc;
|
||||||
ConsoleUsart_send_bytes(cmd_un->buf,cmd_un->head.frame_len);
|
ConsoleUsart_send_bytes(cmd_un->buf,cmd_un->head.frame_len);
|
||||||
//ConsoleUsart0DMA_send_bytes(cmd_un->yecmdbuf,cmd_un->head.frame_len,10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void EW_BusCmd01(EWCmd_un* cmd_un)
|
static void EW_BusCmd01(EWCmd_un* cmd_un)
|
||||||
@@ -119,6 +116,16 @@ static void EW_BusCmd01(EWCmd_un* cmd_un)
|
|||||||
cmd_un->head.frame_len++;
|
cmd_un->head.frame_len++;
|
||||||
EW_AckCmd(cmd_un);
|
EW_AckCmd(cmd_un);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void DoHeartBeat(void);
|
||||||
|
static void heart_beat_fun(void *t)
|
||||||
|
{
|
||||||
|
if(heard_beat_flag){
|
||||||
|
DoHeartBeat();
|
||||||
|
later_execute(heart_beat_fun,0,1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
static void EW_HeartBeatCmd02(EWCmd_un* cmd_un)
|
static void EW_HeartBeatCmd02(EWCmd_un* cmd_un)
|
||||||
{
|
{
|
||||||
heard_beat_flag = cmd_un->heartbeat02.oper_cmd;
|
heard_beat_flag = cmd_un->heartbeat02.oper_cmd;
|
||||||
@@ -127,6 +134,9 @@ static void EW_HeartBeatCmd02(EWCmd_un* cmd_un)
|
|||||||
cmd_un->buf[cmd_un->head.frame_len] = 0;
|
cmd_un->buf[cmd_un->head.frame_len] = 0;
|
||||||
cmd_un->head.frame_len++;
|
cmd_un->head.frame_len++;
|
||||||
EW_AckCmd(cmd_un);
|
EW_AckCmd(cmd_un);
|
||||||
|
if(heard_beat_flag){
|
||||||
|
later_execute(heart_beat_fun,0,1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
extern uint16_t EW_DMOD_READ_Timeout;
|
extern uint16_t EW_DMOD_READ_Timeout;
|
||||||
static void EW_RWCmd03(EWCmd_un* cmd_un)
|
static void EW_RWCmd03(EWCmd_un* cmd_un)
|
||||||
@@ -212,7 +222,7 @@ void EW_DoCmd(EWCmd_un* cmd_un)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void DoHeartBeat()
|
static void DoHeartBeat(void)
|
||||||
{
|
{
|
||||||
uint8_t uc_crc;
|
uint8_t uc_crc;
|
||||||
ew_beat_ack.oper_cmd = 1;
|
ew_beat_ack.oper_cmd = 1;
|
||||||
@@ -227,52 +237,6 @@ static void DoHeartBeat()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EWUsartApp_Task(void* param)
|
|
||||||
{
|
|
||||||
rt_uint32_t event;
|
|
||||||
uint32_t idle_count = 0;
|
|
||||||
UNUSED(param);
|
|
||||||
rt_event_init(&ew_usart0_rx_event, "ew_usart_rx_e", RT_IPC_FLAG_PRIO);
|
|
||||||
ew_app_rec_flag = 0;
|
|
||||||
|
|
||||||
while(1)
|
|
||||||
{
|
|
||||||
if(idle_count > 9)
|
|
||||||
{
|
|
||||||
idle_count = 0;
|
|
||||||
if(heard_beat_flag > 0)
|
|
||||||
{
|
|
||||||
DoHeartBeat();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(rt_event_recv(&ew_usart0_rx_event, UART_MC_FRAME_EVENT,RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,100, &event) != RT_EOK)
|
|
||||||
{
|
|
||||||
idle_count++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if((event & UART_MC_FRAME_EVENT) > 0)
|
|
||||||
{
|
|
||||||
ConsoleRxDisable();
|
|
||||||
if(ewcmd_nu.buf[0]=='E' && ewcmd_nu.buf[1] == 'w')
|
|
||||||
{
|
|
||||||
|
|
||||||
if(ewcmd_nu.buf[ewcmd_nu.head.frame_len-1] == CheckCRC_8(ewcmd_nu.buf,ewcmd_nu.head.frame_len-1))
|
|
||||||
{
|
|
||||||
|
|
||||||
EW_DoCmd(&ewcmd_nu);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
ConsoleRxEnable();
|
|
||||||
ew_app_rec_flag = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -293,8 +257,13 @@ void EW_UsartApp_Push_Cmd(uint8_t* buf, uint16_t len)
|
|||||||
len = sizeof(EWCmd_un);
|
len = sizeof(EWCmd_un);
|
||||||
}
|
}
|
||||||
rt_memcpy((void*)&ewcmd_nu,buf,len);
|
rt_memcpy((void*)&ewcmd_nu,buf,len);
|
||||||
rt_event_send(&ew_usart0_rx_event,UART_MC_FRAME_EVENT);//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
if(ewcmd_nu.buf[0]=='E' && ewcmd_nu.buf[1] == 'w')
|
||||||
ew_app_rec_flag = 1;
|
{
|
||||||
|
if(ewcmd_nu.buf[ewcmd_nu.head.frame_len-1] == CheckCRC_8(ewcmd_nu.buf,ewcmd_nu.head.frame_len-1))
|
||||||
|
{
|
||||||
|
EW_DoCmd(&ewcmd_nu);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -87,7 +87,7 @@ static const uart_dtb g_uartdtb[]={
|
|||||||
.uart=USART1,
|
.uart=USART1,
|
||||||
.uart_clock_fun=RCC_APB2PeriphClockCmd,
|
.uart_clock_fun=RCC_APB2PeriphClockCmd,
|
||||||
.uart_rcc=RCC_APB2Periph_USART1,
|
.uart_rcc=RCC_APB2Periph_USART1,
|
||||||
.baudrate=38400,
|
.baudrate=9600,
|
||||||
.irq_channel=USART1_IRQn,
|
.irq_channel=USART1_IRQn,
|
||||||
|
|
||||||
.gpio_tx_clock_fun=RCC_APB2PeriphClockCmd,
|
.gpio_tx_clock_fun=RCC_APB2PeriphClockCmd,
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define BUILD_DATE "2023-12-27 11:39:17"
|
#define BUILD_DATE "2023-12-29 15:21:35"
|
||||||
#define SOFT_VERSION "2.10"
|
#define SOFT_VERSION "2.10"
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user