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.

[参考译文] MSP432E401Y:NDK 存储器设置

Guru**** 2578945 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/996795/msp432e401y-ndk-memory-settings

器件型号:MSP432E401Y
Thread 中讨论的其他器件:SysConfig

您好!

我需要设置 simplelink_msp432e4_sdk_4_20_00_12项目、以供大量客户端和服务器网络使用。  我有可用的 SDRAM、并已将链接器配置为将其用作堆。  Web 浏览器将有许多 cgi 调用返回到 Web 服务器。  还有另外8到9个客户端/服务器线程正在运行。  我想、由于套接字不会立即关闭、因此它们正在使用分配给堆栈的小内存。  

此外、当网络调用运行到看起来是内存问题时、它会关闭其他非网络任务。  是否有办法防止 NDK 引起 TI-RTOS 和其他任务的问题?

此致、

-Mike

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

    您好!

    我假设由于工作负载过重而导致线程被阻塞。 我将与 NDK 设计团队核实解决方案、并与您联系。  

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

    尊敬的 Mike:

    我将在离线讨论后提交一份摘要。 如果您有任何其他意见或问题、请告知我们。

    此致、

    Luis R


    TI 的建议:

    首先、~指南文档实际上非常好(μ C/simplelink_msp432e4_sdk_4_20_00_12/docs/NDK/ug/ug_NDK/03_network-application-development .html)。

    了解发生哪种关断非常重要。

     

    “正常”关机顺序涉及两个参与者。 其中一位学员提出关闭请求(FIN)、另一位学员确认该请求(FIN ACK)。 请求关闭的一方确实需要保留分配给套接字连接的内存、直到 FIN ACK 成功进入、或者某个超时(可能是一分钟或更长时间)过期、表明发生了错误。

     

    通常会由于某种通信超时而导致非“正常”关机。 TCP keepalive 数据包丢失、或发生其他一些错误。 在这种情况下,堆栈需要将分配给套接字连接的内存保持一段时间,以便连接的另一端可以恢复并尝试“正常”关机。 通常情况下,不会发生这种情况,因为另一端通常处于电源循环的中间,网络电缆损坏或其他一些严重的基础架构问题。

     

    虽然堆大小不可能是问题(大量 SRAM 内存可用),但对于所面临的“内存问题”,发布不清楚。 NDK 提供了许多用于调优的旋钮。 SysConfig 在提取这些内容以方便用户配置方面做得很好。 我将查看以下选项、并考虑增加其中的大多数选项:

     

    1. NDK 堆栈->最大套接字数
    2. NDK Stack -> TCP 和 UDP 缓冲器
    3. NDK 堆栈-> PBM 缓冲器

     

    另外、最好确保每个 NDK 创建的线程具有足够的堆栈大小(ROV 任务视图可以提供见解)。 与其他应用程序任务优先级进行比较时,可能还需要评估任务优先级指派,但可能不需要在该处进行任何更改。

     

    1. NDK 堆栈-> NDK 创建的线程

     

    我们是否知道应用程序正在使用 NDK DNS 服务器、DHCP 服务器、NAT 或 Telnet 服务器? 其中一些还具有容量调整参数。


    Mike 的反馈:

    幸运的是、我们拥有支持 NDK 的 ROV、这是一个非常有用的工具。  我在测试中发现、当其中一个 NDK -> Memory blocksFree 下降到0时、就会出现问题。  我根据显示的值跟踪了 SysConfig 中的存储器到 NDK 堆栈->存储器管理缓冲区。  此后、我将其从3072增加到51200。  此后、我还没有遇到这个问题。  

     

    你能问他们对我刚才所说的话有什么看法吗?  我还注意到、第6页是不适用的  我认为这是因为现在有很多块。


    TI 的回应:

    是的、这正是预期会引起问题的事情。

    很高兴您能向正确的方向前进、请随时向我们提供最新信息。