linux网络驱动(以太网)
创始人
2024-10-22 03:35:59
0

前言

        由于最近要做一个MCU的以太网通信,学习一下以太网。由于过来实习没带MCU,只能继续做一下SOC,所以这期还是imx6ull的以太网(以下简称网络)驱动。

理论(imx6ull内置MAC外设)

         其实整个SOC网络单方通信的过程就划分为三部分:SOC---->MAC外设----->PHY芯片

        都是些什么?

        SOC其实就是我们的带操作系统的单片机(学名叫片上系统),MAC就是我们经常用的硬件IIC、SPI外设控制器,PHY就是专门用来与外部通信的芯片(这个不太了解)

        现在我们知道了,MAC作为硬件外设,一般会集成到我们的SOC芯片上,所以归根到底,就是控制MAC外设实现与PHY芯片的数据交互?        

        内部的 MAC 外设会通过 MII 或者 RMII 接口来连接外部的 PHY 芯片, MII/RMII 接口用来
传输网络数据。另外主控需要配置或读取 PHY 芯片,也就是读写 PHY 的内部寄存器,所以还
需要一个控制接口,叫做 MIDO, MDIO 很类似 IIC,也是两根线,一根数据线叫做 MDIO,一
根时钟线叫做 MDC。

        总是是这么一个过程

MII接口

        MII接口用于以太网MAC连接PHY芯片,如下图:

RMII接口

        就是 MII 接口的精简版本。 RMII 接口只需要 7 根数据线,相比 MII 直接减少了 9 根,极大的
方便了板子布线,如下图:

MDIO接口

        MDIO 全称是 Management Data Input/Output,直译过来就是管理数据输入输出接口,是一
个简单的两线串行接口,一根 MDIO 数据线,一根 MDC 时钟线。驱动程序可以通过 MDIO 和
MDC 这两根线访问 PHY 芯片的任意一个寄存器。 MDIO 接口支持多达 32 个 PHY。同一时刻
内只能对一个 PHY 进行操作,那么如何区分这 32 个 PHY 芯片呢?和 IIC 一样,使用器件地址
即可。同一 MDIO 接口下的所有 PHY 芯片,其器件地址不能冲突,必须保证唯一,具体器件
地址值要查阅相应的 PHY 数据手册。

拓展

总的硬件连线是下面这样子

PHY芯片

我们用到的PHY收发器是SR8201F

SR8201F 中断管理(此处没用到)

SR8201F 检测到媒介端的状态改变,就会写入对应中断状态的寄存器(第 0 页寄存器 14),
并且在中断管脚使能时,中断管脚会被置低表示发生一个中断事件。当 MAC 检测到中断事件
时,可以通过 MDC/MDIO 端口访问到第 0 页寄存器 14 获取相应的中断状态。
 

PHY 地址设置

SR8021F 内部寄存器

我们看寄存器,主要就是看配置寄存器和状态寄存器,如下

配置寄存器BCR,地址为0

状态寄存器BSR,地址为1

ID寄存器

SR8201F 的 PHY ID 寄存器 1 和 ID 寄存器 2,地址为 2 和 3,后面就称为寄
存器 2 和寄存器 3。这两个寄存器都是 PHY 的 ID 寄存器。 IEEE 规定寄存器 2 和寄存器 3 为
PHY 的 ID 寄存器,这两个寄存器组成一个 32 位的唯一 ID 值。

linux网络驱动框架

        Linux 内核使用 net_device 结构体表示一个具体的网络设备, net_device 是整个网络驱动的
灵魂。网络驱动的核心就是初始化 net_device 结构体中的各个成员变量,然后将初始化完成以
后的 net_device 注册到 Linux 内核中。
        net_device是一个很庞大的结构体,定义在 include/linux/netdevice.h 中,这里不在描述。

1、申请 net_device

编写网络驱动的时候首先要申请 net_device,使用 alloc_netdev 函数来申请 net_device

看到这里,感觉和前面SPI如出一辙。

待续。。。。

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...