以太网卡杂记之MAC和PHY

网卡驱动架构以及源码分析 由于工作很忙,一直没有时间静下心来好好整理文档。文档的功夫不仅反映了一个人对相关知识的掌握,也可以发现不足之处,从而提高自己,增加自己的内功。希望从这篇开始,日积月累,成为一个优秀的程序员。本文的stmmac驱动以linux内核5.15为参考。stmmac驱动用于支持 synopsys ip的系列网卡芯片,包括xgmac,以及gmac。xgmac对应的是10G网卡芯片,gmac对应的则是千兆网卡芯片。我将从三个方面进行网卡驱动的分析,分别是网卡驱动架构,link方式,以及收发包流程。 阅读详情

写的挺好的,把做驱动需要注意的都提醒了,细节就自己看spec。

=======================转载=======================================================

以太网卡杂记之MAC和PHY
网卡工作在osi的最后两层,物理层和数据链路层。

 

物理层的芯片称之为PHY。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。

 

以太网卡中数据链路层的芯片称之为MAC控制器, 数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。

 

MAC和PHY之间的关系是PCI总线接MAC总线,MAC接PHY,PHY接网线(当然也不是直接接上的,还有一个变压装置),很多网卡的这两个部分是做到一起的。

PHY和MAC之间互连的界面是IEEE定义的标准:MII/GigaMII(Media Independed Interfade,介质独立界面)。MII界面传递了网络的所有数据和数据的控制。


写文章的这天有人在网上问, 如果操作系统没有加载网卡驱动,网卡虽然在系统设备树上,但网卡接口创建不了,那网卡实际能不能接收到数据? 下面是我在网上讨论的整理:

这里面有很多细节, 我根据Intel网卡的Spec大概写了写, 想尽量写的通俗一些,所以没有刻意用Spec里的术语,另外本文虽然讲的是MAC/PHY,但光口卡的(SERDES)也是类似的。

1. PCI设备做reset以后进入D0uninitialized(非初始化的D0状态, 参考PCI电源管理规范),此时网卡的MAC和DMA都不工作,PHY是工作在一个特殊的低电源状态的。

2. 操作系统创建设备树时,初始化这个设备,PCI命令寄存器的 Memory Access Enable or the I/O Access Enable bit会被enable, 这就是D0active。此时PHY/MAC就使能了。

3. PHY被使能应该就可以接收物理链路上的数据了,否则不能收到FLP/NLP, PHY就不能建立物理连接。但这类包一般是流量间歇发送的.

4. 驱动程序一般要通过寄存器来控制PHY, 比如自动协商speed/duplex, 查询物理链路的状态Link up/down。

5. MAC被使能后, 如果没有驱动设置控制寄存器的一个位(CTRL.SLU )的话, MAC和PHY是不能通讯的, 就是说MAC不知道PHY的link已经ready, 所以收不到任何数据的。这位设置以后, PHY完成自协商, 网卡才会有个Link change的中断,知道物理连接已经Link UP了。

6. 即使Link已经UP, MAC还需要enable接收器的一个位(RCTL.RXEN ),包才可以被接收进来,如果网卡被reset,这位是0,意味着所有的包都会被直接drop掉,不会存入网卡的 FIFO。老网卡在驱动退出前利用这位关掉接收。Intel的最新千兆网卡发送接收队列的动态配置就是依靠这个位的,重新配置的过程一定要关掉流量。

7. 无论驱动加载与否, 发生reset后,网卡EEPOM里的mac地址会写入网卡的MAC地址过滤寄存器,驱动可以去修改这个寄存器,现代网卡通常支持很多MAC地址,也就是说,MAC地址是可以被软件设置的。例如,Intel的千兆网卡就支持16个单播 MAC地址,但只有1个是存在EEPROM里的,其它是软件声称和设置的。

8. 但如果驱动没有加载,网卡已经在设备树上,操作系统完成了步骤1-2的初始化,此时网卡的PHY应该是工作的,但因为没有人设置控制位(CTRL.SLU)来让MAC和PHY建立联系,所以MAC是不收包的。这个控制位在reset时会再设置成0。

9. PHY可以被软件设置加电和断电, 断电状态除了接收管理命令以外,不会接收数据。另外,PHY还能工作在Smart Power Down模式下,link down就进入省电状态。

10. 有些多口网卡,多个网口共享一个PHY, 所以BIOS里设置disbale了某个网口, 也未必会把PHY的电源关掉,反过来,也要小心地关掉PHY的电源。

