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.

[参考译文] PROCESSOR-SDK-J784S4:Enet lwIP Shell:open <ip><port>导致 CPU 与活动服务器 100%加载

Guru**** 2442090 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1533894/processor-sdk-j784s4-enet-lwip-shell-open-ip-port-causes-cpu-load-100-with-active-server

部件号:PROCESSOR-SDK-J784S4


工具/软件:

尊敬的 TI 团队:

我将Enet lwIP App 使用 Enet LLD 和 LWIP 栈在 J784S4 上对进行测试。 电路板运行 SDK 版本: TI-PROCESSOR-SDK-09_02_00 。 我启用了交互式 lwIP shell 侦听端口 23 并接受如下命令:

lwipcfg.h

#define LWIP_SHELL_APP         1.

$ telnet  192.168.10.80 23

>打开 192.168.10.82 80
我正在尝试连接到在主机 PC 上运行的 HTTP 服务器 (192.168.10.82:80)、可从电路板访问确认(ping 成功、使用 python3 -m http.server 80 运行的服务器)

=========================
Enet lwIP 应用 — v 0.2
=========================
EnetBoard_setupPorts:找到 1 个端口配置、共 1 个
CPU 负载:51%
在启动 lwIP 时、本地接口 IP 启用了 DHCP
在 EEPROM 中未找到有效的 MAC 地址、因此回到静态地址
EnetMcm:MCU NAVSS 上的 CPSW_2G
PHY 0 处于活动状态
EnetPhy_bindDriver: PHY 0: OUI:00a0ef Model:03 Ver:00 <->“generic":“: OK
主机 MAC 地址:70:ff:76:1d:92:C1
[LWIPIF_LWIP]已成功初始化 Enet LLD netif
status_callback==up、本地接口 IP 为 0.0.0.0
Cpsw_handleLinkUp:端口 1:链路接通:1Gbps 全双工
MAC 端口 1:链路接通
链接回调==up
CPU 负载:1%
status_callback ==up、本地接口 IP 为 192.168.10.80
Enet lwIP 应用:添加了网络 IP 地址 I/F ti0:192.168.10.80
正在初始化应用程序
CPU 负载:1%
CPU 负载:1%
CPU 负载:1%
CPU 负载:1%
CPU 负载:1%
CPU 负载:13%
CPU 负载:100%
CPU 负载:100%

在  netconn_connect() 调用后、shell 应用程序似乎挂起。
Shell.c

静态 s8_t
com_open(结构命令*com)

