我有一个 LS1021A 物联网芯片和一个基于该芯片的原型板。两者都使用引导加载程序。
它在物联网板上运行完美,但在我的板上,以太网端口出现TX超时错误。我发出几个 ping 请求后,发送超时,然后又发出更多 ping 请求。这使得TFTP几乎无法使用。
当然,硬件方面也存在差异。我们的 MAC 连接到 BCM54616S,然后连接到 LAN9514。自动协商的上限为 100FD。TX超时在环回模式下也会发生。
为了传输数据,我必须在我的板子上的 TBI PHY 中设置 SGMII_AN 位,而 IOT 则不需要这样做(IOT 可以协商 1000FD)。
不确定为什么TX信号如此不稳定。这是否与速度限制有关?
你好,
对于 100FD SGMII,请在原型板的引导加载程序中验证以下项目:
设置 LS1021A eTSEC 用于 SGMII 100 Mbps
ECNTRL[TBIM] = 1ECNTRL[SGMIIM] = 1ECNTRL[R100M] = 1MACCFG2[I/F Mode] = 01表示 10/100 模式R100M = 1 。重置和编程内部 TBI PHY。RM 指出 SGMII 使用 TBI 寄存器集,并且对于所有接口模式(包括 SGMII)重置 TBI 非常重要。
保持SGMII_AN设置为 TBI SGMII_AN位“必须设置为 1”。因此,您的电路板只有在设置此位后才会发送数据,这并不奇怪;这表明您的引导加载程序初始化对于此 PHY/MAC 模式不完整。
不要依赖 100 Mbps 下的 1G 式 SGMII AN 行为。已知 LS1021A 报告显示,100 Mbps SGMII 操作在链路循环后会出现“SGMII 链路不正常”或间歇性无数据包行为,而 1G 操作则正常。这并不能证明您的 TX 超时的确切根本原因,但这足以证明 100FD SGMII 配置是一个强烈的怀疑对象。
回环结果很重要。如果您的“环回模式”是外部 PHY 环回或 SGMII 侧环回,则 100FD SGMII/TBI 设置仍然可能参与其中。如果是内部 MAC/eTSEC 环回,那么外部 BCM54616S/LAN9514 路径基本无关紧要,我会重点关注 eTSEC 初始化、描述符环处理、缓存一致性和 TX 停止/错误状态。
为了进行调试,请检查超时发生时 eTSEC TX 停止状态。RM 表示,当 eTSEC 不再处理来自 TxBD 环的发送帧时,会设置发送停止位;可重复出现的原因包括总线错误、无效的 BD/数据地址、无法纠正的 BD/数据读取错误以及 TxBD 编程错误,例如Ready = 1长度为0 。还要检查是否看到IEVENT_BSY ;NXP 的资料将 BSY 描述为由于缓冲区不足/软件无法足够快地服务于 BD 环而导致的 RX 帧丢失,这是一种软件/BD 环的症状,而不是纯粹的 SGMII 电气症状。
推荐的分离步骤:
1.强制外部PHY为 100FD ,如果需要,不进行铜缆自动协商。2.强制LS1021A MAC / eTSEC 为SGMII 100 Mbps :
TBIM = 1 , SGMIIM = 1 , R100M = 1 , MACCFG2 I / F模式= 10 / 100。3. 设置 SGMII 模式后 RESET / 重新初始化 TBI 。4.设置TBI SGMII_AN = 1。
5.确认TBI链路/ AN状态、 eTSEC ECNTRL / MACCFG2和PHY SGMII侧状态。6.超时时,转储IEVENT 、 TX停止寄存器、 DMA状态和TXBD环内容。
此致敬礼