11. 要详细了解PHY,最终还是要熟悉IEEE以太网的相关协议。


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/yayong/archive/2010/03/01/5334565.aspx

linux phy处理流程一:探测phy设备 如果从节点中无法获取到"reg"值,然后对无"reg"值的节点调用of_mdiobus_child_is_phy()判断其是否为phy设备,如果为phy设备则尝试phy addr从0-31(跳过以存在phy设备的phy addr)调用of_mdiobus_register_phy()注册phy设备,4).mdiobus_scan()函数通过mido获取phy id成功则创建phy设备,否则返回设备不存在错误码(-ENODEV),创建phy设备成功后则注册phy设备(phy设备和phy驱动进行匹配操作)。 阅读详情

相关推荐

phy link检测机制记录

phy link 检测

weixin_43300893的博客 1487

【rtl8211】网卡 phy 设置笔记

rtl8211 phy 和其他的 phy 差不多,出现个问题,配置完,重新插拔网线才能进行使用。 phy 寄存器 主要关注 0 控制寄存器 和 1 状态寄存器 这里有个坑,不用自协商情况下,需要先关闭自协商,延时,再配置强制。 ...

赵撵猪的博客 5165

记录一次适配phy芯片过程

记录一次高版本内核适配phy芯片的调试过程

krokodil98的博客 3354

Linux以太网卡架构解析-MAC层和PHY层

引子 最近,在调试基于Freescale IMX6UL板子的以太网口时,遇到了一个奇怪的问题:网口插拔时,系统检测不到Link Down、Link UP事件。并且,在使用ifconfig eth0 up,然后再ifconfig eth0 down时,会提示: $ sudo ifconfig eth0 up $ sudo ifconfig eth0 down ifconfig: SIOCSIFFLAGS: No such device 首先,可以确定的是,以太网PHY芯片驱动可以正确加载,这说明芯片的DTS

飞翔de刺猬 1万+

STM32对PHY和MAC的理解

1. 背景简介 网络通信至少是两个设备的事,需要相互兼容的硬件和软件支持,我们称之为通信协议。以太网通信在结构比较复杂,国际标准组织将整个以太网通信结构制定了 OSI 模型,总共分层七个层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,每个层功能不同,通信中各司其职,整个模型包括硬件和软件定义。 OSI 模型是理想分层,一般的网络系统只是涉及其中几层。 TCP/IP 是互联网...

weixin_42349855的博客 4185

网口扫盲三:以太网芯片MAC和PHY的…

问:如何实现单片以太网微控制器? 答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件.这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积.单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下. 问:以太网MAC是什么? 答:MAC即Media Access Control,即媒体访问控制子层协

wg_hou的博客 6280

以太网(一)MAC、MII、PHY 介绍

本文详细介绍了以太网的硬件架构与工作原理,重点解析了CPU、MAC和PHY的三种常见集成方式。其中MAC负责数据链路层的帧处理与CRC校验,PHY实现物理层的信号编解码与冲突检测,二者通过MII接口连接协同工作。文章还对比了不同MAC-PHY接口类型(如RMII、SMII等),并提供了IEEE802.3标准文档和PHY寄存器等扩展资料,为理解以太网底层通信机制提供了完整的技术框架。

ID2442512720的博客 1万+

以太网PHY,MAC接口

从硬件的角度看,以太网接口电路主要由MAC(Media Access Control)控制器和物理层接口PHY(Physical Layer,PHY)两大部分构成。如下图所示:DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中。但是,在实际的设计中,以上三部分并不一定独立分开的。由于,PHY整合了大量模拟硬件,而MAC是典型的全数字器件。考虑到芯片面积及模拟/数字混合架构的原因,通常,将MAC集成进微控制器而将PHY留在片外。

u010783226的专栏 2222

MAC和PHY的区别

转载自:https://www.cnblogs.com/feitian629/archive/2013/01/25/2876857.html一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向...

xiaomifengxxxx的专栏 4万+

OSI七层模型中的MAC和PHY

最近做服务器项目在学习MAC和PHY,总结了一些知识点,拿来分享一下

qq_38593854的博客 2307

获取以太网卡的MAC地址

用各种方法来获取以太网卡的MAC地址,像VB等,简单易懂

关于网卡及MAC和PHY的区别,讲的比较清楚(转帖)

一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 1.网卡的基本结构 以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如Intel 82559网卡的和3COM 3C...

mabin2005的专栏 4931

osgEarth添加线特征

