社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 2147|回复: 4

[讨论] 网卡如何识别10M/100M,如何检测网线插入

[复制链接]

239

TA的帖子

2

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-2-9 19:16:39 | 显示全部楼层 |阅读模式
对网卡的工作机制缺乏理论基础,遇到问题无从下手,请赐教

本人对网卡的基本了解
处理器——MAC控制器——pyh芯片——RJ45——网线
              |<------  网卡范围   ----------------->|

linux下做网卡驱动,偶尔启动后看起来网口的LED灯也闪烁了,但网口的状态不对,正常情况表现如下: zc.png
carrier为1表示检测到载波--------------------状态2
duplex为full表示通信方式全双工
speed位1000,具体含义我不太清除

出现问题的状态:-------------状态1
carrier=0
duplex=half
speed=100

网卡从状态1状态2需要经历什么,我用winshark抓包,插拔网线过程没有任何数据包,我猜测
这个过程本就没什么数据,应该只是电频检测,网线对端频率检测等,整个过程更本就不存在任何与“上层”关系的数据包,phy自然不会传递给MAC控制器,winshark也就抓不到数据包。大致流程猜测:
  • 状态1应该是phy芯片的休眠状态,当插入网线后,由于电平关系激活了phy,从而phy检测到载波,carrier为1
  • phy用最低的速率100与对端发送预定义的信号,此时是半双工的(half),当接收端在收到后,也以100的速率发送相同的信号,本地收到后变成全双工(full)
  • 本地网卡用100通信速率问对方,你还能支持更高的1000速率吗?对方回答,没问题,之后speed为1000




出现问题的原因除了软件驱动之外,不排除网卡外围电路硬件缺陷,我手上有250M采样率的四通道示波器用它怎么测试网卡外围电路,需要测量什么参数

  • 检测网线插入是不是通过电平状态???
  • 网卡识别10M/100M的依据是不是载波频率???




回复

使用道具 举报

348

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2017-2-9 19:57:03 | 显示全部楼层
speed=1000是指 通信速率为千兆

首先你应该确定PHY芯片有没有正常工作,首先看看有没有时钟,应该是晶体产生的,直接测时钟脚,通常是25M。还可以测一下RMII参考时钟输出,百兆PHY的话应该是25M,千兆PHY是125兆。有时钟的话测PHY芯片LINK脚,如果拉低,说明link上。还可以测一下PHY芯片连接MAC芯片的RGMII接口有没有数据变化。你的示波器带宽是250M还是采样率250M,250M采样率略低啊。

没有建立LINK的PHY芯片会不断发送脉冲信号检测对端设备,一旦检测到有设备插入,两者就会协商,包括连接速度,双工模式等。有时候工作在1000M的时候,假如信号质量变差,有些PHY会自动会自动降到100M,等稳定后重新LINK到1000M,但是网卡通常通信质量不会这么差。

另外,网口的绿灯闪烁一般说明工作正常。我也只知道这么些了。

点评

能抽时间帮看下子我的测试有什么问题吗  详情 回复 发表于 2017-2-14 17:37
谢谢,这一句非常有用 “没有建立LINK的PHY芯片会不断发送脉冲信号检测对端设备,一旦检测到有设备插入,两者就会协商,包括连接速度,双工模式等” 我会按你说的测试 我的示波器是可以测试网卡的,测试过,只是  详情 回复 发表于 2017-2-9 20:17

评分

1

查看全部评分



回复

使用道具 举报

239

TA的帖子

2

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-9 20:17:49 | 显示全部楼层
飞翔荷兰人号 发表于 2017-2-9 19:57
speed=1000是指 通信速率为千兆

首先你应该确定PHY芯片有没有正常工作,首先看看有没有时钟,应该是晶体 ...

谢谢,这一句非常有用
“没有建立LINK的PHY芯片会不断发送脉冲信号检测对端设备,一旦检测到有设备插入,两者就会协商,包括连接速度,双工模式等”
我会按你说的测试
我的示波器是可以测试网卡的,测试过,只是当初看不懂信号的含义


