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如出一辙。

待续。。。。

相关内容

热门资讯

辅助透视!aapoker怎么设... 辅助透视!aapoker怎么设置抽水,aapoker怎么开辅助器,我来教教你(有挂方法)1、每一步都...
透视新版!aapoker怎么设... 透视新版!aapoker怎么设置抽水,aapoker真的假的,规律教程(有挂规律);1、aapoke...
透视工具!aapoker辅助怎... 透视工具!aapoker辅助怎么用,aapoker怎么设置提高好牌几率,揭秘攻略(有挂细节);在进入...
透视有挂!aapoker透视脚... 透视有挂!aapoker透视脚本,aapoker辅助器怎么用,技巧教程(有挂黑科技);1、金币登录送...
透视能赢!aapoker公共底... 透视能赢!aapoker公共底牌,aapoker安装包怎么使用,必赢方法(有挂教程)1、让任何用户在...
透视好牌!aapoker俱乐部... 透视好牌!aapoker俱乐部靠谱吗,aapoker插件,AA德州教程(有挂辅助)aapoker俱乐...
透视计算!aapoker插件下... 透视计算!aapoker插件下载,aapoker破解侠是真的吗,揭秘攻略(有挂方法)1、不需要AI权...
透视新版!aapoker ai... 透视新版!aapoker ai插件,aapoker辅助软件合法吗,攻略教程(有挂攻略)进入游戏-大厅...
透视挂!aapoker怎么拿好... 透视挂!aapoker怎么拿好牌,aapoker真的假的,可靠教程(有挂揭秘)1、超多福利:超高返利...
透视挂!aapoker插件,a... 透视挂!aapoker插件,aapoker插件下载,必胜教程(有挂黑科技)1、点击下载安装,aapo...