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.

[参考译文] CCS/AM3359:NDK UDP 关断

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/827777/ccs-am3359-ndk-udp-shutdown

器件型号:AM3359
Thread 中讨论的其他器件:SYSBIOS

工具/软件:Code Composer Studio

我在 BBBlack 上运行了一个 UDP 程序、它可以传输和接收数据、但是、如果数据包停止几分钟、然后重新启动则需要~ 10秒左右才能开始传输数据包或向主机发出停机错误代码。 UDP 没有保持活动时间、为什么堆栈看起来会关断?

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

    您好!

    请阐明 PRSDK、SYSBIOS、NDK 版本? 您是否试用了最新版本? 您运行的测试应用程序是什么? 如何使数据包停止几分钟? 电缆? 需要您提供详细信息以供分析。

    此致、Eric

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

    尊敬的 Eric:

    我 正在使用最新版本的 CCS 9.1、NDK 3.60.013、 BIOS 6.75.2、PDK 1.0.15... 我有一个基于 Windows 的程序、我编写该程序将数据包发送到 BBBlack 并将其回传。 我可以停止数据传输、等待 X 秒、然后重新启动。 重新启动后、我观察 Wireshark 并查看 BBBlack 响应时间或创建 NDK_EHOSTDOWN 错误代码。 未断开电缆。

    测试应用基于 BBBAm335x 项目。 我添加了代码来创建套接字、 将本地地址闪烁、然后连接到远程计算机。

    UDP_Config()

       local_addr.sin 系列= AF_iNet;
       local_addr.sin_addr.s_addr = inet_addr ("10.10.0.155");
       local_addr.sin 端口= NDK_htons (16000);

       remote_addr.sin 系列= AF_iNet;
       remote_addr.sin addr.s_addr = inet_addr ("10.10.0.106");
       remote_addr.sin 端口= NDK_htons (1000);

        fdOpenSession( TaskSele());
        S = NDK_socket (AF_iNet、SOCK_DGRAM、IPPROTO_UDP);

       如果(s =INVALID_SOCKET)
           NIMU_log ("套接字%d d\n"、fdError());

       //本地地址
       ERR = NDK_BIND (s、(struct sockadr *)&local_addr、sizeof (local_addr));

       if (err<0)
            NIMU_log ("绑定=%d\n"、fdError());

       //远程地址
        ERR = NDK_CONNECT (s、(struct socaddr *)&REMOTE ADDR、sizeof (REMOT_addr));
        UDP_SendMsg ((char *)&Txbuffer、255);

       fdCloseSession (TaskSele));

    任务检查 ND_REcv、如果有数据、则将其发回。 是否需要设置套接字选项?

    感谢您的回复

    Rob

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

    很抱歉、忘记添加接收代码

           fdOpenSession( TaskSele());
           数据= NDK_recv (s、(char *)&Rxbuffer、1500、MSG_DONTWAIT);
           如果(数据> 0)
           {
               //Nimu_log ("\n 接收到的数据%d"、数据);
               UDP_SendMsg ((char *)&Rxbuffer、data);
               memset (&Rxbuffer、0、sizeof (Rxbuffer));
           }
           fdCloseSession (TaskSele));

    我的理解是 fdOpenSession 和 fdCloseSession 必须在套接字激活完成之前进行、这似乎是这样 的-对吗?

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

    您好!

    感谢您提供信息。 根据我所知、如果我对 EVM 执行 ICMP ping 操作、它会做出响应。 然后、我等待几分钟、然后再次执行 ping 操作、我立即得到了 ping 响应。 我不必等待几秒钟。 UDP 套接字的区别是什么?

    此致、Eric

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

    您好!

    甚至连 ping 都挂起、然后又回到了... 非常奇怪。

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

    它必须是具有套接字初始化的内容。 如果我只是使用/t 执行 ping 操作、它会在大约100次 ping 操作后消失。 我将使用 cfg 来配置堆栈

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

    您好!

    您可以测试 ping 的 CCS 工程已存在、我已经尝试了20分钟以上、ping 从未失败。 请注意、我在 AM335x GP EVM 上使用了 NIMU_BasicExample_evmAM335x_armExampleproject、如果您使用 BBB、请尝试 NIMU_BasicExample_bbbAM335x_armExampleproject。

    此致、Eric

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

    您好!

    这是我将代码建立在的示例。 大约300次 ping 后、BBBlack 停止响应 ping。 堆栈崩溃了吗? 我将重建库并查看它是否有帮助。  

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

    一个想法、自动否定会导致这种情况吗?  

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

    问题似乎可以通过稍微重写 UDP 任务来解决。

    谢谢 Eric!

x 出现错误。请重试或与管理员联系。