适配Ew开头的协议

注释iic相关命令,添加命令jwtcrc用于验证jwt程序是否正常
    EW_Updata 添加错误12表示小板中无jwt程序
This commit is contained in:
ranchuan
2023-12-29 18:13:00 +08:00
parent c676f81758
commit a51722b54a
12 changed files with 192 additions and 168 deletions

View File

@@ -153,24 +153,7 @@
<Name></Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<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>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
@@ -316,7 +299,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@@ -557,7 +540,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@@ -652,22 +635,6 @@
<ExecCommand></ExecCommand>
<Expression>\\checker_slave_app\source/rt_thread/board.c\108</Expression>
</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>
<WatchWindow1>
<Ww>

View File

@@ -3555,57 +3555,6 @@
<FileName>EW_TestUsartApp.c</FileName>
<FileType>1</FileType>
<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>
<FileName>EWCheckerTest.c</FileName>

View File

@@ -316,3 +316,8 @@
ew写延时验证成功ej写流水号验证成功
解决上位机协议crc错误依然执行命令的bug
注意:小板方案中芯片类型与主板不同时,使用槽任务可能造成各种异常问题(死机,死循环,不返回数据等)
2023.12.29
适配Ew开头的协议
注释iic相关命令添加命令jwtcrc用于验证jwt程序是否正常
EW_Updata 添加错误12表示小板中无jwt程序

View File

@@ -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);

View File

@@ -52,7 +52,7 @@ static int cmd_iic_erase(list_def *argv)
cmd_print("cmd end,ret=%d.",ret);
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);
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);
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")

View File

@@ -18,14 +18,32 @@
#include "elec_det.h"
#include "dev_flash.h"
#include "mystring.h"
#include "prot_uc.h"
#include "board.h"
#include "transmit.h"
#include "mystdlib.h"
#include "elec_io.h"
// 此文件实现elec模块的输入输出接口
typedef struct{
tran_def *tran;
}self_def;
static self_def g_self;
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;
}
@@ -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)

View File

@@ -40,10 +40,6 @@
}\
commend_export(cmd_,__msh_##fun_,#desc);
#define ConsoleRxDisable()
#define ConsoleRxEnable()
int ConsoleUsart_send_bytes(uint8_t *d,int len);

View File

@@ -383,6 +383,69 @@ uint16_t AD_CurMonitor(uint32_t ul_times)
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 电流降到指定电流下的时间
@param 采样超时

View File

@@ -29,6 +29,7 @@
#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_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();
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();
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();
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();
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);
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();
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:通信测试
@@ -235,7 +256,7 @@ static int cmd_jwt_app_commtest(list_def *argv)
ret=EW_appCommTest();
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();
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];
// 升级模式0无app时升级1无条件升级
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);
PowerCalibration_set(200,120);
ret=EW_CheckState(&ew_updata);

View File

@@ -1,14 +1,12 @@
#include "driver/ewdriver.h"
#include "base/define.h"
#include "base/delay.h"
//#include "console_usart.h"
#include "base/utility.h"
//#include "usartapp.h"
//#include "arrayfifo.h"
//#include "YeCommProtocol.h"
#include "hardware/power.h"
#include "elec_io.h"
#include "mymisc.h"
#pragma pack(1)
typedef struct{
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);
cmd_un->buf[cmd_un->head.frame_len-1] = uc_crc;
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)
@@ -119,6 +116,16 @@ static void EW_BusCmd01(EWCmd_un* cmd_un)
cmd_un->head.frame_len++;
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)
{
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->head.frame_len++;
EW_AckCmd(cmd_un);
if(heard_beat_flag){
later_execute(heart_beat_fun,0,1000);
}
}
extern uint16_t EW_DMOD_READ_Timeout;
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;
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);
}
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>
ew_app_rec_flag = 1;
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);
}
}
}

View File

@@ -87,7 +87,7 @@ static const uart_dtb g_uartdtb[]={
.uart=USART1,
.uart_clock_fun=RCC_APB2PeriphClockCmd,
.uart_rcc=RCC_APB2Periph_USART1,
.baudrate=38400,
.baudrate=9600,
.irq_channel=USART1_IRQn,
.gpio_tx_clock_fun=RCC_APB2PeriphClockCmd,

View File

@@ -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"