关于2630 ota 完毕后无法启动的问题
基于2630 ota demo 进行功能添加, 不添加SC的任务代码,ota功能正常;
添加SC的相关任务代码后, ota img能够 下载到外部flash 并 通过校验,client端在执行 OTA_loadExtImage()后,新镜像一直没被有加载 且 没有重启动作,人为重启后设备的固件仍然为更新前的固件;
→改进:在ota启动时,将SC的任务删除,依然更新失败,现象同上;
SC任务创建时,对OTA产生了影响?
另外,
void OTA_loadExtImage(uint8 imageSelect) { ... if(imageSelect == ST_FULL_IMAGE || imageSelect == ST_APP_ONLY_IMAGE) { ((void (*)(uint32_t, uint32_t, uint32_t))SENSORTAGAPP_BL_OFFSET) (EFL_ADDR_IMAGE_MIRROR,zclOTA_DownloadedImageSize - 64, 0); } ... }
该函数中的相关 宏 SENSORTAGAPP_BL_OFFSET 的位置如何去检查?
在你的Bootloader+zigbee协议栈+Sensor controller的代码时,能够正常运行么?
建议在升级前把SCE的任务stop掉。
另外一个版本,可以在OTA结束以后,从外部falsh把代码拷贝到内部以后,可以用Flash Programmer 2把程序读到hex文件,可以跟第一次的hex文件对比下。
Bootloader+zigbee协议栈+Sensor controller的代码 是可以正常执行,目前测试结果,应该是 系统cpu 下I2C驱动对OTA有影响,测试情况如下:
在sensorTag工程下,注释掉I2C相关代码后,ota更新完毕后无法自行加载 新镜像 而导致失败;
不注释掉I2C相关代码,则ota正常;
我们这边在sensorTag工程下禁止I2C的操作如下:
①添加编译选项:DISABLE_CPU_I2C_FUNC
#ifndef DISABLE_CPU_I2C_FUNC
// Setup I2C for sensors
bspI2cInit();
#endif
#ifndef DISABLE_CPU_I2C_FUNC
// Initialise the Temperature Sensor driver
sensorTmp007Init();
#endif
②禁止ZCL_REPORT 和 TI_DRIVERS_I2C_INCLUDED编译选项
③注释掉下方文件中I2C相关代码
C:\ti\simplelink\zstack_home_1_02_02a_44539_ota_sensorTag\Projects\zstack\HomeAutomation\SensorTag-OTA\CC2650\Baseloader\CC26XXST_0120\Board.h
C:\ti\tirtos_simplelink_2_11_01_09\packages\ti\boards\SensorTag\CC26XXST_0120\Board.c
C:\ti\tirtos_simplelink_2_11_01_09\packages\ti\boards\SensorTag\CC26XXST_0120\Board.h
这样操作是否正确?若不正确,2630协议栈中如何 禁止i2c驱动?