请大家帮忙看下,simpleBLEPeripheral工程,程序中开启看门狗,OAD升级失败!
失败提示内容如下:
Device disconnected!
Device disconnected during programming.Firmware upgrade failed,you should check battery andsettings
注:CC2541-OAD-ImgA和CC2541-OAD-ImgB都是由例程中simpleBLEPeripheral工程配置出来,并加入看门狗!
程序代码如下:
if ( events & SBP_START_DEVICE_EVT )
{
// Start the Device
VOID GAPRole_StartDevice( &simpleBLEPeripheral_PeripheralCBs );
// Start Bond Manager
VOID GAPBondMgr_Register( &simpleBLEPeripheral_BondMgrCBs );
// Set timer for first periodic event
osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD );
wdt_reset_mode(WDT_1000MS); /* 开启看门狗 15.6ms */
osal_set_event( simpleBLEPeripheral_TaskID, SBP_AMY_CLRWDT_EVT ); //立即触发清狗事件
return ( events ^ SBP_START_DEVICE_EVT );
}
if (events & SBP_AMY_CLRWDT_EVT)
{
wdt_clr(); /* 4ms 清狗 */
osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_AMY_CLRWDT_EVT, 4);
return (events ^SBP_AMY_CLRWDT_EVT);
}
若将看门狗去掉,则OAD升级正常!请问问题出在哪里呢?
Barbara Wu:
请问是OAD开始了之后才失败还是一开始就失败了?
Barbara Wu:
加看门狗的原因是什么呢?
daoyin Fan:
回复 Barbara Wu:
你好,WBJ,找到OAD失败的原因了,是因为配置里没有将POWER_SAVING去掉,进入低功耗模式,现在已经可以升级。
加看门狗的原因是,我想在SimpleBLEPeripheral工程的基础上开发项目,加入看门狗,保证系统的稳定性,防止死机。
但是现在又有一个问题,虽然OAD成功,手机上也显示升级成功,但是手机上看运行的版本号一直是 IMAGE TYPE A 。而不是IMAGE TYPE B!
而我将看门狗去掉,OAD成功后,版本号就正确了,由IMAGE TYPE A升级为IMAGE TYPE B,这很奇怪!后来我去看BIM的程序,里面用到了WDT,难道程序里WDT配置要和BIM的配置一样,如果需要OAD升级时?