您好,
我们开发了一款以太网采集器,通过光纤或RJ45发送数据到服务器。
最近测试发现一个现象很奇怪,希望能得到一些提示。
1.dp83620直接与交换机连接,服务器与交换机连接,测试结果很好,带宽很大。
2.dp83620与一台华硕笔记本直连通讯(仍然使用直连网线),测试结果也很好。
3.dp83620与一些dell台式机,ibm的笔记本直连通讯(仍然使用直连网线),发现带宽下降很厉害,数据无法实时导出。
4.修改了ibm笔记本的网卡很多特性,没有效果。但修改ibm笔记本的连接方式为100M单工的情况下,问题消失,连接速度很快。
5.将ibm笔记本的连接方式改回100M双工模式,更换了一条交叉网线,测试效果仍然不好,带宽很低。
目前分析,如果将dp83620的连接方式强制改为单工,可以解决这个问题,正在准备进行测试。
想问一下这种现象可能是什么问题导致的,是否有一些方法在全双工模式下能避免这个问题。
Jeff Wang1:
1)之前有遇到一些兼容性问题,是芯片的某个脚接错了,所以还可仔细检查一下电路。
2)另外,可通过MDIO/MDC, 看一下寄存器状态,可确切了解是何问题。
luo qi:
回复 Jeff Wang1:
明天我试一下,顺便问一下,您提到的之前遇到的兼容性问题,能发一下链接吗?
luo qi:
回复 luo qi:
自己回答一下吧,希望对后来人有帮助
1.dp83620的光纤和rj45模式可以在上电时通过上下拉电阻选择,也可以在复位后通过mdio来操作。
2.光纤模式下,自动协商速率模式被强行关掉。
3.以太网模式下,可以开启自动协商模式来通讯。
4.我使用的是ti的nsp驱动,该驱动用于rj45模式没有问题,但光口通讯会遇到初始化不过的问题。
后来排查发现是因为在初始化过程中,nsp要判断自动协商成功才进入下一个状态,光口通讯模式下,自动协商被关掉了,导致初始化不成功。
因为我的产品是光口、电口共存的,通过switch来切换,因此修改了判断逻辑,根据dp83620的0x16寄存器的fx_en来进行区分判定,fx模式下,判断link状态作为进入下一状态的条件。
5.很重要的一点,DP83620的地址线需要接上下拉电阻!如果配置为00000地址,那么芯片复位后会默认打开isolated模式,导致网络没有任何响应。建议配为00001,因为我们的设计没预留电阻,因此用的是cpu的gpio来配置,这5根引脚与rmii是共用的,需要自己切换pinmux。
6.最开始遇到的链接速度不稳定的原因,就是因为第4点的判断逻辑,当时图光纤口调试省事,直接将判断自适应的条件给删除了,导致后边异常。
结贴。
Martin:
回复 luo qi:
非常赞!感谢分享!
Tracy Ma:
回复 luo qi:
你好,我看了你的帖子,感觉我现在遇到的问题有些相似,想请教您一下
现在我在嵌入式linux下使用DP83620,在boot状态下网口可以使用,但是系统跑起来后网口就不能使用了,打印了调试信息显示是网口复位后初始化不成功导致的,请教一下这个驱动要在哪修改