1.我使用过的协议栈是ZStack-CC2530-2.5.1a, 升级所用的Server是D:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\OTA\Dongle的工程,需要被升级的设备烧写的bootloader是D:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\OTA\Boot, 烧写的镜像是D:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\HomeAutomation\SensorDemo(该工程师模仿D:\Texas Instruments\ZStack-CC2530-2.5.1a\Projects\zstack\HomeAutomation\SampleSwitchOta工程)配置的;
2.由于镜像的大小为110K左右,所以我采用的内部的flash升级,配置#define HAL_OTA_XNV_IS_INT TRUE(不使用外部flash),不知道还需要配置什么?
3. 出现问题:
① 在OTA Console软件上显示的右击节点Read Attributes没有下拉的属性列表,是不是需要在设备端这边配置什么?
② 点击更新完后,如附件所示发现设备应该是更新完成了,但是设备重启后不能加网络或者其他的操作(似乎设备没有跑到APP的代码区)?我想请教下怎么配置内部flash更新?
qiang lin2:
我想请教下,在设备升级的文件写到flash中,然后是在哪里将数据复制到0x800开始的位置的? 有谁能告知下么,急!!!
VV:
从外部Flash把程序拷贝到内部Flash,是在bootloader里面完成的,你可以看下boot的代码处理
miffy:
回复 qiang lin2:
在C:\Texas Instruments\Z-Stack 3.0.0\Projects\zstack\OTA\Boot\CC2530DB文件夹下的boot工程里面搜索一下这个宏HAL_OTA_XNV_IS_SPI,就搞明白了;
对比了CC2530和CC2538的OTA bootloader,发现截然不同,CC2530执行了拷贝动作,CC2538好像只能实现ping-ponging这种方式,一次OTA imageA,下一次只能OTA image B,有点太费劲,最好每次都能OTA同一个文件,也省的分别编译了。