|
@@ -68,11 +68,16 @@ void Fota_Func(UINT8 *DataPtr,INT32 connectId)
|
|
|
Data_Read_Buffer = malloc(Fota_S.Fota_Recv_Data_Len+1);
|
|
|
if(Fota_S.Fota_CRC == *(DataPtr+Fota_S.Fota_Recv_Data_Len+42)||Data_Read_Buffer!=PNULL)
|
|
|
{
|
|
|
+ UINT8 Fota_Recv_Data_Len_4 = 0;
|
|
|
if(Fota_S.Fota_Recv_Data_Len%4!=0)
|
|
|
{
|
|
|
- Fota_S.Fota_Recv_Data_Len = Fota_S.Fota_Recv_Data_Len + 4-(Fota_S.Fota_Recv_Data_Len%4);
|
|
|
+ Fota_Recv_Data_Len_4 = Fota_S.Fota_Recv_Data_Len + 4-(Fota_S.Fota_Recv_Data_Len%4);
|
|
|
}
|
|
|
- BSP_QSPI_Write_Safe(Fota_S.Fota_Recv_Data,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Fota_Recv_Data_Len_4 = Fota_S.Fota_Recv_Data_Len;
|
|
|
+ }
|
|
|
+ BSP_QSPI_Write_Safe(Fota_S.Fota_Recv_Data,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_Recv_Data_Len_4);
|
|
|
memset(Data_Read_Buffer,0x00,Fota_S.Fota_Recv_Data_Len);
|
|
|
BSP_QSPI_Read_Safe(Data_Read_Buffer,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
|
|
|
Data_Read_Crc = Fota_crc_chk(Data_Read_Buffer,Fota_S.Fota_Recv_Data_Len);
|
|
@@ -91,7 +96,7 @@ void Fota_Func(UINT8 *DataPtr,INT32 connectId)
|
|
|
else
|
|
|
{
|
|
|
Fota_Answer[3] = 0x02;
|
|
|
- BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
|
|
|
+ BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_Recv_Data_Len_4);
|
|
|
}
|
|
|
}
|
|
|
else//数据校验失败
|
|
@@ -186,19 +191,24 @@ void Fota_Func(UINT8 *DataPtr,INT32 connectId)
|
|
|
Fota_S.Fota_All_Data_Len = *(DataPtr+33)<<24|*(DataPtr+34)<<16|*(DataPtr+35)<<8|*(DataPtr+36);
|
|
|
Fota_S.Fota_Current_Addres = *(DataPtr+37)<<24|*(DataPtr+38)<<16|*(DataPtr+39)<<8|*(DataPtr+40);
|
|
|
Fota_S.Fota_Recv_Data_Len = *(DataPtr+41);
|
|
|
- memset(Fota_S.Fota_Recv_Data,0x00,100);
|
|
|
+ memset(Fota_S.Fota_Recv_Data,0xFF,100);
|
|
|
memcpy(Fota_S.Fota_Recv_Data,(DataPtr+42),*(DataPtr+41));
|
|
|
Fota_S.Fota_CRC = Fota_crc_chk(Fota_S.Fota_Recv_Data,Fota_S.Fota_Recv_Data_Len);
|
|
|
Data_Read_Buffer = malloc(Fota_S.Fota_Recv_Data_Len);
|
|
|
if(Fota_S.Fota_CRC == *(DataPtr+Fota_S.Fota_Recv_Data_Len+42)||Data_Read_Buffer!=PNULL)
|
|
|
{
|
|
|
+ UINT8 Fota_Recv_Data_Len_4 = 0;
|
|
|
if(Fota_S.Fota_Recv_Data_Len%4!=0)
|
|
|
{
|
|
|
- Fota_S.Fota_Recv_Data_Len = Fota_S.Fota_Recv_Data_Len + 4-(Fota_S.Fota_Recv_Data_Len%4);
|
|
|
+ Fota_Recv_Data_Len_4 = Fota_S.Fota_Recv_Data_Len + 4-(Fota_S.Fota_Recv_Data_Len%4);
|
|
|
}
|
|
|
- BSP_QSPI_Write_Safe(Fota_S.Fota_Recv_Data,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
|
|
|
-
|
|
|
- BSP_QSPI_Read_Safe(Data_Read_Buffer,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Fota_Recv_Data_Len_4 = Fota_S.Fota_Recv_Data_Len;
|
|
|
+ }
|
|
|
+ BSP_QSPI_Write_Safe(Fota_S.Fota_Recv_Data,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_Recv_Data_Len_4);
|
|
|
+ memset(Data_Read_Buffer,0x00,Fota_S.Fota_Recv_Data_Len);
|
|
|
+ BSP_QSPI_Read_Safe(Data_Read_Buffer,Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_Recv_Data_Len);
|
|
|
Data_Read_Crc = Fota_crc_chk(Data_Read_Buffer,Fota_S.Fota_Recv_Data_Len);
|
|
|
#ifdef USING_PRINTF1
|
|
|
printf("\n\n\n");
|
|
@@ -216,7 +226,7 @@ void Fota_Func(UINT8 *DataPtr,INT32 connectId)
|
|
|
else
|
|
|
{
|
|
|
Fota_Answer[3] = 0x02;
|
|
|
- BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len);
|
|
|
+ BSP_QSPI_Erase_Safe(Fota_S.Fota_Flash_Addres+Fota_S.Fota_Current_Addres,Fota_S.Fota_Recv_Data_Len_4);
|
|
|
}
|
|
|
}
|
|
|
else//数据校验失败
|