您好!
我的客户正在使用 TCP 客户端从其他服务器接收数据。 将有一个30KB 数据的伺服包从服务器发送到 AM2732。 客户发现 TCP 客户端将挂起。 出现问题时、ping 会失败。
您对此问题有何评论?
谢谢。
克里斯
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.
尊敬的 Chris 和 Gmsy:
很抱歉响应延迟、 增加客户端或服务器容量的步骤如下:
1)在 mcu_plus_sdk/source/networking/lwip/lwip-config/am273x/lwippools.h、 增加元素数量、与所附的屏幕截图类似:

2)可能还必须相应地修改 linker.cmd 中的内存区域以适应 LWIP_POOL 中元素数量的增加
3) 3)重新编译库、重新编译示例、该操作应该可以正常运行。
此致、
Shaunak
尊敬的 Gmsy:
即使将实例数增加到了80、但如果没有可用于分配 Pbuf 的内存、则无法工作、我想情况就是这样、为了更深入地研究该问题、您可能希望从以下位置启用 LWIP 调试日志: source/networking/lwip/lwip-config/am273x/lwipopts.h
然后、重新编译库和工程、调试日志将帮助您识别问题。
注意:通过 CCS 重建项目不会重建 lwip 库。
此致、
~Shaunak
大家好、Gymsy/Chris、
您能否尝试从以下位置启用 LWIP_debug 日志? 源/网络/lwip/ lwip-config/am273x/ lwippts.h 如果没有错误日志、很难找到问题的根本原因。
由于本例中的内存限制、我们在接收数据包时很可能会内存不足、因此 NETBUF 将为 NULL 指针、 这可能会产生与内存访问相关的错误、进而关闭连接(这解释了 ping 不起作用的原因)。
此致、
Shaunak
Shaunak,
我想启用调试日志、但头文件中有很多这样的日志。 我尝试了以下设置、但没有看到任何新打印。 如果我遗漏了任何内容或需要启用所有内容、您会提供建议吗?
#define LWIP_DEBUG 1
#ifdef LWIP_debug
#define LWIP_DBG_MIN_LEVEL 0
#define PPP_DEBUG LWIP_DBG_OFF
#define MEM_DEBUG LWIP_DBG_ON
#define MEMP_DEBUG LWIP_DBG_ON
#define PBUF_DEBUG LWIP_DBG_ON
#define API_LIB_DEBUG LWIP_DBG_OFF
#define API_MSG_DEBUG LWIP_DBG_OFF
#define TCPIP_DEBUG LWIP_DBG_OFF
#define NETIF_DEBUG LWIP_DBG_OFF
#define Socket _调试 LWIP_DBG_OFF
#define DNS_DEBUG LWIP_DBG_OFF
#define AUTOIP_DEBUG LWIP_DBG_OFF
#define DHCP_DEBUG LWIP_DBG_OFF
#define IP_DEBUG LWIP_DBG_OFF
#define IP_REASH_DEBUG LWIP_DBG_OFF
#define ICMP_DEBUG LWIP_DBG_OFF
#define IGMP_DEBUG LWIP_DBG_OFF
#define UDP_DEBUG LWIP_DBG_OFF
#define tcp_debug LWIP_DBG_on
#define tcp_input_debug LWIP_DBG_ON
#define tcp_output_debug LWIP_DBG_off
#define tcp_rto_debug LWIP_DBG_OFF
#define tcp_CWND_debug LWIP_DBG_off
#define tcp_WND_debug LWIP_DBG_off
#define tcp_FR_debug LWIP_DBG_off
#define tcp_QLEN_debug LWIP_DBG_off
#define tcp_RST_debug LWIP_DBG_off
#endif
#define LWIP_DBG_TYPE_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_Fresh |LWIP_DBG_HALT)
我在 AM2732EVM 上重现了客户的问题(mcu_plus_sdk_am273x_08_04_00_17)、并看到 发生问题时 netbuf_data 调用返回的长度异常(太大)。 您对需要启用哪一个调试以进行进一步检查有更多看法吗?
netbuf_data (buf、&data、&len);
printf ("len=%d\n"、len);
长度=1460
长度=1460
长度=1460
长度=1460
长度=1460
长度=1460
长度=1460
长度=1460
长度=28005
谢谢。
克里斯
Chris、您好!
可以使用上述命令并构建库、请确保您也重新编译示例。 上述异常长度似乎是由于一些损坏的数据包,这似乎也是一些内存限制问题,因为标准 netbuf 大小将只有1460。
1.客户可以使用 TCM 存储器还是 SBL 存储器,因为他们有存储器限制。
2.另外,在打印 netbuf 的长度之前,您还能检查一下 netbuf 是否为 NULL。
此致、
Shaunak
Shaunak,
我使用了不同的命令、该命令将 L3用于 LWIP 缓冲器。 请在下方查看。
e2e.ti.com/.../4645.linker.cmd
我更改了 lwippools.h 更改为 按照您的建议增加元素数量。
我启用了所有调试日志、但看不到调试信息、但测试用例无法接收到任何 eth 包、然后被挂起。
我将尝试检查 netbuf 是否为 NULL。 我仍然需要您建议打开哪个调试信息。
谢谢。
克里斯