|
@@ -712,52 +712,70 @@ int Upgrade_UART(int uartfdOrd,unsigned int Type,unsigned char TargetAddr,char *
|
|
|
DEBUG_INFO("CRC32 by calculation: 0x%08X\n",crc32(ptr,ImageLen));
|
|
|
if(crc32(ptr,ImageLen) == ImageCRC)
|
|
|
{
|
|
|
- if(uart_update_start(uartfd, TargetAddr, crc32(ptr+48,DataLength))==PASS)
|
|
|
+ if(YES)
|
|
|
{
|
|
|
int CNT_Fail = 0;
|
|
|
int CNT_Trans = 0;
|
|
|
+
|
|
|
do
|
|
|
{
|
|
|
- if(uart_update_transfer(uartfd, TargetAddr, CNT_Trans*1024, ptr+48+(CNT_Trans*1024), 1024)==PASS)
|
|
|
- {
|
|
|
- CNT_Fail = 0;
|
|
|
- CNT_Trans++;
|
|
|
- DEBUG_INFO("Upgrade progress:%.2f%%\n", ((float)(CNT_Trans*1024))/(DataLength)*100);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DEBUG_WARN("Data transfer fail, retry %d \n", ++CNT_Fail);
|
|
|
- sleep(1);
|
|
|
- }
|
|
|
- }while(DataLength-(CNT_Trans*1024)>0 && CNT_Fail<10);
|
|
|
+ if(uart_update_start(uartfd, TargetAddr, crc32(ptr+48,DataLength))==PASS)
|
|
|
+ break;
|
|
|
+ else
|
|
|
+ DEBUG_WARN("Upgrade start fail, retry %d \n", ++CNT_Fail);
|
|
|
+ }while(CNT_Fail<10);
|
|
|
|
|
|
if(CNT_Fail>=10)
|
|
|
- {
|
|
|
- uart_update_abord(uartfd, TargetAddr);
|
|
|
- DEBUG_ERROR("UART upgrade transfer retry > limits, aboard upgrade.\n");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- do
|
|
|
- {
|
|
|
- if(uart_update_finish(uartfd, TargetAddr)==PASS)
|
|
|
- break;
|
|
|
- else
|
|
|
- DEBUG_WARN("Upgrade finish fail, retry %d \n", ++CNT_Fail);
|
|
|
- }while(CNT_Fail<10);
|
|
|
-
|
|
|
- if(CNT_Fail>=10)
|
|
|
- {
|
|
|
- uart_update_abord(uartfd, TargetAddr);
|
|
|
- DEBUG_ERROR("UART upgrade finish retry > limits, aboard upgrade.\n");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- result = PASS;
|
|
|
- printf("UART upgrade success.\n");
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ {
|
|
|
+ uart_update_abord(uartfd, TargetAddr);
|
|
|
+ DEBUG_ERROR("UART upgrade start retry > limits, aboard upgrade.\n");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CNT_Fail = 0;
|
|
|
+ do
|
|
|
+ {
|
|
|
+ if(uart_update_transfer(uartfd, TargetAddr, CNT_Trans*1024, ptr+48+(CNT_Trans*1024), 1024)==PASS)
|
|
|
+ {
|
|
|
+ CNT_Fail = 0;
|
|
|
+ CNT_Trans++;
|
|
|
+ DEBUG_INFO("Upgrade progress:%.2f%%\n", ((float)(CNT_Trans*1024))/(DataLength)*100);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DEBUG_WARN("Data transfer fail, retry %d \n", ++CNT_Fail);
|
|
|
+ sleep(1);
|
|
|
+ }
|
|
|
+ }while(DataLength-(CNT_Trans*1024)>0 && CNT_Fail<10);
|
|
|
+
|
|
|
+ if(CNT_Fail>=10)
|
|
|
+ {
|
|
|
+ uart_update_abord(uartfd, TargetAddr);
|
|
|
+ DEBUG_ERROR("UART upgrade transfer retry > limits, aboard upgrade.\n");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CNT_Fail = 0;
|
|
|
+ do
|
|
|
+ {
|
|
|
+ if(uart_update_finish(uartfd, TargetAddr)==PASS)
|
|
|
+ break;
|
|
|
+ else
|
|
|
+ DEBUG_WARN("Upgrade finish fail, retry %d \n", ++CNT_Fail);
|
|
|
+ }while(CNT_Fail<10);
|
|
|
+
|
|
|
+ if(CNT_Fail>=10)
|
|
|
+ {
|
|
|
+ uart_update_abord(uartfd, TargetAddr);
|
|
|
+ DEBUG_ERROR("UART upgrade finish retry > limits, aboard upgrade.\n");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ result = PASS;
|
|
|
+ printf("UART upgrade success.\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
DEBUG_ERROR("UART upgrade request failed.\n");
|