Other Parts Discussed in Thread: AM6548, DP83867IR
器件型号: AM6548
主题中讨论的其他器件: DP83867IR
我有一个奇怪的场景、我希望有一些输入。 我们有基于 AM6548 的定制电路板、该电路板设置为网络监听器、作为其功能的一部分。 它正在使用 08.06.00.47 Linux SDK。 所有 PRU 实例都在电路板上进行了拆分、所有实例都使用 DP83867IR PHY 通过 RGMII 连接到 PRU。 所有 PRU 都加载了默认的 PRU 以太网固件 (SDK 08.06.00.47)、唯一的修改是 PRU 以太网驱动程序已被修改、以初始化正确的寄存器设置、使得每个 PRU 自动转发流量(因此 PRU0 自动转发到 PRU1,反之亦然 — 通过寄存器 0x0Bx32000、0x0Bx32010、0x0Bx32004、0x0Bx32014 和每个 PRU 实例设置)。 只要一切都已启动、这就可以正常工作、然后我插入以太网电缆。 但是、如果我在启动时插入了以太网电缆、一旦加载了 PHY 驱动程序并启动了 PRU 固件、某种东西必须进入奇怪的状态、一个通道永远不会自动协商到 100Mb 连接、它就在那里偶尔会使 LED 一直闪烁。 另一个通道最终降至 10Mb、有时仅位于该通道、有时也会闪烁 LED。 此时、如果我拔下并重新插入电缆、则无法恢复。
恢复的唯一方法是重新启动 PRU 固件(关闭接口,然后再次进行备份 — IP LINK set ethx down,然后再打开)。 这将恢复一切、网络连接稳定、自动转发正常工作、我可以拔下并重新插入以太网电缆、每次都能正常工作。 这种恢复在 100%的时间内工作。 对于我在这里进行的测试、自动转发的以太网网络只是从我的笔记本电脑连接到我可以远程连接到的另一台台式机。
此处有两个有趣的数据点:
- 如果我的 EtherCAT 网络的 PRU 自动转发了 1ms 周期时间、那么我永远不会遇到此问题。 在启动时、它每次都成功地自动转发、并且永远不会锁定(至少在我的测试中-可能存在一个边缘情况,它仍然可以锁定)。 这与以太网网络形成鲜明对比、以太网网络在我的测试中 100%锁定。
- 如果我执行软重启(就像在控制台中键入 reboot 命令一样)、则不会发生锁定。 它仅在进行下电上电时才会发生。
不知道该怎么做。 当然、我可以通过编写 ip link set ethx down 脚本以及在启动时运行的 up 命令来解决这一问题、但这很奇怪。 我宁愿解决根本原因、但不完全确定从哪里开始。 对这里可能发生的事情有什么想法吗?