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.

[参考译文] AM263P4-Q1:TCP/UDP 通信 TMDSCNCD263PX 评估板

Guru**** 2595800 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1451745/am263p4-q1-tcp-udp-communication-tmdscncd263px-evaluation-board

器件型号:AM263P4-Q1

工具与软件:

您好!

任何人都可以帮助解决以下问题。 在尝试建立 TCP/UDP 连接时、我们可以建立连接、但无法接收数据。 我们使用的是来自 Resource Explorer 的示例程序。

1.

TCP 测试: 运行 TCP 客户端示例时、我们可以向服务器接收数据。但是、在从服务器接收数据时、我们无法访问接收缓冲区:

 

struct netbuf * rxBbuf = NULL;

 

(我们找不到"netbuf"的结构、因此无法通过 TCP 访问"接收缓冲区数据")

2.

UDP 测试:

正在服务器端接收 UDP 数据、但无法从服务器接收数据。

在同一 TCP 客户端应用中、要为 UDP 套接字打开、发送/接收数据和关闭套接字调用哪些函数? 我们需要运行 UDP 和 TCP 以便一次在两个套接字上发送/接收数据。

 

在 UDP 客户端的代码部分:

 我们没有将数据发送到" gRxDataBuff "从服务器发送:

          RET = lwip_recvfrom (sock、gRxDataBuff、APP_SOCKET_MAX_RX_DATA_LEN、0、pAddr、 长度(&L);

      gRxDataBuff[ret]='\0';

      EnetAppUtils_print ("来自主机的消息:%s\r\n"、gRxDataBuff);

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

    尊敬的 Srujana:

    您可以回答以下问题来帮助我吗:

    1.我假设您的 AM263Px 器件有一个提及 PROC# E2版本的标签。 您可以查看电路板上 SW-14、SW-15、SW-16开关的状态吗? 本示例正常工作的预期状态分别为 OFF、OFF 和 OFF。

    2.您处于何种引导模式? 我建议将 SBL Null 刷写到器件并在 OSPI 引导模式下运行。 这只是为了确保正确初始化外设时钟。 有时 GEL 脚本可能会出现问题、从而导致时钟配置不正确以及无法接收/发送以太网数据包。

    3.当您运行到 DHCP 模式时、是否得到 IP 地址、或者应用程序卡在"等待网络"循环中。

    4.运行示例(静态或 DHCP、任意模式)时、是否能够 ping 通 EVM?

    5.您能否查看 CCS 表达式窗口中的 lwip_stats。 在尝试启动通信后停止内核。 然后转到"Expressions"窗口并键入"lwip_stats"、查看结构体的不同内容。 如果 CPSW 有问题、这些统计数据应指示数字> 0。  

    6.您是否也可以粘贴表达式"( CSL_xGE_cpswRegs  ) 0x52820000"并将其展开?  通过这些统计数据、您不仅可以查看 CPSW 的配置、还可以查看端口行为、发送/接收/丢弃的数据包数量等 展开 P[0]数组和 P[N]数组、以查看发送/接收的帧数。

    7.如果以上所有情况都正常,请在主机 PC 上检查是否有防火墙阻止数据包。

    我的怀疑主要针对1点和2点。 请告诉我上述问题的答案、以便我们可以对此进行进一步的研究。

    此致、
    Shaunak

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

    您好!

    请查看以下答案

    1. 是,标签是 PROC159E2.SW14 -关, SW15-OFF , SW-16关。

    2. 开发引导模式

    3.是的,我们得到了 IP 地址。

    4.已启用 DHCP 且正在检测 EVM IP、且 Ping 工作正常。

     在服务器端:正在接收数据。

    加密的时间 "这是来自服务器的消息"、 以下代码部分应 执行并 在序列窗口中显示消息:

     

    文件名:app_tcpclient.c

    函数: static void AppTcp_simpleclient (void * pArg):

    添加的代码:

            if (netconn_recv (PCONN、&rxBbuf)== ERR_OK)

            {

              

              DebugP_log ("已成功接收数据包%d\r\n"、i+1);

              // AVS 添加了以下行

              DebugP_log ("Received Packet is:%s\r\n"、rxBbuf);

              netbuf_delete (rxBbuf);

            }

     为什么我们没有收到消息" "这是来自服务器的消息" 在中 "rxBbuf" 但正在成功接收此消息。  

    我们无法在接收到的数据包 IS 之后看到消息           .  显示为空。

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

    尊敬的 Srujana:

    • 从 SDK 运行 enet_cpsw_udpdclient 示例时、我可以看到 AM263Px 器件在主机 PC 上发送的消息、也可以看到主机发送至 AM263Px 器件的消息。
      您是否尝试过运行独立的 UDP 客户端应用?  
    • 当您说要在同一个项目中同时实现 TCP 和 UDP 通信时、您想要使用哪些 LwIP API? 是 Netconn API 还是套接字 API? 我看到你调用 lwip_recvfrom()函数、它是套接字 API 函数、而对于 TCP、你调用 netconn_recv、它是 NetConn API。
      我 建议您使用相同的 API 模式
    • 假设您要使用 NetConn API 实现 TCP 和 UDP 连接、则需要将两个唯一的 netconn 结构传递给  netconn_new() 函数、然后调用  netconn_connect() API 具有唯一的 IP 地址、然后处理  netconn_write()  或者  netconn_recv 正确配置。 请参阅示例"enet_cpsw_tcpclient"以了解代码流和 API 调用。

    • 有些 Netconn API 专门用于 TCP 和 UDP。 请访问: www.nongnu.org/.../group__netconn.html

    此致、
    Shaunak

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

    尊敬的 Srujana:

    请提交新主题、因为主题不同。 还将有另一位专家可以帮助进行 MCAN。

    此致、

    Shaunak