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.

LAUNCHXL-CC2650: cc2650打开Receiver On When Idle

Part Number: LAUNCHXL-CC2650
Other Parts Discussed in Thread: CC2650, CC2630

协议栈版本 zstackhome 1.2.2a

ZStackCore-EndDevice

RFD_RCVC_ALWAYS_ON=TRUE

SampleSwitch_SmartRF06

static void zswWriteParameters(void)

{

zstack_sysConfigWriteReq_t writeReq = {0};

writeReq.has_macRxOnIdle = true;
writeReq.macRxOnIdle = true;

(void)Zstackapi_sysConfigWriteReq(zswEntity, &writeReq);

}

使用软件抓包发下Receiver On When Idle还是false

请问如何可以打开Receiver On When Idle

  • 设置了-DRFD_RCVC_ALWAYS_ON=TRUE后终端就不会休眠,一直打开,此时Receiver应该也是打开的

    将完整的抓包文件传上来看看

  • -DRFD_RCVC_ALWAYS_ON=TRUE 

    编译会报错

    Error[Lp011]: section placement failed
    unable to allocate space for sections/blocks with a total estimated minimum size of 0x102e6 bytes (max align 0x4) in <[0x0000d000-0x0001cfff]> (total uncommitted space 0xffd0).
    Error[Lp011]: section placement failed
    unable to allocate space for sections/blocks with a total estimated minimum size of 0x947 bytes (max align 0x4) in <[0x200040e4-0x20004a13]> (total uncommitted space 0x930).

  • 這個报错是因為你的程序size太大了,試試看縮減程序吧

  • 这是在ZstackCore-EndDevice下编译的,不是SampleApp-SmartRF06里。可能不能缩减协议栈代码?现在是想知道如何开启cc2650的Receiver On When Idle

  • cc2650的EndDevice是不是无法打开Receiver On When Idle?

    zstack_sysConfigWriteReq_t writeReq = {0};

    writeReq.has_macRxOnIdle = true;
    writeReq.macRxOnIdle = true;

    (void)Zstackapi_sysConfigWriteReq(zswEntity, &writeReq);

    空闲接收打开,也无法改变Device Annoince中的Receiver On When Idle

  • 这是我测的,只要终端是ALWAYS_ON就会是Receiver On When Idle

  • 现在的问题是cc2650的f8wConfig.cfg中 -DRFD_RCVC_ALWAYS_ON=TRUE,编译不通过。

    Error[Lp011]: section placement failed 
    unable to allocate space for sections/blocks with a total estimated minimum size of 0x102e6 bytes (max align 0x4) in <[0x0000d000-0x0001cfff]> (total uncommitted space 0xffd0). 
    Error[Lp011]: section placement failed 
    unable to allocate space for sections/blocks with a total estimated minimum size of 0x947 bytes (max align 0x4) in <[0x200040e4-0x20004a13]> (total uncommitted space 0x930).

    clean后,make一次,编译通过,没有生成.out文件,再点击一次make,会出现和上文一样的错误。重新安装协议栈也是一样。

    iar版本

    协议栈版本zstack_home_1_02_02a_44539

  • 使用 -DRFD_RCVC_ALWAYS_ON=TRUE后是会占用更多的内存

    我没有IAR7.40,看下这里YiKai之前测试https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/533472/enable-rfd_rcvc_always_on-on-cc2650-zed

  • 这个文章我看过了,重新安装协议栈依旧不能解决。

    取消FALSH_ROM_BUILD编译后编译通过,但是烧录后cc2650不能正常工作。

  • 协议栈有些是放在ROM中的,取消后不能正常加载

    CC2650和CC2630已经不推荐用于新设计当中了,协议栈也是更新到2015年,

    里面有一些bug,TI不会再更新它。

    回到你的问题,只要打开 -DRFD_RCVC_ALWAYS_ON=TRUE,Receiver就会在IDLE时打开

    如果你还想在CC2650上实现,你可能要修改程序的大小,以给ZstackCore分配更多的内存

  • 我是用官方示例程序SampleSwitch 没有任何修改,打开 -DRFD_RCVC_ALWAYS_ON=TRUE,编译也是无法通过的。

    ZStackCore-EndDevice iar生成.map文件内容

    66 046 bytes of readonly code memory
    299 bytes of readonly data memory
    2 372 bytes of readwrite data memory

    SampleSwitch-SmartRF06 iar生成.map文件内容

    34 909 bytes of readonly code memory
    2 865 bytes of readonly data memory
    12 306 bytes of readwrite data memory

     -DRFD_RCVC_ALWAYS_ON=FALSE后

    ZStackCore-EndDevice iar生成.map文件内容

    64 796 bytes of readonly code memory
    339 bytes of readonly data memory
    2 325 bytes of readwrite data memory

  • 可能无法缩减协议栈代码

  • 我指的是缩减SampleSwitch_SmartRF06应用部分的代码,给stack分配更大的内存