提交 bdb3b65c 作者: wysheng

在线升级测试OK

上级 adadcd69
......@@ -11,10 +11,10 @@
#include "Stm32f4xx.h"
#include "cmsis_os.h"
#define BakStartAddr ((u32)0x08041800)
#define AppCodeSize ((u32)250*1024)
#define McnRomSectionSize ((u32)2*1024)
#define UpdateFlagAddr ((u32)0x08002800)
#define BakStartAddr ((u32)0x08080000)
#define AppCodeSize ((u32)480*1024)
#define McnRomSectionSize ((u32)128*1024)
#define UpdateFlagAddr ((u32)0x08004000)
#ifndef NULL
#define NULL ((void *)0)
......@@ -425,7 +425,7 @@ extern u8 HexToBcd(u8 Hex);
extern int CopyCode(u32 Des, u32 Scr, u32 Len);
extern int UpdateFlagSet(u32 Status);
#define __SoftVer__ (0x010102) //BCD码 如:V1.02 SoftVer = 0x0102
#define __SoftVer__ (0x010103) //BCD码 如:V1.02 SoftVer = 0x0102
#endif
......@@ -62,6 +62,10 @@ void TCUUpDateHeartHandle(StructTCUSend * pPgnRecv)
{
count_tmp = pPgnRecv->Data[3];
count_tmp = (count_tmp<<8) + pPgnRecv->Data[2];
if(count_tmp == 0)
{
count = 0xffff;
}
if(pPgnRecv->Data[1] == 0x01
&& (u16)(count_tmp - count)==0x0001)//0x01 --- 直流充电控制器
{
......@@ -403,7 +407,7 @@ void TCUResetHandle(StructTCUSend * pPgnRecv)
TCURest.type = pPgnRecv->Data[1];
TCURest.addr = pPgnRecv->Data[2];
if(pPgnRecv->Data[2] == 0xAA)//AAH:代表立即重启
if(pPgnRecv->Data[3] == 0xAA)//AAH:代表立即重启
{
TCURest.cmd = 0xAA;
TCUCommuStatus.CommStage = ResetStage;
......@@ -561,6 +565,8 @@ void TCUUpdateHandle(void)
if(ProgramVerificationData.checksum == TCUGetProgramChecksum())
{
ProgramVerificationData.result = 0x00;
//升级成功
UpdateFlagSet(0x414E4747);
}
else
{
......@@ -594,10 +600,7 @@ void TCUUpdateHandle(void)
if(sendTimes > 2000/500)
{
TCUCommuStatus.CommStage = HeartStage;
//升级成功
UpdateFlagSet(0x414E4747);
osDelay(500);
//osDelay(500);
NVIC_SystemReset();
while(1);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论