4. 驱动框架(网络驱动)
网络驱动1. 网络驱动1.1 网络驱动---MII/RMII/MDIO接口1.2 网络驱动---PHY 芯片详解寄存器1.3 网络驱动---PHY 芯片详解LAN8720A1.3.1 网络驱动---LAN8720A中断管理1.3.2 网络驱动---LAN8720APHY 地址设置1.3.3 网络驱动---LAN8720A时钟源1.3.4 网络驱动---LAN8720A内部寄存器1.4 网络驱动---PHY 芯片详解SR8201F1.4.1 网络驱动---SR8201F中断管理1.4.2 网络驱动---SR8201FPHY 地址设置1.4.3 网络驱动---SR8201F内部寄存器1.5 网络驱动---驱动框架1.5.1 网络驱动—驱动框架PHY框架2. WIFI 模块3. 4G 模组3.1 4G 模组ME36303.2 4G 模组EC201.网络驱动SOC 内置 MACMAC 类似 I2C 控制器、SPI 控制器一样的外设。但是光有 MAC 还不能直接驱动网络还需要另外一个芯片PHY因此对于内置 MAC 的 SOC其外部必须搭配一个 PHY 芯片内部集成网络 MAC 的优点如下①、内部 MAC 外设会有专用的加速模块比如专用的 DMA加速网速数据的处理②、网速快可以支持 10/100/1000M 网速③、外接 PHY 可选择性多成本低1.1网络驱动—MII/RMII/MDIO接口MII 接口一共有 16 根信号线TX_CLK发送时钟如果网速为 100M 的话时钟频率为 25MHz10M 网速的话时钟频率为 2.5MHz此时钟由 PHY 产生并发送给 MAC。TX_EN发送使能信号。TX_ER发送错误信号高电平有效表示 TX_ER 有效期内传输的数据无效。10Mpbs 网速下 TX_ER 不起作用。TXD[3:0]发送数据信号线一共 4 根。RXD[3:0]接收数据信号线一共 4 根。RX_CLK接收时钟信号如果网速为 100M 的话时钟频率为 25MHz10M 网速的话时钟频率为 2.5MHzRX_CLK 也是由 PHY 产生的。RX_ER接收错误信号高电平有效表示 RX_ER 有效期内传输的数据无效。10Mpbs 网速下 RX_ER 不起作用。RX_DV接收数据有效作用类似 TX_EN。CRS载波侦听信号。COL冲突检测信号。RMII 接口只需要 7 根数据线TX_EN发送使能信号。TXD[1:0]发送数据信号线一共 2 根。RXD[1:0]接收数据信号线一共 2 根。CRS_DV相当于 MII 接口中的 RX_DV 和 CRS 这两个信号的混合。REF_CLK参考时钟由外部时钟源提供 频率为 50MHz。这里与 MII 不同MII 的接收和发送时钟是独立分开的而且都是由 PHY 芯片提供的。MDIO 全称是 Management Data Input/Output直译过来就是管理数据输入输出接口是一个简单的两线串行接口一根 MDIO 数据线一根 MDC 时钟线。驱动程序可以通过 MDIO 和 MDC 这两根线访问 PHY 芯片的任意一个寄存器。MDIO 接口支持多达 32 个 PHY。同一时刻内只能对一个 PHY 进行操作那么如何区分这 32 个 PHY 芯片呢和 IIC 一样使用器件地址即可。同一 MDIO 接口下的所有 PHY 芯片其器件地址不能冲突必须保证唯一具体器件地址值要查阅相应的 PHY 数据手册1.2网络驱动—PHY 芯片详解寄存器SOC 可以对 PHY 进行配置或者读取 PHY 相关状态这个就需要 PHY 内部寄存器去实现了。PHY 芯片寄存器地址空间为 5 位地址 0~31 共 32 个寄存器IEEE 定义了 0~15 这 16 个寄存器的功能16~31 这 16 个寄存器由厂商自行实现。也就是说不管你用的哪个厂家的 PHY 芯片其中 0~15 这 16 个寄存器是一模一样的。仅靠这 16 个寄存器是完全可以驱动起 PHY 芯片的至少能保证基本的网络数据通信因此 Linux 内核有通用 PHY 驱动按道理来讲不管你使用的哪个厂家的 PHY 芯片都可以使用 Linux 的这个通用 PHY 驱动来验证网络工作是否正常。事实上在实际开发中可能会遇到一些其他的问题导致 Linux 内核的通用 PHY 驱动工作不正常这个时候就需要驱动开发人员去调试了。但是随着现在的 PHY 芯片性能越来越强大32 个寄存器可能满足不了厂商的需求因此很多厂商采用分页技术来扩展寄存器地址空间以求定义更多的寄存器。这些多出来的寄存器可以用于实现厂商特有的一些技术因此 Linux 内核的通用 PHY 驱动就无法驱动这些特色功能了这个时候就需要 PHY 厂商提供相应的驱动源码了所以大家也会在 Linux 内核里面看到很多具体的 PHY 芯片驱动源码。不管你的 PHY 芯片有多少特色功能按道理来讲Linux 内核的通用 PHY 驱动是绝对可以让你这 PHY 芯片实现基本的网络通信因此大家也不用担心更换 PHY 芯片以后网络驱动编写是不是会很复杂。1.3网络驱动—PHY 芯片详解LAN8720A1.3.1网络驱动—LAN8720A中断管理LAN8720A 的器件管理接口支持非 IEEE 802.3 规范的中断功能。当一个中断事件发生并且相应事件的中断位使能LAN8720A 就会在 nINT(14 脚)产生一个低电平有效的中断信号。LAN8720A 的中断系统提供两种中断模式主中断模式和复用中断模式。主中断模式是默认中断模式LAN8720A 上电或复位后就工作在主中断模式当模式控制/状态寄存器(十进制地址为 17)的 ALTINT 位为 0 时 LAN8720A 工作在主模式当 ALTINT 位为 1 时工作在复用中断模式。正点原子的 ALPHA 开发板虽然讲 LAN8720A 的中断引脚连接到了 I.MX6ULL 上但是并没有使用中断功能关于中断的具体用法可以参考 LAN8720A 数据手册的 29~30 页1.3.2网络驱动—LAN8720APHY 地址设置MAC 层通过 MDIO/MDC 总线对 PHY 进行读写操作MDIO 最多可以控制 32 个 PHY 芯片通过不同的 PHY 芯片地址来对不同的 PHY 操作。LAN8720A 通过设置 RXER/PHYAD0 引脚来设置其 PHY 地址默认情况下为 0其地址设置如表所示1.3.3网络驱动—LAN8720A时钟源nINTSEL 引脚(2 号引脚)用于设置 nINT/REFCLKO 引脚(14 号引脚)的功能。nINTSEL 配置如表所示1.3.4网络驱动—LAN8720A内部寄存器BCR(Basic Control Rgsister)寄存器地址为 0BSR(Basic Status Register)寄存器地址为 1ID 寄存器 1地址为 2ID 寄存器 2地址为 3特殊控制/状态寄存器地址为 311.4网络驱动—PHY 芯片详解SR8201F1.4.1网络驱动—SR8201F中断管理SR8201F 检测到媒介端的状态改变就会写入对应中断状态的寄存器第 0 页寄存器 14并且在中断管脚使能时中断管脚会被置低表示发生一个中断事件。当 MAC 检测到中断事件时可以通过 MDC/MDIO 端口访问到第 0 页寄存器 14 获取相应的中断状态。1.4.2网络驱动—SR8201FPHY 地址设置MAC 层通过 MDIO/MDC 总线对 PHY 进行读写操作MDIO 最多可以控制 32 个 PHY 芯片通过不同的 PHY 芯片地址来对不同的 PHY 操作。SR8201F 通过设置 LED0/PHYAD[0] 和 LED1/PHYAD[1] 这两个引脚来设置其 PHY 地址其地址设置如表所示1.4.3网络驱动—SR8201F内部寄存器BCR(Basic Control Rgsister)寄存器地址为 0BSR(Basic Status Register)寄存器地址为 1ID 寄存器 1地址为 2ID 寄存器 2地址为 31.5网络驱动—驱动框架Linux 内核使用net_device结构体表示一个具体的网络设备net_device 是整个网络驱动的灵魂。网络驱动的核心就是初始化 net_device 结构体中的各个成员变量然后将初始化完成以后的 net_device 注册到 Linux 内核中。设备数树SOC 内置网络 MAC外置 PHY 芯片这种方案我们是不需要编写什么驱动的基本可以直接使用1.5.1网络驱动—驱动框架PHY框架注册 MDIO 总线的时候也会向内核注册 PHY 设备PHY 子系统就是用于 PHY 设备相关内容的分为 PHY 设备和 PHY 驱动和 platform 总线一样PHY 子系统也是一个设备、总线和驱动模型。PHY 子系统也是遵循设备phy_device、总线MDIO、驱动phy_driver模型2. WIFI 模块3. 4G 模组3.1 4G 模组ME36303.2 4G 模组EC20

