我有一个基于 Xilinx Zynq 的开发板,上面运行着 FreeRTOS。它的 EMAC 连接到铜/光纤(非托管)交换机(安装在板上)。我在套接字模式下使用 lwIP 2.02。
板上运行的应用程序用作 TCP 客户端。为了监控连接,我使用了 lwIP 的 TCP keep-alive 特性。我配置了 3 次重试,间隔为 2 秒。当连接启动并运行并且没有流量时,我在日志中看到保持活动数据包(几乎)每 2 秒发送一次。但是,当我断开光纤电缆时(回想一下,它在交换机的另一端,并没有直接连接到 EMAC),每 10 秒发送一次保持活动数据包,因此我能够接收到仅在大约 30 秒后通知有关我的应用程序代码中的断开连接。作为替代方案,我尝试查询 EMAC 的链接状态,但它总是报告(这是有道理的,因为它总是连接到交换机)。有没有人遇到过这样的问题?
非常感谢,亚历克斯