当前位置: 代码迷 >> 综合 >> 对zigbee (cc2530)进行OTA
  详细解决方案

对zigbee (cc2530)进行OTA

热度:31   发布时间:2024-02-06 16:42:00.0

有两个文件可以参考G:\chromeDownload\material\ZStack-CC2530-2.5.1a\Documents的“Over Air Download For CC2530”和“Z-Stack OTA Upgrade User's Guide”

 

推荐抓包工具  官方参考  Ubiqua

直接修改协调器和作为客户端的路由,不能找到客户端(可以组网),修改hal_board_cfg.h后才行

具体修改内容是#ifndef HAL_KEY
#define HAL_KEY TRUE
#endif改为

#ifndef HAL_KEY
#define HAL_KEY FALSE
#endif  否则不会自动组网

 

关于服务器和PC通信可以追源代码:以映像通知为例

uint16 OTA_Dongle_event_loop( uint8 task_id, uint16 events )  -> OTA_ProcSysAppMsg((mtSysAppMsg_t *)MSGpkt); ->void OTA_ProcessSysApp_ImageNotifyReq(uint8 *pData)  -> zclOTA_SendImageNotify(&dstAddr, &imgNotifyParams);  ->status = zcl_SendCommand( ZCL_OTA_ENDPOINT, dstAddr, ZCL_CLUSTER_ID_OTA,
COMMAND_IMAGE_NOTIFY, TRUE,
ZCL_FRAME_SERVER_CLIENT_DIR, TRUE, 0,
zclOTA_SeqNo++, (uint16) (pBuf - buf), buf );

注意要使能服务器的zigbee串口流控,2.5a协议栈的OtaServer.exe默认开启流控,如果不开启,数据只能上行,不能下行,参考   Z-Stack 3.0.2的OtaServer.exe可以配置流控

zigbee默认串口0;   流控RTS  P0.5 ;    CTS P0.4

注意RTS和DTR的连接顺序

注意用协议栈,客户端一定要加外扩flash芯片

#define HAL_OTA_XNV_IS_INT         TRUE //TRUE是不使用外flash
#define HAL_OTA_XNV_IS_SPI        !HAL_OTA_XNV_IS_INT

客户端默认SPI引脚用的串口1的备用位置,片选P1.3  SCLK P1.5

外部flash要接到这几个引脚

如果要用外扩flash,要重新定义引脚,片选引脚除了重定义还要改函数,flash函数参考

static void HalSPIWrite(uint32 addr, uint8 *pBuf, uint16 len)同上

目前进行的情况,flash改外扩了,但是出现问题,OTA空中下载更新虽然显示100%但是之后就跳转显示“download failed(150)”,还没解决,待定搁置····