工具/软件:Linux
大家好、
(运行最新的 SDK 到目前为止的 ti-processor-sdk-linux-am57xx-evm-03.01.00.06)
我必须使用 UDP 来完成我的项目、我将在 AM5728 EVM 上测试 UDP 功能。
我的配置:AM5728通过千兆位电缆直接连接到 VM 中的主机 Linux PC。 我的主机应用程序以每秒500个数据包的速度(通过不同的端口)向 EVM 发送18KB 和13KB 数据包。 总传输速度为15.5Mb/s
接收器侧(EVM)在接收数据时没有问题、只是当用户输入(触摸屏、键盘、鼠标等)时、我会看到一个即时丢包。
我还看到少量的丢包、甚至只是启动"TOP"来监控 CPU 使用情况。 每百万个数据包中、它会丢弃80-100个数据包。
在没有任何用户输入或任何其他应用程序运行的情况下、UDP 每百万丢弃1或2个数据包。
问题:
1) 1) 是否预计会发生、因为用户输入事件可能需要在系统上花费太多时间?
2) 2) 如果我使用 UDP 中断/事件而不是 while ()、它会解决这个问题吗?
EVM 端的伪代码:
main()
{
while (1){
如果((recv_len_1 = recvfrom (s1、buf1、BUFLEN_1、0、(struct sockaddr *)&si_Other_1、&slen_1))=-1)
裸片("recvfrom ()");
其他
readbuffer1();
如果((recv_len_2 = recvfrom (s2、buf2、BUFLEN_2、0、(struct sockadr *)&si_Other_2、&slen_2))=-1)
裸片("recvfrom ()");
其他
readbuffer2();
}
空芯片(char * s)
{
镜;
退出(1);
}