cc2538出厂的时候自带uart升级boot吗?
miffy:
好像没有,我这边最近也在做CC2538 OTA升级开发,遇到很多问题,其中多次升级同一个固件之后变砖就是致命的一个,目前还没有解决,@VV还在想办法帮忙分析原因,之前我在也在e2e上问了,TI工程师JasonB也还没给回复。
tao zhang25:
回复 miffy:
我的OTA升级,最多同时10个升级,多了升级不了,你用的是哪个版本的固件??
miffy:
回复 tao zhang25:
应该不止是十个,十个以上也是能升级的,因为每次只是请求offset,每次都不同,主机端负责读取文件,然后返回。
如果说设备多了,很可能会导致ota server 端处理不过来,这是有可能的。
Michael.Zhang:
回复 miffy:
源码里面定义的最大节点数是20个,我用ota同时更新2个cc2538都不行,感觉是znp的串口处理数据太慢导致的。
miffy:
回复 Michael.Zhang:
不是串口慢,而是znp自身处理速度慢,每次每个节点block request最多只有32byte,20个同时请求才多少数据,没多少;
我测试了3个节点同时block request OTA升级,是可以同时进行的,只是偶尔某个会卡一下又继续了,估计是znp处理没有响应block response,但是也没有超时失败。
Michael.Zhang:
回复 miffy:
你应该是用修改后的程序测试的吧,我用源码测试,同时ota2个,其中一个卡死,一个可以ota。
miffy:
回复 Michael.Zhang:
你需要分析zcl_otaserver_lnx.c文件里面的zclOTA_Srv_QueryNextImageReq函数,这里面处理版本判断是最佳位置;
Michael.Zhang:
回复 miffy:
说实话,server端的源码我都没看过,每次测试出现问题我们都怀疑是server端的问题,老大就是一口咬定server没问题,翻来覆去的改linux gateway的代码。日了狗了,浪费了好多时间。谢谢大神指导。
Michael.Zhang:
回复 miffy:
有个问题请教一下:zclOTA_Srv_QueryNextImageReq()函数中获取的filed应该是client传递过来的(也就是在sample_app_ota.cfg中写入的zigbee文件),从而可以获取field.version;改version跟cc2538中version(默认0x00000001)对比,但是我不知道这个值怎么获取。
Michael.Zhang:
回复 miffy:
在zcl_otaserver_linux.c中的zclOTA_Srv_QueryNextImageReq()中修改代码如上截图,测试发现不能避免重复ota,我这样改有什么问题?谢谢!