有两个文件可以参考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)”,还没解决,待定搁置····