258 lines
7.8 KiB
C
258 lines
7.8 KiB
C
|
|
#include "main.h"
|
|||
|
|
|
|||
|
|
IAP_Stuct IAPStuct;
|
|||
|
|
|
|||
|
|
//[INFO] <20><><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ν<EFBFBD><CEBD><EFBFBD>229<32>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(*4Gģ<47><C4A3>*)<29><>
|
|||
|
|
//[INFO]
|
|||
|
|
//+MSUB: "/iot/data/down/a284c67982b089f9",175 byte,{"id":"1471561db17870ef","header":"iot.ota.upgrade.post","body":{"crc16":"1f8c","ver":1,"url":"http://iot.futureny.cn/ota/pull/f46bf3544fe6ca73.bin","md5":"f46bf3544fe6ca73"}}
|
|||
|
|
|
|||
|
|
//[INFO] <20>յ<EFBFBD>OTA<54><41><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
//[INFO] <20>汾<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:1,"url":"http://iot.futureny.cn/ota/pull/f46bf3544fe6ca73.bin","md5":"f46bf3544fe6ca73"}}
|
|||
|
|
|
|||
|
|
//[INFO] <20>µİ汾<C4B0><E6B1BE><EFBFBD><EFBFBD>1
|
|||
|
|
//[INFO] id<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:1471561db17870ef","header":"iot.ota.upgrade.post","body":{"crc16":"1f8c","ver":1,"url":"http://iot.futureny.cn/ota/pull/f46bf3544fe6ca73.bin","md5":"f46bf3544fe6ca73"}}
|
|||
|
|
|
|||
|
|
//[INFO] ErrFlag= 0
|
|||
|
|
|
|||
|
|
//[INFO] <20><><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
uint8_t checkId(uint8_t *data){
|
|||
|
|
uint8_t i;
|
|||
|
|
char *TempPointer; // <20><>ʱָ<CAB1><D6B8>
|
|||
|
|
uint8_t ErrFlag = 0;
|
|||
|
|
uint16_t Version = 0;
|
|||
|
|
uint8_t Err = 0;
|
|||
|
|
uint8_t verRepeti = 0;
|
|||
|
|
|
|||
|
|
TempPointer = strstr((char *)data, "\"ver\":");
|
|||
|
|
TempPointer += 6;
|
|||
|
|
log_info("<EFBFBD>汾<EFBFBD>ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:%s", TempPointer);
|
|||
|
|
i = 0;
|
|||
|
|
while ((TempPointer[i] >= '0') && (TempPointer[i] <= '9')){
|
|||
|
|
Version = (Version * 10) + (TempPointer[i] - '0');
|
|||
|
|
i++;
|
|||
|
|
}
|
|||
|
|
if (TempPointer[i] != ','){
|
|||
|
|
log_info("<EFBFBD>汾<EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
Err = 1;
|
|||
|
|
}
|
|||
|
|
if (Version == MqttInfoStr.iapVer){
|
|||
|
|
log_info("<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>");
|
|||
|
|
Err = 1;
|
|||
|
|
verRepeti = 1;
|
|||
|
|
}else{ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD>汾<EFBFBD><E6B1BE>
|
|||
|
|
MqttInfoStr.iapVer = Version;
|
|||
|
|
log_info("<EFBFBD>µİ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d", MqttInfoStr.iapVer);
|
|||
|
|
eepromWriteData(0, &MqttInfoStr, MQTT_STRUCT_LEN);//<2F><><EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>eeprom
|
|||
|
|
}
|
|||
|
|
TempPointer = strstr((char *)data, "\"id\":\"");
|
|||
|
|
TempPointer += 6; // <20>ҵ<EFBFBD>id<69>ĵ<EFBFBD>һ<EFBFBD><D2BB>λ<EFBFBD><CEBB>
|
|||
|
|
log_info("id<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ:%s", TempPointer);
|
|||
|
|
if(verRepeti == 1){
|
|||
|
|
log_info("****ERR <20>汾<EFBFBD><E6B1BE><EFBFBD>ظ<EFBFBD>,<2C><><EFBFBD>ͳɹ<CDB3>ָ<EFBFBD><D6B8> ERR****");
|
|||
|
|
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.ota.progress.post\\22,\\22body\\22:{\\22id\\22:\\22%.16s\\22,\\22progress\\22:10}}\"\r\n",MqttInfoStr.ClientID,TempPointer);
|
|||
|
|
return Err; // <20>汾<EFBFBD><E6B1BE><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><F2BDB5BC>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
for(i = 0; i < 16; i++){
|
|||
|
|
if (((TempPointer[i] >= '0') && (TempPointer[i] <= '9')) || ((TempPointer[i] >= 'a') && (TempPointer[i] <= 'z'))){ // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ַ<EFBFBD>
|
|||
|
|
if (MqttInfoStr.iapid[i] == TempPointer[i]){
|
|||
|
|
ErrFlag++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else{ // <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
|
|||
|
|
ErrFlag = 16;
|
|||
|
|
log_info("id[%d]<5D><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>,id=%d", i, TempPointer[i]);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (ErrFlag >= 16){ // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>ͬ<EFBFBD><CDAC>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Err = 1;
|
|||
|
|
}
|
|||
|
|
ErrFlag = 0;
|
|||
|
|
if (Err == 0){ // <20><><EFBFBD><EFBFBD>,<><D7BC><EFBFBD>洢id
|
|||
|
|
for (i = 0; i < 16; i++){ // <20>洢idֵ
|
|||
|
|
MqttInfoStr.iapid[i] = TempPointer[i];
|
|||
|
|
eepromWriteData(0, &MqttInfoStr, MQTT_STRUCT_LEN);//<2F><><EFBFBD>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>eeprom
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return Err;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#if 0
|
|||
|
|
void otaUpData(void){
|
|||
|
|
uint8_t i;
|
|||
|
|
char NetMessage[512]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (GetUpgradePara() == 1)
|
|||
|
|
{
|
|||
|
|
i = 0;
|
|||
|
|
while ((Connce2TCP()) && (i < 200))
|
|||
|
|
{
|
|||
|
|
i++;
|
|||
|
|
}
|
|||
|
|
if (i < 200)
|
|||
|
|
{
|
|||
|
|
if (GetUpgradeFile() == 0)
|
|||
|
|
{
|
|||
|
|
Ping_flag = 0; // Ҫ<><D2AA><EFBFBD><EFBFBD>Ping_flag<61><67>־
|
|||
|
|
Connect_flag = 0;
|
|||
|
|
ConnectPack_flag = 0;
|
|||
|
|
SubcribePack_flag = 0;
|
|||
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD> <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
|
|||
|
|
memset(NetMessage, 0, 512 * sizeof(char)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
sprintf(NetMessage, "AT+MSUB=\"/iot/data/up/%s\",0,0,0,\"{\\\"header\\\":\\\"iot.ota.result.post\\\",\\\"body\\\":{\\\"id\\\":\\\"%.16s\\\",\\\"success\\\":false}}\"\r\n", DEVICEID, IapFlashStuct.iapid); // <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
TxDataBuf_Deal((u8 *)NetMessage, (strlen(NetMessage))); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP 81<38>˿ڳ<CBBF>ʱ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><D7BC><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>λ\r\n");
|
|||
|
|
for (; i > 0; i--)
|
|||
|
|
{
|
|||
|
|
printf("%d", i);
|
|||
|
|
delay_ms(1000);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
Ping_flag = 0; // Ҫ<><D2AA><EFBFBD><EFBFBD>Ping_flag<61><67>־
|
|||
|
|
Connect_flag = 0;
|
|||
|
|
ConnectPack_flag = 0;
|
|||
|
|
SubcribePack_flag = 0;
|
|||
|
|
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD>Bin<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD> <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
memset(NetMessage, 0, 512 * sizeof(char)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
|
|||
|
|
sprintf(NetMessage, "AT+MSUB=\"/iot/data/up/%s\",0,0,0,\"{\\\"header\\\":\\\"iot.ota.result.post\\\",\\\"body\\\":{\\\"id\\\":\\\"%.16s\\\",\\\"success\\\":false}}\"\r\n", DEVICEID, IapFlashStuct.iapid); // <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
TxDataBuf_Deal((u8 *)NetMessage, (strlen(NetMessage))); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
u8 GetUpgradeFile()
|
|||
|
|
{
|
|||
|
|
char TempStr[80];
|
|||
|
|
uint8_t count = 0;
|
|||
|
|
u16 i=0;
|
|||
|
|
u8 UpdataOkFlag = 0;
|
|||
|
|
|
|||
|
|
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n"); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
while((count<30)&&(UpdataOkFlag == 0))
|
|||
|
|
{
|
|||
|
|
count ++;
|
|||
|
|
IapStuct.GetBinFlag = 1;//<2F><>ȡBin<69>ļ<EFBFBD><C4BC><EFBFBD>־λ<D6BE><CEBB>1,<2C><>ʾ<EFBFBD><CABE><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>жϷŴ<CFB7><C5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
IOT_RxCounter = 0;
|
|||
|
|
|
|||
|
|
sprintf(TempStr,"GET /ota/pull/%.20s HTTP/1.1\r\nHost: %s:81\r\n\r\n",IapStuct.iapUrl,ServerIP);
|
|||
|
|
IOT_printf("%s",TempStr);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
printf("<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>%s\r\n",TempStr);
|
|||
|
|
if(!WaitDownLoad(90000000))
|
|||
|
|
{
|
|||
|
|
IapStuct.bit2K_Pointer = 2048 - DMA_GetCurrDataCounter(DMA1_Channel6);
|
|||
|
|
if(IapStuct.bit2K_Pointer != 0)
|
|||
|
|
{
|
|||
|
|
Crc = GetCRC(BIN_RX_BUF[IapStuct.bit2K_Select],IapStuct.bit2K_Pointer,Crc);//У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>CRC
|
|||
|
|
|
|||
|
|
for(i=0;i<IapStuct.bit2K_Pointer;i++)
|
|||
|
|
{
|
|||
|
|
printf("%.2X ",BIN_RX_BUF[IapStuct.bit2K_Select][i]);
|
|||
|
|
}
|
|||
|
|
printf("\r\n");
|
|||
|
|
iap_write_appbin(IapStuct.BinWriteAdd,(u8 *)BIN_RX_BUF[IapStuct.bit2K_Select],IapStuct.bit2K_Pointer);//д<><D0B4>ʣ<EFBFBD>µĴ<C2B5><C4B4><EFBFBD>
|
|||
|
|
}
|
|||
|
|
if( IapStuct.binLength <= (Bin2KCount*2048+IapStuct.bit2K_Pointer))
|
|||
|
|
{//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>յ<EFBFBD><D5B5>㹻<EFBFBD><E3B9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Usart2_RxCounter = 0;
|
|||
|
|
if(Crc == IapStuct.iapCrc)//CRCУ<43><D0A3>ͨ<EFBFBD><CDA8>
|
|||
|
|
{
|
|||
|
|
if(((*(vu32*)(FLASH_APP2_ADDR+4))&0xFF000000)==0x08000000)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ0X08XXXXXX.
|
|||
|
|
{
|
|||
|
|
IapFlashStuct.iapCount++;//iap<61><70><EFBFBD><EFBFBD>ֵ++
|
|||
|
|
IapFlashStuct.iapFlag = 1;//iap<61><70><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>־λ<D6BE><CEBB>1
|
|||
|
|
STMFLASH_Write(IAP_FLASH_ADDR,(u16*)&IapFlashStuct,((((sizeof(struct IAP_FLASH_Stuct))%2) == 0) ? ((sizeof(struct IAP_FLASH_Stuct))/2) : (((sizeof(struct IAP_FLASH_Stuct))/2)+1)));//д<><D0B4>Flash
|
|||
|
|
UpdataOkFlag = 1;//<2F><><EFBFBD>Ǹ<EFBFBD><C7B8>³ɹ<C2B3>
|
|||
|
|
TIM_Cmd(TIM4,ENABLE);//<2F><EFBFBD>ʱ<EFBFBD><CAB1>4<EFBFBD><34><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ping<6E><67>ʱ<EFBFBD><CAB1>
|
|||
|
|
printf("<EFBFBD>̼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\r\n");
|
|||
|
|
//printf("<22><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>BootLoader<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BootLoader<65><72>ת<EFBFBD><D7AA><EFBFBD>ڶ<EFBFBD><DAB6>γ<EFBFBD><CEB3><EFBFBD>\r\n");
|
|||
|
|
printf("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>BootLoader<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!\r\n");
|
|||
|
|
if(((*(vu32*)(FLASH_BASE_ADDR+4))&0xFF000000)==0x08000000)//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ0X08XXXXXX.
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>λϵͳ!!\r\n");
|
|||
|
|
for(i=0;i<100;i++)//<2F><>ʱ100*800ms <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>λ
|
|||
|
|
{
|
|||
|
|
delay_ms(800);
|
|||
|
|
printf("%d ",i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD><EFBFBD>FLASHӦ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>,<2C><EFBFBD>ִ<EFBFBD><D6B4>!\r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD>̼<EFBFBD>У<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>\r\n");
|
|||
|
|
Usart2_RxCounter = 0;
|
|||
|
|
IapStuct.HttpHeadcount = 0;
|
|||
|
|
IapStuct.bit2K_Pointer = 0;
|
|||
|
|
IapStuct.bit2K_Select = 0;
|
|||
|
|
IapStuct.HttpFlag = 0;
|
|||
|
|
Bin2KCount = 0;
|
|||
|
|
Crc = 0xFFFF;
|
|||
|
|
IapStuct.BinWriteAdd = FLASH_APP2_ADDR;
|
|||
|
|
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//ʹ<>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
memset(BIN_RX_BUF,0,2048*3);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("CRCУ<EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><EFBFBD><EFBFBD>CRC<EFBFBD><EFBFBD>%x,<2C><>%d<>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRCֵ<43><D6B5>%x\r\n",IapStuct.iapCrc,(Bin2KCount*2048+IapStuct.bit2K_Pointer),Crc);
|
|||
|
|
Usart2_RxCounter = 0;
|
|||
|
|
IapStuct.HttpHeadcount = 0;
|
|||
|
|
IapStuct.bit2K_Pointer = 0;
|
|||
|
|
IapStuct.bit2K_Select = 0;
|
|||
|
|
IapStuct.HttpFlag = 0;
|
|||
|
|
Bin2KCount = 0;
|
|||
|
|
Crc = 0xFFFF;
|
|||
|
|
IapStuct.BinWriteAdd = FLASH_APP2_ADDR;
|
|||
|
|
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//ʹ<>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
memset(BIN_RX_BUF,0,2048*3);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("δ<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>Ϊ%dbytes,ʵ<><CAB5><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>Ϊ%dytes\r\n",IapStuct.binLength,(Bin2KCount*2048+IapStuct.bit2K_Pointer));
|
|||
|
|
Usart2_RxCounter = 0;
|
|||
|
|
IapStuct.HttpHeadcount = 0;
|
|||
|
|
IapStuct.bit2K_Pointer = 0;
|
|||
|
|
IapStuct.bit2K_Select = 0;
|
|||
|
|
IapStuct.HttpFlag = 0;
|
|||
|
|
Bin2KCount = 0;
|
|||
|
|
Crc = 0xFFFF;
|
|||
|
|
IapStuct.BinWriteAdd = FLASH_APP2_ADDR;
|
|||
|
|
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//ʹ<>ܽ<EFBFBD><DCBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
memset(BIN_RX_BUF,0,2048*3);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
printf("<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r\n");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return UpdataOkFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|