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.

[参考译文] CC1352P7:在 Wi-SUN 和/或 CoAP 节点示例中、我可以发送的最大有效载荷是什么

Guru**** 2338860 points
Other Parts Discussed in Thread: SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1516908/cc1352p7-what-is-the-largest-payload-i-can-send-in-wi-sun-and-or-coap-node-example

器件型号:CC1352P7
主题:SysConfig 中讨论的其他器件

工具/软件:

您好!  

我尝试查看可以从路由器节点发送到边界路由器节点的最大有效负载大小是多少。
我 也在尝试了解是否有任何消息碎片和重新组装的选项,如果是的话,在实践中是如何工作的。

到目前为止、我已处理 ns_CoAP_node 示例以使用按钮按压回调发送自定义消息:

static void btn_interrupt_handler(uint8_t index) {
    // if (index == CONFIG_GPIO_BTN1) {
    //     if (bcast_send == true) {
    //         bcast_send = false;
    //     } else {
    //         bcast_send = true;
    //     }
    // } else if (index == CONFIG_GPIO_BTN2) {
    //     if (unicast_send == true) {
    //         unicast_send = false;
    //     } else {
    //         unicast_send = true;
    //     }
    // }


    tr_debug("calling: service_request_send");

    coap_service_request_send(service_id, 0, root_unicast_addr, COAP_PORT,
                              COAP_MSG_TYPE_NON_CONFIRMABLE,
                              COAP_MSG_CODE_REQUEST_GET, COAP_DATA_MESSAGE_URI,
                              COAP_CT_TEXT_PLAIN, &data_to_send,
                              sizeof(data_to_send), 0);
}

然而,我可以发送的最大有效载荷小于1490字节,实际上我能够发送1450字节的有效载荷,所以实际最大大小应该在两者之间。

我已经意识到、链接层中有一个 SysConfig 选项、用于最大有效载荷大小、默认设置为"2047"字节(似乎是可能的最大值)

我想知道为什么我无法发送高达1500字节的有效负载、是否有办法提高此限制?
此外、是否有任何消息分段和汇编选项?

谢谢。




  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    在 MAC 层、我们有2kB 的限制。

    分段在6LowPAN 级别处理。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复、
    那么、是否有任何栈大小或某种东西会阻止应用程序正常运行? 如果是、从哪里可以提高?
    当我将有效负载大小增加到1500字节时,应用程序不接收/发送(?) 任何东西。  

    如果您能告诉我发送分段消息的阻止程序是什么、那将会很好。
    在我们的应用程序中、传输诸如2000字节或3000字节等大数据块至关重要

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    应用程序是否崩溃、或者数据包是否仅被丢弃? 例如、一旦您尝试发送2KB 数据包但失败、您之后是否仍能发送< 1500个数据包?

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在回答您的问题之前、 需要考虑四个方面。

    1)我正在使用在全局范围中定义为 uint8_t data_to_send[1500]={0}的静态虚拟数据;这意味着我没有已知的发送可变长度数据包的奢侈体验。 (我可以更新基本测试应用程序来执行此操作)

    2)我跟踪了错误代码, CoAP_SERVICE_REQUEST_SEND ()函数返回0。

    3)我增加了 WISUNTHREADSTAKSIZE 到8000和仍然没有变化。

    4)我正在使用逻辑分析仪跟踪从路由到 GPIO 的 RFcore 信号发送和接收的数据包。

    应用程序似乎不会崩溃、因为每次 我按下按钮时、它都会注销日志语句"tr_debug ("Calling:service_request_send");"  
    我猜测某些逻辑例程会被一些校验器截断。 此外、我可以看到射频内核信号定期切换 GPIO 引脚、不包括 与大型数据包传输相对应的引脚。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    如果改为将 DATA_TO_SEND 设置为2048、问题是否仍然存在? 原因是我认为可能存在内存校正问题。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试了2048、这一个也不起作用;是的、问题仍然存在。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,如果你能尽快回到我,我会很感激。  
    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、  

    我本来打算在尝试重现问题的时候尽快回来、但现在我是这样。  

    您是否也可以在 NCP 中增加缓冲区大小以及波特率?

    我之前还应该问过、您使用的是什么 PHY? 当然、发送更大的数据包会更容易、比特率越高。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复、

    有两个方面:

    1)我看不到路由器节点端的数据包传输,可以通过查看 RF 核心信号验证,路由器节点不发送数据包。 处于完全嵌入式模式的路由器节点应用 也是否依赖于 UART?

    2)我测试的 phy 设置为50Kbps。




  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    谢谢你的头,如果数据包甚至没有被发送, NCP 确实不应该与它有任何关系。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我想知道发送器件出现了什么问题、我确信它不会发送任何数据包、因为我在逻辑分析仪上看不到 rfcore GPIO 的切换;但是、如果我降低有效载荷大小以达到1000字节、它会发送它、并且我可以在逻辑分析仪上看到切换。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、我想知道此问题是否有任何更新? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、这只是为了提醒您、我仍在等待您的答复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    我没有忘记,但我仍然必须观察问题,并进行仪器。 在此期间、我将听取您可以提供的更多数据/想法。 我仍然不认为以50千比特发送如此大的数据包是一个好主意、因为发生位错误的风险很高。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是300Kbps 的结果、这是 Wi-SUN 在 1KB 和1.5KB 的两个有效载荷大小下的最高数据速率。

    发送1KB (路由到 GPIO)时路由器节点和边界路由器的 RFcore 信号
    https://ibb.co/vxqR84gd

     发送1.5KB  (路由到 GPIO)时路由器节点和边界路由器的 RFcore 信号
    https://ibb.co/ZbpjYmK

    可以看出、路由器节点不发送消息;下面还提供了路由器节点串行日志:
    https://ibb.co/pBjrY5gs


    正如您所看到的,程序没有崩溃,因为我可以在行中调用几次发送函数,但它没有发送任何可以
    只需查看 rfcore 信号即可确认。

    我有兴趣发送大数据包的原因是为了了解分段/重新组装在 TI wisun 栈中的工作原理。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    感谢您的讲解。 我还刚刚使用2048字节运行测试、可以看到它不会发送/切换 rfcore GPIO。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    (顺便说一下、我无法访问 postimg.cc 链接)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我看到,我将更新主机服务的屏幕截图.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    从我看到的情况来看、我们似乎默认禁用碎片作为一种优化。  

    我已经尝试过不定义它们,但似乎它还没有效果:

    我会随时更新您的最新信息。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Arthur、我明白了。
    我期待收到您的回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Omid、

    似乎代码中存在杂散 NO_IP_fragment_tx 定义。 在该文件中取消注释: cfg_ti_ws_router.h

    我相信我现在可以观察碎片(1500字节有效载荷)

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这里我有一个类似的序列、但这次有2048字节长的有效载荷(CoAP 得到 x2):