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.

[参考译文] CC1354P10:嵌入式边界路由器示例应用 (ns_br)

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1629887/cc1354p10-border-router-example-application-ns_br-as-embedded

部件号: CC1354P10

您好:

我目前正在使用 TI Wi-SUN FAN 边界路由器示例应用 (ns_br)、并想问:

有任何问题吗 完全嵌入式的独立示例工程 可用于边界路由器 (ns_br)、而不是基于主机/NCP 的典型设置?

具体而言、我正在寻找:

  • 完全在 MCU 上运行的版本(无需外部主机)
  • 清除初始化流程(Wi-SUN 堆栈,网络启动等)
  • 与应用层逻辑(例如 UDP 通信)集成的示例

如果存在此类示例(在 SDK,参考设计或内部示例中)、您能告诉我吗?

谢谢你。

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

    尊敬的 Burk:

    边界路由器主要用作与外部主机连接的网络协处理器 (NCP)。 但是、在不方便使用主机的情况下、可以添加 WISUN_AUTO_START 编译器标志。 导入常规 ns_br 示例。 转到“Properties"->"Tools"->"ARM Compiler"->"Predefined“ Compiler"->"Predefined Symbols"“ Symbols"并“并添加“添加 WISUN_AUTO_START“ WISUN_AUTO_START。“。</s>“

     application.c 中还有一个函数 udpSocketSetup() 可以用来发送 UDP 数据包。  

    此致、

    Daniel

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

    感谢您的建议。

    我知道添加 WISUN_AUTO_START 后、边界路由器无需主机命令即可启动 Wi-SUN 堆栈。 不过、情况确实如此 而不会改变核心架构 示例的说明。

    从 SDK 文档和实际测试来看、边界路由器示例基本上是为其设计的 NCP 模式 、其中传入的网络数据包主要通过 NCP 接口处理并转发到主机。

    在本例中:

    • 我们未使用 PC/主机(无 pyspinel)
    • 我们需要直接在 BR 器件(SoC 侧)上处理 UDP 数据包、并将这些数据包转发到 STM32
    • 我们添加了一个自定义 UDP 套接字 (br_event_trace.c) 来接收应用数据

    我们观察到:

    • 传感器节点成功发送 UDP 数据包(使用库存 ns_br + pyspinel 进行验证)
    • 独立运行时(即使使用 WISUN_AUTO_START)、BR 上的自定义 UDP 套接字回调 从不触发

    这表明:

    • 传入的 UDP 数据包仍由 NCP/堆栈路径在内部处理
    • 它们是 未到达应用级套接字回调 软件示例

    因此、虽然 WISUN_AUTO_START 无需使用主机命令 (ifconfig up、wisunstack start)、但它不会将边界路由器转换为真正的独立应用处理器来进行 UDP 有效载荷处理。

     

    是否有支持的方法:

    • 以完全嵌入式 (SoC) 模式运行边界路由器
    • 直接通过接收应用 UDP 数据包 socket_recvfrom()
    • 绕过或与 NCP 数据路径共存

    更适当的做法是:

    • 严格将 BR 视为 NCP
    • 在 STM32 上实现主机功能(而不是 PC/pyspinel)

     

    任何关于 UDP 数据包如何在 BR 内部路由(NCP 与应用程序套接字层)的说明都将非常有帮助。

    谢谢。

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

    尊敬的 Burk:

    是的、边界路由器从根本上说是 NCP。 我们有一些用于测试的标志。 明天测试一些配置时、我将返回给您。 但要回答您的初始问题、此默认示例不存在、需要进行一些修改。

    此致、

    Daniel

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

    尊敬的 Burk:

    这是可行的、但需要进行一些修改:

    您的边界路由器项目 (ns_br)。  依次打开“Properties"->"Tools"->"ARM Compiler"->"Predefined“ Compiler"->"Predefined Symbols"“ Symbols"</s>“ ““““ 

    • 删除 WISUN_NCP_ENABLE  
    • 添加 WISUN_TEST_MPL_embedded

    将文件替换为所附文件。

    e2e.ti.com/.../ns_5F00_br_5F00_udp.zip

    • application.c:source/ti/ti_wisunfan/apps/border_router_nanostack_tirf
      • 将会注释掉按钮 init、不需要它们、并且会导致编译错误、因为未定义 btn_interrupt_handler。
      •  删除 WISUN_NCP_ENABLE 后、不会编译函数 udpSocketSetup 和 SOCKET_CALLBACK。 因此移动了一些#ifdef 行。
      • UDP 端口设置为 1234、以便与 ns_CoAP 发送到的端口相匹配
    • borderrouter_ws.c:source/ti/ti_wisunfan/apps/border_router_nanostack_tirf
      • 如果 Wi-SUN 接口已完全打开、则会再次调用 udpSocketSetup。
    • application.h:source/ti/ti_wisunfan/apps/common/include

    在 ns_CoAP 节点上、 移除 CoAP_SERVICE_ENABLE 并使用 LaunchPad 上的 BTN1 启动 UDP 传输。

    路由器节点

    边界路由器

    此致、

    Daniel

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

    我们遵循您在边界路由器方面的说明:

    • 已删除 WISUN_NCP_ENABLE
    • 添加了 WISUN_TEST_MPL_EMBEDDED
    • 已更换:
      • application.c
      • borderrouter_ws.c
      • application.h
    • UDP 端口设置为 1234

    现在、我们要在上执行相同操作 节点侧 () ns_coap_node

    公式 在节点上使用 UDP 而不是 CoAP 清理测试设置 我们到底应该修改什么?

    具体来说:

    1. 删除的内容是否COAP_SERVICE_ENABLE足够?
    2. 我们application.c还需要在节点端修改吗?
    3. 我们是否应该:
      • 保持或移除按钮处理(BTN1 触发器)?
      • 替换coap_service_request_send()socket_sendto()?
    4. 其中是 推荐的地方 收件人:
      • 创建 UDP 套接字
      • 发送周期性数据

    我们希望在以下情况下进行最低限度的有效测试:

    • 节点定期发送 UDP 数据包(无 CoAP)
    • 边界路由器通过 UDP 接收这些消息
    • 没有 CoAP 相关性
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Burc

    1. 是的、只需删除COAP_SERVICE_ENABLE, 、编译与 CoAP 相关的代码、
    2. 无需修改 application.c
    3. 由您决定是应用程序开发人员。 当不使用   CoAP_service_enable 时、 BTN1 用于触发广播、而 BTN2 用于触发单播。 如果删除它们、您需要找到另一种方法来执行此操作。
      1. 不需要替换  CoAP_SERVICE_REQUEST_SEND (),它被编译出来
    4. mainThread 内已设置 UDP 套接字
      1. bcast_send 定期发送消息。

    你可能需要仔细检查 UDP 端口,不确定我是否做了任何更改,我忘记 在这里发帖

    此致、

    Daniel

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

    尊敬的 Daniel:

    它现在可以正常工作。  
    感谢您的支持。