网卡、PHY芯片易混淆辨析

本文详细介绍了网卡的基本概念、功能,以及网卡的软硬之分,其中硬网卡是MAC和PHY集成,软网卡则需要外接PHY芯片。此外,还阐述了网卡的总线接口类型,如ISA、PCI、PCI-X、PCI-E、USB、PCMICA和Mini-PCI接口,展示了各种接口的特点和应用范围。

一、网卡

网卡(Network Interface Card,简称NIC),也称网络适配器,是电脑与局域网相互连接的设备。无论是普通电脑还是高端服务器,只要连接到局域网,就都需要安装一块网卡。

电脑之间在进行相互通讯时,数据不是以流而是以帧的方式进行传输的。我们可以把帧看做是一种数据包,在数据包中不仅包含有数据信息,而且还包含有数据的发送地、接收地信息和数据的校验信息。一块网卡包括OSI模型的两个层——物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。  

网卡的功能主要有两个:一是将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去;二是接收网络上其它设备传过来的帧,并将帧重新组合成数据,发送到所在的电脑中。网卡能接收所有在网络上传输的信号,但正常情况下只接受发送到该电脑的帧和广播帧,将其余的帧丢弃。然后,传送到系统CPU做进一步处理。当电脑发送数据时,网卡等待合适的时间将分组插入到数据流中。接收系统通知电脑消息是否完整地到达,如果出现问题,将要求对方重新发送。

二、网卡的软硬之分

以太网接口分为协议层(MAC,媒体访问层)和物理层(PHY+传输器)组成。

  • 硬网卡是指常见的将MAC和PHY集成在一个芯片的网卡。
  • 而目前也有很多主板的南桥芯片已包含了以太网MAC控制功能,只是未提供物理层接口,因此需要外接PHY芯片以提供以太网的接入通道。这类PHY网络芯片就是俗称的“软网卡芯片”,常见的有RTL8201BL、VT6103等等。“软网卡”一般讲网络控制芯片的运算部分交由处理器或南桥芯片处理,以简化电路从而降低成本。

三、网卡的总线接口        

网卡要与电脑相连接才能正常使用,电脑上各种接口层出不穷,这也造成了网卡所采用的总线接口类型纷呈。此外,提到总线接口,需要说明的是人们一般将这类接口俗称为“金手指”,为什么叫金手指呢?是因为这类插卡的线脚采用的是镀钛金(或其它金属),保证了反复插拔时的可*接触,既增大了自身的抗干扰能力又减少了对其他设备的干扰。  
为了方便您了解,下面我们就分别来图解一下常见的各种接口类型的网卡。  

①ISA接口网卡  

       ISA是早期网卡使用的一种总线接口,ISA网卡采用程序请求I/O方式与CPU进行通信,这种方式的网络传输速率低,CPU资源占用大,其多为10M网卡,目前在市面上基本上看不到有ISA总线类型的网卡,笔者从旧件堆中找到了几款ISA网卡,D-LINK的产品,居然用橡皮擦清洁金手指上机后还能用。  

②PCI接口网卡  

       PCI(peripheral component interconnect)总线插槽仍是目前主板上最基本的接口。其基于32位数据总线,可扩展为64位,它的工作频率为33MHz/66MHz。数据传输率为每秒132MB(32*33MHz/8)。目前PCI接口网卡仍是家用消费级市场上的绝对主流。 

③PCI-X接口网卡  

      PCI-X是PCI总线的一种扩展架构,它与PCI总线不同的是,PCI总线必须频繁的于目标设备和总线之间交换数据,而PCI-X则允许目标设备仅于单个PCI-X设备看已进行交换,同时,如果PCI-X设备没有任何数据传送,总线会自动将PCI-X设备移除,以减少PCI设备间的等待周期。所以,在相同的频率下,PCI-X将能提供比PCI高14-35%的性能。目前服务器网卡经常采用此类接口的网卡。  
④PCI-E接口网卡  
       PCI Express 1X接口已成为目前主流主板的必备接口。不同与并行传输,PCI Express接口采用点对点的串行连接方式,PCI Express接口根据总线接口对位宽的要求不同而有所差异,分为PCI Express 1X(标准250MB/s,双向500MB/s)、2X(标准500MB/s)、4X(1GB/s)、8X(2GB/s)、16X(4GB/s)、32X(8GB/s)。采用PCI-E接口的网卡多为千兆网卡。  

