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.
工具/软件: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!