ls1028ardb这个定制主板,现在我们遇到的主要问题是概率性卡switch的问题,有些主板卡顿高达20%,各位有什么建议或者思路,请给予指导,非常感谢。下面是我们的实验情况:
我们做了大量的实验,发现uboot下概率性卡在L2 switch初始化寄存器那里,新bsp2108和老版本bsp1906表现都一样:
一,1906的老版本BSP版本卡switch的uboot log:
PCS: PCS[0] didn't link up yet.
trying to set up L2 switch ...
具体位置:u-boot/board/freescale/ls1028a/ls1028a.c 里面的setup_switch()函数读写寄存器L2SW_SYS_RAM_CTRL概率性卡死
如果注释掉uboot这里的switch初始化,也会概率卡在内核对应的switch寄存器访问
二,2108的新版本BSP卡switch的uboot log:
Warning: enetc-0 (eth0) using random MAC address - 26:60:94:79:5e:b3
eth0: enetc-0
Warning: enetc-2 (eth1) using random MAC address - 26:be:46:b6:8b:96
, eth1: enetc-2
具体位置:drivers/net/mscc_eswitch/felix_switch.c 里面的felix_init()函数读写寄存器FELIX_SYS_RAM_CTRL概率性卡死
如果注释掉uboot这里的felix_init()初始化,也会概率卡在内核对应的switch寄存器访问
三,在每次卡switch的时候,我们发现通过External MDIO的接口read访问外部PHY,都可以正常读写,通过内部Internal MDIO的接口enetc_imdio_read访问内部返回都是ffff:
1,卡switch时External MDIO和Internal MDIO的相关寄存器打印:
PCS: ext_bus reg 0x17: 0004
PCS: ext_bus reg 0x10: 0184
PCS: ext_bus reg 0x1f: 0000
PCS: BMSR,enetc_imdio_read:ffff
PCS: BMSR,enetc_imdio_read:ffff
PCS: BMSR,enetc_imdio_read:ffff
2,正常启动时时External MDIO和Internal MDIO的打印:
PCS: ext_bus reg 0x17: 0004
PCS: ext_bus reg 0x10: 0184
PCS: ext_bus reg 0x1f: 0000
PCS: BMSR,enetc_imdio_read:002d
PCS: BMSR,enetc_imdio_read:002d
PCS: BMSR,enetc_imdio_read:002d
PCS: BMSR,enetc_imdio_read:002d
四,根据寄存器手册《LS1028ARM.pdf》,我们准备在出问题时访问对应的状态寄存器定位问题,发现出问题时可以访问iEPRC和ENETC相关寄存器,涉及到访问TSN-Switch的任何寄存器必卡死,手册具体对应章节如下:
16.2 Integrated Endpoint Root Complex (iEPRC) (switch卡死时,uboot可以读写这里面的寄存器)
16.3 Ethernet Controller (ENETC) (switch卡死时,uboot可以读写这里面的寄存器)
16.4 TSN-Capable Ethernet Switch (switch卡死时,uboot所有寄存器都不能访问,直接卡死在读取的地方)
1,我使用 ls1028ardb EVK 板没有复现客户的异常,请问的定制主板 软 硬 件有哪些ENETC相关改动?
2,客户描述的“出问题时可以访问iEPRC和ENETC相关寄存器,涉及到访问TSN-Switch的任何寄存器必卡死”,卡死了怎么访问的相关寄存器?
3,我没在uboot找到enetc_imdio_read函数?
4,在没有卡死的情况,且正常进入linux文件系统后,用devmem2频繁访问可能卡住的寄存器还会随机卡死吗?