140 lines
3.7 KiB
C
140 lines
3.7 KiB
C
/*******************************************************************************
|
|
* the includes
|
|
******************************************************************************/
|
|
#include "appTask.h"
|
|
#include "canuser.h"
|
|
#include "uds_user.h"
|
|
#include "key.h"
|
|
/*******************************************************************************
|
|
* the defines
|
|
******************************************************************************/
|
|
/* Indication value with boot loader request from asw */
|
|
#define ASW_BOOT_REQ_ACTIVE (0x55AAAA55ul)
|
|
/* Asw code head id to show asw is not empty */
|
|
#define ASW_HEAD_MASK (0xAABBCCDDul)
|
|
|
|
#define ASW_VECTOR_START_ADDR 0xc000ul
|
|
|
|
#define UDS_SEND_BUF (512)
|
|
#define UDS_RECV_BUF (2056)
|
|
|
|
|
|
/*******************************************************************************
|
|
* the typedefs
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* the globals
|
|
******************************************************************************/
|
|
#pragma location = ".bss.no_init"
|
|
static uint32_t sAswBoot_Req = 0;
|
|
|
|
|
|
McuType mcu;
|
|
volatile uint32_t gSystick1msEvent = 0, gSystick1msCnt = 0, gTestRunCnt = 0, gTestIoEn = 0, gSysTick1sCnt = 0;
|
|
|
|
int64_t timer_1ms = 0;
|
|
uint8_t udsSendBuf[UDS_SEND_BUF] = {0};
|
|
uint8_t udsRecvBuf[UDS_RECV_BUF] = {0};
|
|
UdsType udsObj;
|
|
uint32_t rollingcounter=0;
|
|
|
|
|
|
Uds_ParamsType udsParam = {
|
|
.isotpParams.framePadding = true,
|
|
.isotpParams.blockSize = 0,
|
|
.isotpParams.recvPhysId = UDS_PHYS_RECV_MSG_ID,
|
|
.isotpParams.recvFuncId = UDS_FUNC_RECV_MSG_ID,
|
|
.isotpParams.sendid = UDS_PHYS_RESP_MSG_ID,
|
|
.isotpParams.sendBuf = udsSendBuf,
|
|
.isotpParams.sendBufSize = UDS_SEND_BUF,
|
|
.isotpParams.recvBuf = udsRecvBuf,
|
|
.isotpParams.recvBufSize = UDS_RECV_BUF,
|
|
.isotpParams.debug = NULL,
|
|
.isotpParams.sendCanMsg = FlexCanBoot_TxMessage,
|
|
.isotpParams.getTimeMs = Get_Cur_Time_Stamp,
|
|
.p2Server_ms = 50,
|
|
.p2xServer_10ms = 500,
|
|
.s3Server_ms = 5000,
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
* the functions
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
void Asw_SetBootloaderRequest(void)
|
|
{
|
|
sAswBoot_Req = ASW_BOOT_REQ_ACTIVE;
|
|
}
|
|
|
|
int64_t Get_Cur_Time_Stamp(void)
|
|
{
|
|
return timer_1ms;
|
|
}
|
|
|
|
void SysTick_Handler(void)
|
|
{
|
|
gSystick1msEvent++;
|
|
timer_1ms++;
|
|
Uds_Tick(&udsObj);
|
|
}
|
|
|
|
void appTaskInit(void)
|
|
{
|
|
/* UDS init */
|
|
Uds_UserInit(&udsObj, &udsParam);
|
|
ClearKeyState();
|
|
}
|
|
|
|
void appTask(void)
|
|
{
|
|
|
|
if(gSystick1msEvent > 0u)
|
|
{
|
|
if(udsObj.session == UDS_SESSION_PROGRAMMING)
|
|
{
|
|
Asw_SetBootloaderRequest();
|
|
ResetDrv_SoftwareResetModule(&mcu.resetDrv, RESETDRV_SWRESET_SYS);
|
|
}
|
|
|
|
gSystick1msEvent--;
|
|
gSystick1msCnt++;
|
|
gSysTick1sCnt++;
|
|
KeyScan();
|
|
CANMsgTask();
|
|
if (gSystick1msCnt % 5 == 0)
|
|
{
|
|
AD_Task();
|
|
/* Refresh wdg */
|
|
WdgDrv_Refresh(&mcu.wdgDrv);
|
|
}
|
|
if (gSystick1msCnt % 50 == 0)
|
|
{
|
|
//SBC_WD_Trigger();//喂狗
|
|
}
|
|
if (gSystick1msCnt % 1000 == 0)
|
|
{
|
|
//TxTestMsg(NULL);
|
|
//uint8_t ret = SBC_Read_Command(SBC_M_S_CTRL);//sbc测试
|
|
//SEGGER_RTT_printf(0,"%06d : M_S_CTRL = 0x%x\n",rollingcounter++,ret);
|
|
}
|
|
|
|
|
|
if (gSystick1msCnt >= 10000)
|
|
{
|
|
gSystick1msCnt = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|