微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZLL 、Home 120 SampleSwitch Coordinator CC2530DB 失控 是什么问题?

ZLL 、Home 120 SampleSwitch Coordinator CC2530DB 失控 是什么问题?

时间:10-02 整理:3721RD 点击:

osal_start_timerEx( zclSampleSw_TaskID, SAMPLESW_ENREQ_TIMEOUT_EVT , 1000 ); 设置断点  
Mon Jan 04, 2016 15:54:31: Breakpoint hit: Code @ zcl_samplesw.c:1007.22
Mon Jan 04, 2016 15:54:45: Breakpoint hit: Code @ zcl_samplesw.c:1007.22 

ZDP_SimpleDescReq( &simpleDec_DstAddr, simpleDec_DstAddr.addr.shortAddr,simpleDec_EndPoint, 0); 设置断点
Mon Jan 04, 2016 15:54:48: Breakpoint hit: Code @ zcl_samplesw.c:1023.30 

if (!((pSimpleDesc.simpleDesc.AppProfId == 0xC05E) &&

                             (pSimpleDesc.simpleDesc.AppNumInClusters == 1)

                          && (pSimpleDesc.simpleDesc.AppNumOutClusters == 1))

                          && ((pSimpleDesc.simpleDesc.AppNumInClusters > 0) ||

                          (pSimpleDesc.simpleDesc.AppNumOutClusters > 0)))     此条件不成立!

pSimpleDesc.simpleDesc.AppProfId = 260;

pSimpleDesc.simpleDesc.AppNumInClusters = ‘\0’ (0x00)

pSimpleDesc.simpleDesc.AppNumOutClusters = ‘\0’ (0x00)

osal_mem_free(pSimpleDesc.simpleDesc.pAppInClusterList);  //执行此函数里时,程序失控

Mon Jan 04, 2016 15:54:59: Unable to execute: driver busy.

 抓包数据在附件

你好,请问你的问题是什么?程序失控?

当遇到一个小问题的时候心情也郁闷,当解决掉这个小问题的时候心情也会舒畅。

ZDP_ActiveEPReq()函数是求得远端设备的所有端点,ZDP_SimpleDescReq()函数是求一个端点的描述,在 TI vv 老师提供的方案中在(pMsg->clusterID == Simple_Desc_rsp)事件中对求得的端点注册,这个过程中ZDO_ParseSimpleDescRsp( )函数对端点描述符解析,解析的时候如果簇项目存在则对簇列表申请内存空间,如果解析成功则对本应用端点描述注册,完了执行 osal_mem_free()函数释放申请的内存空间,问题就出在释放空间这里。

调试协议栈是 Home 120, 就相关代码与 Home 122对比没有明显差异。当然如果对协议栈了解透彻这不算是个问题。
对osal_mem_free()这个函数的解释的时候有这么一句话“必须是在osal_mem_alloc()函数申请过空间的时候才能用此函数”,ZDO_ParseSimpleDescRsp( )函数解析的时候对端点描述中的簇项目做了一次判断,如果簇存在才申请内存空间,然而在此释放空间的时候没有作此判断所出现的问题。当加上一句对pSimpleDesc.simpleDesc.AppNumInClusters 代码的判断,此问题也不存在了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top