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.

CC2530协调器只要连接超过2个终端,就会出现AF_DataRequest(),返回0x10错误。无法发送数据到终端

Other Parts Discussed in Thread: CC2530, Z-STACK

各位TI的技术工程师,大家好!

我现在在使用CC2530F256来开发程序,现在遇到一个问题就是当我的CC2530协调器只要连接超过2个终端,就会出现当调用AF_DataRequest()发送数据到终端时,返回afStatus_MEM_FAIL(0x10)错误,无法发送数据到终端。当只连接2个或一个终端时,数据发送是正常没有任何问题。

我工程里的协议栈是:ZStack-CC2530-2.3.0-1.4.0协议栈
请各位大师帮忙一下,我已经处理了很长时间一直都无法解决问题。。谢谢。。
  • ################################################################################
    # #
    # IAR Universal Linker V5.0.2.5/W32 #
    # #
    # Link time = 16/Apr/2018 22:17:07 #
    # Target CPU = x51 #
    # List file = "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\List #
    # \SampleApp.map" #
    # Output file 1 = "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Exe\ #
    # SampleApp.a51" #
    # Format: intel-extended #
    # Command line = -C #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\..\..\..\Libraries\TI2 #
    # 530DB\bin\Router-Pro.lib" #
    # -C #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\..\..\..\Libraries\TI2 #
    # 530DB\bin\Security.lib" #
    # -C #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\..\..\..\Libraries\TIM #
    # AC\bin\TIMAC-CC2530.lib" #
    # -D_NR_OF_BANKS=0x07 -D_CODEBANK_END=0xFFFF #
    # -D_CODEBANK_START=0x8000 -D?CBANK_MASK=0x07 #
    # -D?CBANK=0x9F #
    # "-IC:\Program Files (x86)\IAR Systems\Embedded Wo #
    # rkbench 6.0 Evaluation\8051\CONFIG\" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # AF.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # DebugTrace.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_AF.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_APP.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_DEBUG.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_NWK.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_SAPI.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_SYS.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_TASK.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_UART.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_UTIL.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_VERSION.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # MT_ZDO.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL_Clock.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL_Memory.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL_Nv.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL_PwrMgr.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL_SampleApp.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OSAL_Timers.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # OnBoard.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # SampleApp.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # SampleAppHw.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZDApp.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZDConfig.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZDNwkMgr.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZDObject.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZDProfile.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZDSecMgr.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZGlobals.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # ZMain.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # chipcon_cstartup.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_adc.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_assert.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_dma.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_drivers.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_flash.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_key.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_lcd.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_led.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_sleep.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_startup.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_timer.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # hal_uart.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_autopend.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_backoff_timer.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_cfg.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_csp_tx.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_low_level.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_mcu.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_mem.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_radio.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_radio_defs.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_rffrontend.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_rx.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_rx_onoff.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_sleep.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # mac_tx.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # nwk_globals.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # saddr.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # sapi.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # zmac.r51" #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Obj\ #
    # zmac_cb.r51" #
    # -o #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\Exe\ #
    # SampleApp.a51" #
    # -Fintel-extended -l #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\CoordinatorEB-Pro\List #
    # \SampleApp.map" #
    # -xmsn #
    # "-IC:\Program Files (x86)\IAR Systems\Embedded Wo #
    # rkbench 6.0 Evaluation\8051\LIB\" #
    # -f #
    # "D:\project\embedded locker\coodinater\Projects\z #
    # stack\Locks\Locks\CC2530DB\..\..\..\Tools\CC2530D #
    # B\f8w2530.xcl" #
    # (-D_XDATA_START=0x0001 -D_XDATA_END=0x1EFF #
    # -D_IDATA_END=0xFF -D_CODE_START=0x0000 #
    # -D_CODE_END=0x7FFF -D_FIRST_BANK_ADDR=0x10000 #
    # -D?REGISTER_BANK=0 -D_REGISTER_BANK_START=0 #
    # -D?PBANK_NUMBER=00 -D_BREG_START=0x00 #
    # -D?VB=0x20 -Z(BIT)BREG=_BREG_START #
    # -Z(BIT)BIT_N=0-7F #
    # -Z(DATA)REGISTERS+8=_REGISTER_BANK_START #
    # -Z(DATA)BDATA_Z,BDATA_N,BDATA_I=20-2F #
    # -Z(DATA)VREG+_NR_OF_VIRTUAL_REGISTERS=08-7F #
    # -Z(DATA)PSP,XSP=08-7F -Z(DATA)DOVERLAY=08-7F #
    # -Z(DATA)DATA_I,DATA_Z,DATA_N=08-7F #
    # -U(IDATA)0-7F=(DATA)0-7F #
    # -Z(IDATA)IDATA_I,IDATA_Z,IDATA_N=08-_IDATA_END #
    # -Z(IDATA)ISTACK+_IDATA_STACK_SIZE#08-_IDATA_END #
    # -Z(IDATA)IOVERLAY=08-FF #
    # -Z(CODE)INTVEC=_CODE_START #
    # -Z(CODE)BIT_ID,BDATA_ID,DATA_ID,IDATA_ID,IXDATA_I #
    # D,PDATA_ID,XDATA_ID=_CODE_START-_CODE_END #
    # -Z(CODE)RAM_CODE_FLASH=_RAM_CODE_FLASH_START-_RAM #
    # _CODE_FLASH_END #
    # -D_SLEEP_CODE_SPACE_START=(_CODE_END-7) #
    # -D_SLEEP_CODE_SPACE_END=(_CODE_END) #
    # -Z(CODE)SLEEP_CODE=_SLEEP_CODE_SPACE_START-_SLEEP #
    # _CODE_SPACE_END #
    # -P(CODE)CSTART,BANK_RELAYS,RCODE,DIFUNCT,NEAR_COD #
    # E=_CODE_START-_CODE_END #
    # -P(CODE)CODE_C=_CODE_START-_CODE_END #
    # -P(CONST)XDATA_ROM_C=0x8000-0xFFFF #
    # -P(CODE)XDATA_ROM_C_FLASH=0x18000-0x1FFFF #
    # -QXDATA_ROM_C=XDATA_ROM_C_FLASH #
    # -P(CODE)BANKED_CODE=_CODE_START-_CODE_END,[(_CODE #
    # BANK_START+_FIRST_BANK_ADDR)-(_CODEBANK_END+_FIRS #
    # T_BANK_ADDR)]*_NR_OF_BANKS+_FIRST_BANK_ADDR #
    # -Z(XDATA)XSTACK+_XDATA_STACK_SIZE=_XDATA_START-_X #
    # DATA_END #
    # -Z(XDATA)XDATA_Z,XDATA_I=_XDATA_START-_XDATA_END #
    # -P(XDATA)XDATA_N=_XDATA_START-_XDATA_END -cx51 #
    # -D_RAM_CODE_XDATA_START=0x01EDD #
    # -D_RAM_CODE_XDATA_END=(_RAM_CODE_XDATA_START+0x22 #
    # ) #
    # -Z(XDATA)RAM_CODE_XDATA=_RAM_CODE_XDATA_START-_RA #
    # M_CODE_XDATA_END #
    # -D_RAM_CODE_FLASH_START=0x39EDD #
    # -D_RAM_CODE_FLASH_END=(_RAM_CODE_FLASH_START+0x22 #
    # ) #
    # -D_ZIGNV_ADDRESS_SPACE_START=(((_NR_OF_BANKS+1)*_ #
    # FIRST_BANK_ADDR)-0x3800) #
    # -D_ZIGNV_ADDRESS_SPACE_END=(_ZIGNV_ADDRESS_SPACE_ #
    # START+0x2FFF) #
    # -Z(CODE)ZIGNV_ADDRESS_SPACE=_ZIGNV_ADDRESS_SPACE_ #
    # START-_ZIGNV_ADDRESS_SPACE_END #
    # -D_IEEE_ADDRESS_SPACE_START=(((_NR_OF_BANKS+1)*_F #
    # IRST_BANK_ADDR)-0x18) #
    # -D_IEEE_ADDRESS_SPACE_END=(_IEEE_ADDRESS_SPACE_ST #
    # ART+7) #
    # -Z(CODE)IEEE_ADDRESS_SPACE=_IEEE_ADDRESS_SPACE_ST #
    # ART-_IEEE_ADDRESS_SPACE_END) #
    # -D_NR_OF_VIRTUAL_REGISTERS=10 -D?PBANK=0xA0 #
    # -D?DPL1=0x84 -D?DPH1=0x85 -e?BCALL_07=?BCALL #
    # -e?BRET_07=?BRET -e?BDISPATCH_07=?BDISPATCH #
    # -e_small_write=_formatted_write #
    # -e_medium_read=_formatted_read -we24=i -s #
    # __program_start #
    # "C:\Program Files (x86)\IAR Systems\Embedded Work #
    # bench 6.0 Evaluation\8051\LIB\CLIB\cl-pli-blxd-1e #
    # 16x01.r51" #
    # -D_IDATA_STACK_SIZE=0xC0 #
    # -D_EXTENDED_STACK_START=0x00 #
    # -D_EXTENDED_STACK_SIZE=0x00 #
    # -D_PDATA_STACK_SIZE=0x80 #
    # -D_XDATA_STACK_SIZE=0x300 #
    # -D_XDATA_HEAP_SIZE=0x00 -D_FAR_HEAP_SIZE=0x000 #
    # -D_HUGE_HEAP_SIZE=0x000 #
    # -D_FAR22_HEAP_SIZE=0xFFF #
    #
  • 附上了我的MAP文件
  • ZStack-CC2530-2.3.0-1.4.0这个版本真的很老了,你能在新版或者至少是zstack home1.2.2上测试一下吗?
  • 因为这前用的开发板上就是这个版本的ZSTACK,如果要升级到ZSTACK HOME 1.2.2,会要修改很多我的源码吗?
  • 要修改不少
  • 那我程序都已经做好了,那升到ZSTACK HOME难度太大了,还是解决我现在遇到的问题吧
  • 试试CC2530协调器調用AF_DataReuest不要太快
  • 你好,我现在是只要连接3个终端,就无法发送,并没有很快调用AF_DataReuest,就只发一次也不会成功。
  • 可以貼上你使用AF_DataRequest的方式嗎?
  • SampleApp_P2P_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; //采用短地址的方式发送
    SampleApp_P2P_DstAddr.endPoint = SAMPLEAPP_ENDPOINT; //默认的终端地址
    SampleApp_P2P_DstAddr.addr.shortAddr = addr; //目的地址

    PrintBuffer[0]=0x02;
    PrintBuffer[1]=LOCK_OPEN; // 命令码
    PrintBuffer[2]=LOCK_OPEN;
    PrintBuffer[3]=0X03;

    if ( AF_DataRequest( &SampleApp_P2P_DstAddr, (endPointDesc_t *)&SampleApp_epDesc,
    SAMPLEAPP_P2P_CLUSTERID,
    4,
    (unsigned char *)PrintBuffer,
    &SampleApp_TransID,
    AF_DISCV_ROUTE,
    AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
    {
    }
    else
    {
    // Error occurred in request to send.
    }
  • 你的程序看起來沒有什麼問題,另外一個可疑的地方是你的程序裡可能有memory leak
  • 您好,可以具体说一下memory leak吗? 因为我之前没有处理过这个。。
  • 应当不是memory leak,因为如果只连接1,2个终端时, 发送都是正常的
  • 檢查你的程序內是否有持續配置記憶體使用但是用完後沒有歸還記憶體
  • 没有,都是用静态配置的。另外当只有连接1或2个终端时,是不会出现发送不了数据的,只有多于2个终端才会出现发送时报错。INT_HEAP_LEN 有调整为4096,但是问题还是一样。
  • 有没有哪位牛人可以提供一点建议啊?

  • 这个是受限于z-stack 2.4.0的buffer上限

  • 那如果将Z-STACK升级到2.5.1a ,可以解决这个问题吗?
  • 建议您升级到z-mesh版本,我在使用z-mesh 没有遇见类似问题。
  • 我們的產品有基於2.5.1a的協議棧沒看過類似的問題,你可以試試
  • 您好,有没有相关的升级的教程可以参考?
  • 谢谢您的回答,我要 试一下看看。
  • 昨晚升级到2.5.1a版本,但是问题还是一样,没有解决。

  • Z-MESH版本要从哪里下载?

  • 可以在 www.ti.com/.../Z-STACK-ARCHIVE 下载Z-MESH 1.0.0
x 出现错误。请重试或与管理员联系。