前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >88e1512 排坑(一)sgmii网口不稳定

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

作者头像
咖啡走糖
发布2022-11-05 16:24:42
2.3K0
发布2022-11-05 16:24:42
举报
文章被收录于专栏:咖啡走糖

CPU用的是Armada-3720,内核是https://github.com/MarvellEmbeddedProcessors/linux-marvell 里面18.12版本,uboot使用的是https://github.com/MarvellEmbeddedProcessors/u-boot-marvell/tree/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工具(https://github.com/kontron/miitool),可以通过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里。

版权属于:咖啡走糖

本文链接:https://cloud.tencent.com/developer/article/2152379

若无注明,本文皆咖啡走糖原创,转载时必须注明出处及本声明!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019 年 09 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档