相关新闻

软考案例计算题速通:13分钟掌握EAC/ETC预测技术,稳拿6分

软考案例计算题速通:13分钟掌握EAC/ETC预测技术,稳拿6分

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:57:38 阅读更多 →
绿联CM253 USB转RS422/485全平台驱动安装与跨系统串口通信实战

绿联CM253 USB转RS422/485全平台驱动安装与跨系统串口通信实战

简介:本资源是绿联CM253 USB转RS422/485转换器的全平台驱动集成包,面向工业自动化、嵌入式开发及跨系统串口通信调试人员,解决官方未提供驱动导致设备在macOS、Windows、Linux及WinCE下无法识别的痛点。压缩包共1474个文件,涵盖Wi…

2026/11/6 7:55:52 阅读更多 →
IE 11.0 文档模式 Edge(默认值)的修改

IE 11.0 文档模式 Edge(默认值)的修改

1.按F12,或者进 设置——F12开发人员工具 2.修改文档模式,有两个地方可以直接修改,随便改一个数字就可以了,第一个地方在“仿真”工具栏下“文档模式”下选择对应的浏览器版本数字,第二个地方同样在“仿真”工具栏下…

2026/11/6 1:38:38 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/5 12:28:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/5 1:08:50 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/5 12:28:01 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/5 12:28:02 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/5 0:54:28 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/5 19:38:59 阅读更多 →

日新闻

周新闻

月新闻