提交 bdb3b65c 作者: wysheng

在线升级测试OK

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