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.

[参考译文] RTOS/EK-TM4C129EXL:NDK 堆栈-注册

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/709182/rtos-ek-tm4c129exl-ndk-stack--reg

器件型号:EK-TM4C129EXL

工具/软件:TI-RTOS

我正在使用网络开发套件。 我需要从客户端接收数据。 是否存在使用诸如 NDK_CONNECT()、NDK_recv()等 API 来接收数据的任何序列。  我需要在 tcpHandler.c 中编辑哪些内容才能从客户端接收数据。

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

    您是否有理由不使用 BSD 套接字(NDK 支持该套接字)。 TCP Echo 使用这些。 如果要使用 NDK 特定 API、基本上只需将 BSD 调用替换为对应的 NDK 即可。 例如、如果您查看 connect 的源代码、则只需调用 NDK 1:

    静态内联 int connect (socket s、psa pname、int len)

    返回 NDK_CONNECT (s、pname、len);


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

    您好 Todd、

       我也可以使用 BSD 套接字。 我能够从客户端获取数据、但我不知道如何读取该数据。 参考 NDK 手册、我 找到了一个 API

    int ndk_recv (socket s、void *pbuf、int size、int flags); 

        我不知道在代码中将此 API 包含在何处以读取数据。 我是否需要创建一个单独的任务(我指的是一个单独的函数)来读取数据????  还是 在 代码的 tcpWorker 部分中包含 NDK_recv() API?

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

    您好、Naveen、

    您是否能够运行 tcpEcho 示例?

    [引用 USER="Naveen Kumar29"]是否有使用诸如 NDK_CONNECT ()、NDK_recv ()等 API 来接收数据的任何序列[/引用]

    是的、根据您的代码是客户端还是服务器、有一个特定的顺序来调用套接字 API。

    服务器通常会调用 bind ()、listen ()和 accept (),以等待连接,然后才能发送()和 recv ()数据。

    客户端将调用 connect()连接到服务器,然后才能发送()和 recv()数据。

    我通过 Google 搜索找到的下图可能会对您有所帮助。 请注意,您可以用图中的 API 名称替换它们的 NDK 等效名称(例如,图中的"connect()"等效于"NDK_connect()"等等)。

    [引用 user="Naveen Kumar29"]我需要在 tcpHandler.c 中编辑哪些内容才能从客户端接收数据。

    TCP 回显示例是 TCP 服务器。 它有一个用作客户端的配套应用程序、可从 PC 运行(有关指导、请参阅 tcpEcho 示例中的自述文件)。

    如果您按照 tcpEcho 示例的代码执行操作、首先从 tcpHandler 任务开始、然后再按照 tcpWorker 任务开始、则应查看其套接字 API 调用如何映射到上图的服务器部分。

    [引用用户="Naveen Kumar29">我可以从客户那里获取数据,但我不知道如何读取这些数据。 参考 NDK 手册、我 找到了一个 API

    1
    intNDK_recv(SOCKET s, void*pbuf, intsize, intflags);

    [/报价]

    是的、NDK_recv()函数用于从套接字接收(读取)数据。 您必须为该 API 提供一个缓冲区来复制被读取的数据(这是 API 的 pbuf 参数)。

    一旦 NDK_recv()函数返回(成功),您应该能够访问在 pbuf 缓冲区内读取的数据。

    [引用用户="Naveen Kumar29"]

        我不知道在代码中将此 API 包含在何处以读取数据。 我是否需要创建一个单独的任务(我指的是一个单独的函数)来读取数据????  还是 在 代码的 tcpWorker 部分中包含 NDK_recv() API?

    [/报价]

    在 tcpEcho 示例中,可在 tcpWorker 任务函数中找到 recv()调用。

    如果您想大致确定调用 recv()的位置/时间,则上图应该可以帮助您解决这一问题。

    Steve

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

    Naveen、

    我可以将其标记为已解决吗?

    Todd

    [更新:标记为 TI 认为已解决、因为原始海报8/3没有回复]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Todd、
    我目前正在处理应用程序的 SPI 和 DMA 部分。 再次返回 TCP/IP 部分需要三周时间。 从现在开始锁定此线程。