if ((++zclOTA_FileOffset) >= zclOTA_DownloadedImageSize)
{
zclOTA_ImageUpgradeStatus = OTA_STATUS_COMPLETE;
调试后发现zclOTA_FileOffset等于zclOTA_DownloadedImageSize-1,但是问题的根源没办法找到。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
跟了一下代码,确定例程默认使用的是片外扩展的flash
#define HAL_OTA_XNV_IS_INT TRUE
从代码上看,修改上面的宏为TRUE就可以变为片内flash的OTA
不过,从下面来看
#define HAL_OTA_DL_MAX (0x40000 - ((HAL_NV_PAGE_CNT+HAL_OTA_BOOT_PG_CNT)*HAL_FLASH_PAGE_SIZE))
#define HAL_OTA_DL_SIZE (HAL_OTA_DL_MAX / 2)
#define HAL_OTA_DL_OSET (HAL_OTA_DL_MAX / 2)
当size大于120K时就会出错;从调试结果看,第一次写入flash操作, HalFlashWrite(oset / HAL_FLASH_WORD_SIZE, pBuf, len / HAL_FLASH_WORD_SIZE);就会导致在flash中的代码被修改而运行错误;
那么代码是从固定位置开始写数据,如果flash中本身存在的数据已经超出了这个固定位置,那么就会引起上面的错误;而非从flash剩余空间的起始位置开始写
不知道我这样理解是不是正确,如果正确的话,我提的问题2就解决了;问题1、3尚未解决
如果不是的话,希望您可以指出
在cc2530上做ota需要加上片外flash,否则code size不够用。CC2530是256K的flash,zstack运行OTA的话需要130+,所以不够。
要想加快传输速度的话可以在zcl_ota.h中改变如下宏定义:
#define OTA_MAX_MTU 32
改到合适的长度,不过具体的payload加上各种网络层及mac层header后不能超过128字节。
您好!
我修改pagereq后,下载期间OTA console显示的进度会出现几次停顿,停顿几秒后继续下载,这会是什么原因呢?
另外,我设置OTA_MAX_MTU大小为64,Response Spacing为10ms,镜像页大小为6400字节,如果不停顿的话,下载速度大概140K/45S,优化速率的话还有什么参数可以设置呢?
默认的波特率是38400,我修改为115200后OTA console不会显示了,,这个波特率是不可以修改的吗?
你好 你的OTA 已经成功了么 我是基于zigbee协议ZStack-CC2530-2.5.1里的OTA做了一个ota实验,smartrf通过串口接上电脑,我手里有个节点,有2530及无线模块,再给这个节点加上外部存储器M25PE20,最后开启协议栈里的OTA上位机软件OTA console,组网后,节点加入网络,开始更新,数字一直跳转,可是等到100%完成后,显示的是Node oxbf7a---“download failed(150)” ,按道理应该是Node oxbf7a---completed successfully,你出现过这个问题么,这里既然已经跳转到100%,应该是已经在更新,基本功能应该是有的,是不是校验的问题呢,就像你说的client没有重启?还是只是显示问题,这里显示100%到底是有没有更新成功呢?求解答。。。