客户使用 EZSDK 5_04_00_11
它们的问题是 CPU 没有在 EMAC0端口上接收到以太网数据包的中断。
在此期间、CPU 可以通过 EMAC0发送数据包。 问题仅在于接收方向。
我们不知道 EMAC1,因为产品不使用它。
他们 检查了 EMAC0和 ARM 中断控制器模块的寄存器。
条件差和条件好之间没有区别。
在出现问题期间,“ifconfig”显示如下所示的内容:
# ifconfig eth0
eth0 Link encap:以太网 HWaddr 00:0D:2E:00:00:20
iNet addr:172.17.0.32 Bcast:172.17.255.255 Mask:255.255.0.0
运行多播 MTU:1500 公制:1的上广播
RX 数据包:664765错误:0丢弃:77超支:2883662帧:2883681
TX 数据包:193008错误:0丢弃:0溢出:0载波:0
冲突:0 txqueuelen:1000
RX 字节:687965140 (656.0 MIB) TX 字节:17466853 (16.6 MIB)
中断:40基地址:0x8000
RX 数据包的数量不会改变。 超限次数每次都会增加。
下面的数据是硬件静态寄存器的转储。 RXSOFOVERRUNS (偏移量284h)和 RXDMAOVERRUNS (偏移量28Ch)不为0。
地址0x4a100200 0x003BA1FC 0x00014676 0x0000079C 0x00000000
地址0x4a100210 0x00000000 0x00000000 0x00000000 0x00000000
地址0x4a100220 0x00000000 0x00000000 0x00014B12 0x00000000
地址0x4a100230 0xDA0F6BAF 0x00033E94 0x0002270A 0x00001DDC
地址0x4a100240 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
地址0x4a100250 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
地址0x4a100260 0x00000000 0x012B3594 0x0005A28D 0x000A3B18
ADDR 0x4a100270 0x00059515 0x00017AD1 0x0001ED74 0x00260803
地址0x4a100280 0xE0DC2B64 0x000001E0 0x00000000 0x000001F8
此问题可能在网络流量过大时发生。 网络上有多种单播、多播和广播。
当存在网络环路时、它看起来会增加导致此问题的可能性。
另一方面, 当他们尝试在模拟器的测试台上重现此问题时, 他们能够导致“超限计数器”,但 EMAC0从未卡住。 它能够在移除重负载后进行通信。
请提出一个建议以调查此问题。
目前、有2种恢复条件的方法。
(1) 软件(Linux)重新引导
(2) 关闭 eth0并向上转动
(I.e) ifconfig eth0 down、then、ifconfig eth0 up。