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.

[FAQ] [参考译文] [常见问题解答] LwIP-AM263X:如何在 MCU-PLUS-SDK 示例中增加 UDP-TCP 连接的数量?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1408273/faq-mcu-plus-sdk-am263x-how-to-increase-number-of-udp-or-tcp-connections-in-lwip-examples

器件型号:MCU-PLUS-SDK AM263X

工具与软件:

大家好、团队成员:

我正在使用 am263x MCU_PLUS_SDK 中提供的 lwip 示例、并尝试将多个 UDP 客户端连接到 UDP 服务器。 我只能连接4个套接字、在创建套接字的其余部分、我收到错误消息、表示套接字创建失败。 是内存限制吗? 有人能帮我启用更多套接字吗?

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

    注意:本指南适用于 MCU_PLUS_SDK 中的所有器件。 为了便于参考、常见问题解答中使用了 AM263x。 要将其用于其他器件、只需将 AM263x 基准替换为您选择的器件即可。

    您好!

    LwIP 协议栈和 am26x 器件能够支持大量的同时 TCP/UDP 连接。 开箱即用 LwIP 协议栈配置为同时具有3个原始连接、4个 UDP 连接和5个 TCP 活动连接。 这是为了避免 LwIP 协议栈 bloating。 例如、 如果您需要总共20个活动连接、请按照以下步骤操作:

    1. 在您的 SDK 中、导航至:  "\mcu_plus_sdk\source\networking\lwip\lwip-config\am263x\enet\lwipopts.h  "
    2. 对于原始 API (本机 LwIP API)、宏  MEMP_NUM_RAW_PCB、  范围  默认为3。  要增加支持的原始连接数、请增大此值。
    3. 对于 UDP、是宏  MEMP_NUM_UDP_PCB 、设置为  默认为4。  这意味着  UDP 协议控制块的数量为4。 每个活动 UDP"连接"需要一个。  假设您需要20个活动 UDP 连接、然后您必须将其增加到20个。
    4. 对于 TCP、是宏  MEMP_NUM_TCP_PCB、  范围  默认为5。  它表示同时处于活动状态的 TCP 连接的数量。  偏置值为5。  假设您需要20个活动 TCP 连接、然后您必须将其增加到20个。
      如果要增加 TCP 侦听连接的数量、请增大的值  MEMP_NUM_TCP PCB_LISTEN。
    5. 如果您的应用从静态存储器发出大量数据、则还需要增加数据  MEM_NUM_PBUF  电流。
    6. 如果需要更多内存池、还需要增加中的内存池分配  "\mcu_plus_sdk\source\networking\lwip\lwip-config\am263x\enet\lwippools.h  "。 此处增加1568元素大小的元素数量。

    无法从 CCS 重新编译 LwIP 库。 执行以下步骤重新编译 LwIP 堆栈:

    1. 在顶级 MCU_PLUS_SDK 文件夹中、运行以下命令。 (确保在链接到 CCS 工程的 SDK 中运行这些步骤)。  

      Fullscreen
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # Add PROFILE=debug to build for debug
      # replace nortos with freertos if you want to build freertos based lwip libs
      # CLEAN
      gmake -sj -f makefile.am263x lwipif-cpsw-nortos_r5f.ti-arm-clang_clean
      gmake -sj -f makefile.am263x lwip-nortos_r5f.ti-arm-clang_clean
      gmake -sj -f makefile.am263x lwip-contrib-nortos_r5f.ti-arm-clang_clean
      # BUILD
      gmake -sj -f makefile.am263x lwipif-cpsw-nortos_r5f.ti-arm-clang
      gmake -sj -f makefile.am263x lwip-nortos_r5f.ti-arm-clang
      gmake -sj -f makefile.am263x lwip-contrib-nortos_r5f.ti-arm-clang
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2. Re -构建您的应用程序、并确保更新后的库链接到应用程序。
    3. 尝试建立多个连接。 现在、您应该能够为 UDP 和 TCP 打开多个同步套接字。

    其他参考资料:

    此致、
    Shaunak