Other Parts Discussed in Thread: UNIFLASH,
Hello All,
We have successfully implemented over the air update for our devices and deployed at customer places & its works well in the beginning.
As More number of devices deployed at customer places, Whenever new firmware updates released. 10% of devices are Stopped working.
When Debugged we found that Flash got corrupted and not accessible.
This faulty devices working only after formatting & programming firmware through Uniflash.
This is a critical issue, as Every time we need to interact with our remote customer to manually load the firmware using Uniflash and to train them for loading firmware into CC3200. This is time consuming
The same firmware is loaded into all the devices with the same OTA_SERVER_APP_TOKEN.
Please, help us to resolve the issue by allowing all the cc3200 devices to get the OTA updates simultaneously or by some mechanism so that only one CC3200 WIFI devices should get access to the Dropbox API. and dropbox API access should be assigned to other CC3200 device only after completion of first CC3200 OTA update process.
The OTA update code is as below.
// Initialize OTA
pvOtaApp =
sl_extLib_OtaInit(RUN_MODE_NONE_OS|RUN_MODE_BLOCKING,0);
strcpy((char *)ucVendorStr,OTA_VENDOR_STRING);
OTAServerInfoSet(&pvOtaApp,(char *)ucVendorStr);
//
// Check if this image is booted in test mode
//
sl_extLib_OtaGet(pvOtaApp,EXTLIB_OTA_GET_OPT_IS_PENDING_COMMIT,
&OptionLen,&OptionVal);
UART_PRINT("EXTLIB_OTA_GET_OPT_IS_PENDING_COMMIT? %d \n\r",OptionVal);
if(OptionVal == true)
{
UART_PRINT("OTA:PENDING COMIT & WLAN OK ==> PERFORM COMIT \n\r");
SetCommitInt = OTA_ACTION_IMAGE_COMMITED;
sl_extLib_OtaSet(pvOtaApp, EXTLIB_OTA_SET_OPT_IMAGE_COMMIT,
sizeof(int), (_u8 *)&SetCommitInt);
}
else
{
UART_PRINT("Starting OTA \n\r");
lRetVal = 0;
while(!lRetVal)
{
lRetVal = sl_extLib_OtaRun(pvOtaApp);
}
UART_PRINT("OTA run = %d\n\r",lRetVal);
if(lRetVal < 0)
{
UART_PRINT("OTA: Error with OTA server\n\r");
}
else if(lRetVal == RUN_STAT_NO_UPDATES)
{
UART_PRINT("OTA: RUN_STAT_NO_UPDATES\n\r");
}
else if ((lRetVal & RUN_STAT_DOWNLOAD_DONE))
{
//
// Set OTA File for testing
//
lRetVal = sl_extLib_OtaSet(pvOtaApp, EXTLIB_OTA_SET_OPT_IMAGE_TEST,
sizeof(int), (_u8 *)&SetCommitInt);
UART_PRINT("OTA: NEW IMAGE DOWNLOAD COMPLETE\n\r");
UART_PRINT("Rebooting...\n\r");
RebootMCU();
}
Thanks and Regards,
Rohit