88e1512 排坑(一)sgmii网口不稳定

       CPU用的是Armada-3720,内核是GitHub - MarvellEmbeddedProcessors/linux-marvell: Marvell Armada Linux kernel 里面18.12版本,uboot使用的是GitHub - MarvellEmbeddedProcessors/u-boot-marvell at u-boot-2018.03-armada-18.12。两路网口,一路是RGMII模式(lan1),另外一路是SGMII模式(lan2)。最近发现有时系统起来后用PC去ping lan2会ping不通,phy可以正常识别,执行ifconfig down/up也可以看到正常的打印信息。

       另外起来后lan2 ping的通时就一直ping的通,也不会出现丢包、断掉现象(起来后ping的通时测试了两天时间左右)。rgmii的lan1一直比较稳定,未发现ping不通的时候,所以认为phy这侧应该是好的。总之感觉就是lan2初始化不稳定。

       看了88e1512的datesheet后,发现18页的第18个寄存器可以配置一下看数据包的接收状态。

     在网上找了一个miitool工具(GitHub - kontron/miitool: Handy tool to manipulate PHY registers.),可以通过mdio读写phy寄存器,第22个寄存器是选择寄存器页数的。

      测试出来系统启动后lan2 ping不通的情况下是没有包的,17_18寄存器值为0,系统起来lan2正常时是有数据包的,17_18寄存器值会一直增长(测试时PC一直ping lan2)。大概率是mac层这一侧没有接收到数据。

      找了marvell代理商的技术支持问了下,后来怀疑是我们uboot没有正确配置Serdes,查了下Serdes的说明,

       我发现已经在内核的dts里配置了,并且已经禁用了usb3.0,难道系统起来后重新配置没有起作用,一定要在uboot里配置?

    看了下uboot的Serdes配置,里面comphy0默认是usb3.0,参照arch/arm/dts/armada-3720-ddr3-db-v2-B.dts中的配置修改了comphy0。

修改arch/arm/dts/armada-3720-espressobin.dts,重新编译了uboot。

   

       重新烧写uboot系统起来后,连续插拔电六十次进行测试,发现lan2不会出现ping不通的情况了,问题解决!后来又看了文档有说到GPIO和serdes的初始化一定要放在uboot里。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值