... sendstr(“打开连接到“, com->conn );
netconn_write (com->conn、com->args[0]、strlen (com->args[0])、NETCONN_copy);
sendstr(“:", com->conn);“ com->conn);
netconn_write (com->conn、com->args[1]、strlen (com->args[1])、NETCONN_copy);
sendstr(NEWLINE, com->conn);

conns[i]= netconn_new (NETCONN_TCP);
如果 (conns[i]=NULL){
sendstr(“无法创建连接标识符(内存不足)。“NEWLINE、com->conn);
返回 ESUCCESS;
}
Err = netconn_connect (conns[i]、&ipaddr、port);<< 在此处挂起>>


观察结果:

-主板从服务器接收 SYN-ACK(通过确认)tcpdump

- CPU 负载峰值达到 100% open发出后立即发出。

-即使在设置LWIP_DEBUG和启用相关的调试宏后,也看不到调试日志。

问题:

-这是一个已知的问题与 netconn_connect () 或 netconn_write () 在阻止 shell 应用程序?

- 如何从 SDK 环境获取完整的 LWIP 调试日志?

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

    您好、

    如何从 SDK 环境中获取完整的 LWIP 调试日志?

    对于调试打印、还必须 通过将通信标志设置为来启用相关堆栈功能的调试标志 LWIP_DBG_ON。 这是在做吗?

    有关详细信息、请参阅 lwip 用户指南的这一部分。

    在阻止 shell 应用程序时、netconn_connect () 或 netconn_write () 是否存在已知问题?

    让我与开发团队核实一下。

    此致、
    Tanmay

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

    我已在此处启用调试日志。 但我看不到任何调试日志。

    ti-processor-sdk-09_02_00\ti\processor-sdk-rtos-j784s4-evm-09_02_00_05\pdk_j784s4_09_02_00_30\packages\ti\transport\lwip\lwip-port\config\lwipopts_common.h

    /*----- 调试标志----------- */
    #define LWIP_DEBUG (1)

    #define API_LIB_DEBUG (LWIP_DBG_ON)
    #define API_MSG_DEBUG (LWIP_DBG_ON)
    #define TCPIP_DEBUG (LWIP_DBG_ON)
    #define SOCKET_DEBUG (LWIP_DBG_ON)
    #define TCP_DEBUG (LWIP_DBG_ON)
    #define TCP_INPUT_DEBUG (LWIP_DBG_ON)
    #define TCP_OUTPUT_DEBUG (LWIP_DBG_ON)

    #define LWIP_DBG_TYPE_ON (LWIP_DBG_ON|LWIP_DBG_TRACK|LWIP_DBG_STATE|LWIP_DBG_Fresh|LWIP_DBG_HALT)

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

    我们lwip/arch.h通过更新以路由平台诊断来启用调试诊断EnetAppUtils_print
    密钥修改:

    #ifdef printf
    #undef printf
    #define printf EnetAppUtils_print
    #endif

    extern void EnetAppUtils_print (const char *pcString、...);
    #ifndef LWIP_PLATFORM_DIAG
    #define LWIP_PLATFORM_DIAG (x) 执行{EnetAppUtils_print x;}while (0)
    #include
    #include
    #endif


    #ifndef LWIP_PLATFORM_ASSERT
    #define LWIP_PLATFORM_ASSERT(x)\
    执行{\
    Volatile static int gEnetAssertWaitInLoop = 1;\
    EnetAppUtils_print(在%s\n“、\%d 行中的断言\“%s\"失败“失败
    x、__LINE__、__FILE__);\
    while (gEnetAssertWaitInLoop);\
    } while (0)
    #include
    #include
    #endif

    在运行时、我们会看到以下断言:

    状态:已建立
    tcp_slowtmr:处理活动 PCB
    tcp_slowtmr:处理活动 PCB
    TCPIP_thread:packet a2c9d580
    Ethernet_input:dest:70:ff:76:1d:92:C1、src:C8:53:09:0d:32:77、类型:800
    TCP 报头:
    ------------------------------------ +
    |      80     |   54911     |(src 端口、DEST 端口)
    ------------------------------------ +
    |          1013343510         |(序列号)
    ------------------------------------ +
    |          0000006540         |(ack no)
    ------------------------------------ +
    | 6 |  |010010|    65535    |(长度,标志 (SYN ACK
    )、WIN)
    ------------------------------------ +
    |   0x705e                | 0 |(chksum、urgp)
    ------------------------------------ +
    +--+--+--+--+--+--+--+--+--+--+-- tcp_input:标记 SYN ACK
    -++-++-++-++-++-++-++-++-++-+-+-+-+

    状态:SYN_SSENT
    tcp_parseopt:mss
    SYN-SEND:机架编号 6510 PCB->snd_nxt 6510、未开封 6509
    lwip_netconn_do_connected:was_blocking:1 op_complete_sem:0 conn->current_msg:a2c5b7d4
    在/CascadeCore/Firmware/SDKs/ti-processor-sdk-09_02_00/ti-processor-sdk-rtos-j784s4-evm-09_02_00_05/pdk_j784s4_09_02_00_30/packages/ti/transport/lwip/lwip-stack src /api/api_msg.c 的第 1335 行断言“阻止连接状态错误“失败
    CPU 负载:97%


    在 connect() 期间收到 SYN-ACK 后立即发生这种情况。

    请告知根本原因或所需的使用模式。

     

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

    您好、

    很抱歉耽误此问题。

    此问题是否仍被忽视?

    此致、
    Tanmay

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

    您好、

    问题仍然存在。 您是否能够重现此问题?

    此致

    安倍