⑤USB接口网卡  

       在目前的电脑上很难找到没有USB接口(Universal Serial Bus,通用串行总线)的,USB总线分为USB2.0和USB1.1标准。USB1.1标准的传输速率的理论值是12Mbps,而USB2.0标准的传输速率可以高达480Mbps,目前的USB有线网卡多为USB2.0标准的。  

⑥PCMCIA接口网卡  

      PCMCIA接口是笔记本电脑专用接口,PCMCIA总线分为两类,一类为16位的PCMCIA,另一类为32位的CardBus,CardBus网卡的最大吞吐量接近90Mbps,其是目前市售笔记本网卡的主流。  

⑦Mini-PCI接口网卡  
        MiniPCI接口是在台式机PCI接口基础上扩展出的适用于笔记本电脑的接口标准,其速度和PCI标准相当,很多此类产品都是无线网卡。  

 

 

### Linux 系统中网卡 PHY 芯片驱动开发流程及调试方法 在 Linux 系统中,网卡 PHYPhysical Layer)芯片的驱动开发是一个复杂的任务,涉及到硬件初始化、状态监测以及与网络子系统的交互。以下是关于 Linux 系统中网卡 PHY 芯片驱动开发流程及调试方法的详细说明。 #### 1. 驱动开发流程 ##### 初始化阶段 在驱动加载时,需要完成对 PHY 芯片的基本初始化操作。这包括设置寄存器值以确保 PHY 处于正确的工作模式,并通过 MDIO 总线与 PHY 芯片通信。MDIO 是一种标准接口,用于访问 PHY 寄存器[^5]。 ```c static int phy_probe(struct mdio_device *mdiodev) { struct phy_device *phydev; phydev = phy_device_create(mdiodev, 0, mdiodev->addr); if (IS_ERR(phydev)) return PTR_ERR(phydev); // 初始化 PHY 设备 phy_attach_direct(dev_get_drvdata(&mdiodev->dev), phydev, PHY_INTERFACE_MODE_GMII); return 0; } ``` 上述代码展示了如何创建一个 PHY 设备并将其附加到网络接口上。这里使用了 `phy_device_create` 函数来实例化 PHY 设备对象,并通过 `phy_attach_direct` 将其绑定到特定的网络接口模式[^6]。 ##### 状态监测 PHY 芯片的状态需要定期监测,以确保链路正常工作。Linux 内核提供了 `phylib` 库来简化这一过程。开发者可以通过调用 `phy_read_status` 来更新 PHY 的状态信息。 ```c int phy_read_status(struct phy_device *phydev) { int err; err = genphy_read_status(phydev); if (err < 0) return err; // 检查链路状态 if (phydev->link) { netif_carrier_on(phydev->attached_dev); } else { netif_carrier_off(phydev->attached_dev); } return 0; } ``` 这段代码展示了如何读取 PHY 的状态信息,并根据链路状态调整网络设备的行为[^7]。 ##### 卸载阶段 当驱动卸载时,需要释放所有分配的资源并停止 PHY 设备的操作。这通常通过调用 `phy_detach` 函数实现。 ```c static void phy_remove(struct mdio_device *mdiodev) { struct phy_device *phydev = mdiodev_to_phy_device(mdiodev); phy_detach(phydev); } ``` #### 2. 调试方法 ##### 使用 ethtool 工具 `ethtool` 是一个强大的工具,可以用来检查配置网络接口的参数,包括 PHY 芯片的状态。通过命令行可以查看 PHY 的详细信息。 ```bash ethtool -p eth0 ``` 上述命令会触发 PHY 的 LED 测试模式,帮助确认硬件是否正常工作[^8]。 ##### 日志分析 在内核日志中查找与 PHY 相关的消息可以帮助定位问题。使用 `dmesg` 命令可以查看这些消息。 ```bash dmesg | grep phy ``` ##### 动态调试 启用内核动态调试功能(Dynamic Debug),可以输出更多关于 PHY 操作的详细信息。 ```bash echo "module phy-core +p" > /sys/kernel/debug/dynamic_debug/control ``` ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值