回复

使用道具 举报

239

TA的帖子

2

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-14 17:12:33 | 显示全部楼层
本帖最后由 lzwml 于 2017-2-14 17:59 编辑

本帖作为工作笔记,下面是我用示波器测试dps83848 PHY芯片的记录,目前网卡仍旧不能100%工作

测试方法:
pc与电路板连接在同一交换机下,pc 不断ping 电路板IP;
电路板上的网线时而插拔,比较信号差异;

测试结果:
1. 上电后网口绿灯长亮
2. PHY输入时钟信号测得25MHz方波
3. PHY输出时钟没有(无论正常或异常的板子均无信号)
4. MIDO和MDC信号看不懂求教
        MDC信号1.8MHz方波,幅度0-3.3V
        MDIO偏移3.3V,幅度约700mV,锯齿波
mdc信号
mdc.gif
mdio信号
mdio.gif

5. X1-X2晶体,一个正弦波,一个三角波
6. 网线没有插入式LINK为高电平,插入网线后高低电平交替,面板上黄色LED灯闪烁
7.
没有插入网线时TX、RX上有毛刺脉冲,
脉冲周期 64us,脉冲宽度 100ns,
脉冲组间隔16ms,脉冲组宽度 2ms

脉冲周期
td-signal-t.gif 脉冲宽度
td-signal.gif

脉冲组间隔
8013-1.gif

脉冲组宽度
8013-2.gif

个人理解:
为什么RX上能收到与TX相同的脉冲?
802.1使用CSMA/CD机制,处于半双工模式,在发送过程同样接受自己发送的信号,若收发内容不一致判断有其他机器在抢占带宽。
所以RX上的信号是Tx经过PHY内部电路环回到Rx上。

8. 接入网线后,能ping通时,Tx信号幅度“必定”大于Rx;不能ping通时信号强度大多时候RX幅度 > Tx幅度
能ping通时Rx信号幅度1.08V
ok-rx.gif
能ping通时Rx信号幅度1.41V
ok-tx.gif

个人理解:
1)Rx幅度 > Tx幅度
远端ping本地,由上面的过程可知PHY芯片的RX和TX是可以导通的,导通后必定有压降,信号流向Rx----PHY----TX,在PHY上能量损耗。
所以:RX幅度 > Tx

2)TX幅度 > RX幅度
本地收到远端的ping本地,得到协议栈的处理,给予反馈,数据流向:

|   输入数据   | 处理  |    输出    |
Rx----PHY----MAC----协议栈----MAC---PHY----TX

由1)的分析推断PHY的Rx、Tx管脚之间是有“开关”允许导通的,Rx上的信号是Tx信号的探测,
所以:Tx幅度 > Rx

3)由1)、2)推断有自相矛盾:
若网卡工作在半双工模式,那么探头测试Tx信号应该是“强弱交替”进行的,而实际测试过程看不到该现象,该现象使得1)、2)自相矛盾
Tx > Rx 本地发送
Tx < Rx 接收发送


处于半双工模式下设想的Tx信号,测试Rx信号样子也一样,只是正好相反,幅度大的时候接受,幅度小的时候发送
tuili.png

由此得出推断3):在网线接入网卡后,PHY完成某些网络参数探测,包括:速率、工作模式(具体过程我尚不清楚)。探测结束后PHY工作在全双工模式。
这样才能圆2)里的矛盾。

所以:
        1)现象里网卡工作在“半双工”;
        2)工作在“全双工”;











回复

使用道具 举报

239

TA的帖子

2

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2017-2-14 17:37:20 | 显示全部楼层
飞翔荷兰人号 发表于 2017-2-9 19:57
speed=1000是指 通信速率为千兆

首先你应该确定PHY芯片有没有正常工作,首先看看有没有时钟,应该是晶体 ...

能抽时间帮看下子我的测试有什么问题吗


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-11-20 15:43 , Processed in 0.322481 second(s), 20 queries , Redis On.

快速回复 返回顶部 返回列表