部分关键代码: osgEarth::Annotation::FeatureNode* pathNode = 0; osgEarth::Symbology::Geometry* path = new osgEarth::Symbology::LineString(); Track*track = dynamic_cast<Track*>(entity->getProperty(PS_TRACK)); if (track == nullptr) { return; } st.

wb175208的专栏 2967

网口扫盲三:以太网芯片MAC和PHY的关系

问:如何实现单片以太网微控制器? 答:诀窍是将微控制器、以太网媒体接入控制器(MAC)和物理接口收发器(PHY)整合进同一芯片,这样能去掉许多外接元器件.这种方案可使MAC和PHY实现很好的匹配,同时还可减小引脚数、缩小芯片面积.单片以太网微控制器还降低了功耗,特别是在采用掉电模式的情况下. 问:以太网MAC是什么? 答:MAC即Media Access Control,即媒体访问控制子层协...

weixin_33967071的博客 9605

Windows 10/11 下用 Docker 一键部署 CVAT 标注工具(附 WSL2 配置指南)

本文详细指导如何在Windows 10/11系统上,通过配置WSL2和Docker Desktop,实现CVAT标注工具的一键部署。内容涵盖从环境准备、Docker安装、CVAT服务启动到性能优化与安全配置的全流程,为计算机视觉开发者提供稳定高效的本地标注平台解决方案。

weixin_28839601的博客 463

从零开始:如何在STM32上搭建QP框架实现事件驱动开发(附完整代码)

本文详细介绍了如何在STM32嵌入式平台上从零开始搭建QP框架,实现事件驱动开发。通过对比传统前后台系统与RTOS的局限,深入剖析了QP框架基于活动对象和层次式状态机的核心优势,并提供了完整的环境配置、代码移植及一个智能灯光控制器的实战案例,帮助开发者构建清晰、可维护的复杂嵌入式应用。

weixin_29200741的博客 487

深入理解Linux内核 PHY 驱动框架

深入讲解一下IMX6ULL在Linux内核中 PHY的驱动框架,希望这篇文章对大家理解网卡驱动有所帮助。

Wang_XB_3434的博客 9626

Tube-based MPC完全指南:RCI集合构造与Matlab实现

模型预测控制(MPC)在实际工程中常因模型失配和外部扰动导致硬约束被突破,而鲁棒控制中的Tube-based MPC通过将单条预测轨迹扩展为“管道”集合,为不确定性提供了严格的安全边界。其核心在于利用鲁棒控制不变集(RCI)离线构造安全域,再结合在线标称MPC与反馈校正实现约束的硬保证。针对非线性系统,利普希茨条件为等效扰动的放大和RCI的构造提供了理论基础,使得算法既能保留非线性描述,又不牺牲在线计算效率。该方法适用于带扰动和参数漂移的机械系统、过程控制及嵌入式控制场景。本文以摩擦力非线性系统为例,从RC

weixin_32642109的博客 216

关于网卡及MAC和PHY的区别

一块以太网网卡包括OSI(开方系统互联)模型的两个层。物理层和数据链路层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 1.网卡的基本结构    以太网卡中数据链路层的芯片一般简称之为MAC控制器,物理层的芯片我们简称之为PHY。许多网卡的芯片把MAC和PHY的功能做到了一颗芯片中,比如Intel 82559网卡的和3COM 3C905网

小卢的专栏 2072

姿态传感器/陀螺仪之BMI270应用原理图设计

BMI270是一款由博世(Bosch)推出的高性能、超低功耗惯性测量单元(IMU),专为可穿戴设备、智能设备及物联网应用设计。

corlin6688的博客 2862

综述性论文别再堆砌文献!用GPT-5.1 Thinking轻松攻克四大关键难点,真正实现高效高质撰写(附AI提示词)

逻辑构建上以往都是先梳理一篇文献的领域研究脉络,明确其发展阶段、核心议题等,再搭建初步的大纲,借助思维导图或者别的方式将筛选后的文献观点按主题归类到对应章节,理清楚每个章节间的递进或并列关系,最后再逐个章节进行补充过渡表述,那么做的目的其实就是摆脱文献堆砌问题。人工做法往往是对比不同文献的研究方法、数据来源与核心结论,再清晰标注每类成果的优缺点,找到文献中存在的争议焦点,找到之后再梳理争议产生的核心原因,最后在基于现有研究,推出还未被探索的研究方向,从而提炼出创新切入点。2)文献之间的相同点与不同点;

智能AI让学术科研更容易 173
上一篇: spin lock 深入理解
下一篇: SVN简易使用手册
flyingcloud_2008
博客等级 码龄19年 10粉丝 13原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值