您好!
我当前正在尝试在 引导加载程序的裸机环境中、使以太网通信在 TMS570和 DP83822HFRHBR 之间正常工作。 目前、沟通似乎在2-10分钟内从任何地方开始有效、然后在该点之后中断和失败。 我已经将我的项目基于 TI 发布的以下示例项目: git.ti.com/.../LwIP
我按照上面示例中完成的相同过程初始化 EMAC/MDIO 模块以及接收以太网数据。 在 FreeRTOS 环境中、我也有相同的代码可以正常运行、而 TCP 服务器不会发生故障、唯一的区别是以太网数据包的处理是在任务中完成、而不是在中断本身中完成。
我看到以下行为:
- C0_RX_PULSE 中断在任意点之前表现正常
- C0_RX_PULSE 中断不再被触发
这是我看到的行为的逻辑分析仪捕捉。 相关信号为"EthRxInt"&"3V3"。 "EthRxInt"是指我在进入和退出时在 C0_RX_PULSE 中断内设置的 GPIO 引脚。 "3V3"线路是提供给 DP83822HFRHBR 的电源轨、并且处于稳定状态。

为了测试我在 TMS570上运行的 TCP 服务器的稳定性、我只是将 ping 发送到该器件、并查看该服务器是否对 ping 做出响应。 这些 ping 触发 C0_RX_PULSE 中断、并在中断中执行 Ping 的处理。 如果发生故障、则相关 EMAC/MDIO 寄存器的状态为:
RXINTMASKS:

RXUNICASTSET / RXMBPENABLE:

RXUNICASTCLEAR:

C0RXEN:

中断标志:

MDIO CLK @ 1MHz:


如果您对我看到此行为的原因有任何意见、或者如果您需要我向您提供更多有关我正在运行的代码或在出现故障时注册状态的信息、请告诉我。 感谢您提供的任何帮助。
谢谢。
Thomas Hickey