1.mac控制器,phy芯片,rgmii协议
2.寄存器介绍
3.驱动源码解析
4.nanopi t2 移植rtl8211e网卡驱动(首发)
s5p4418 gmac概述
支持千兆速度,协议为RGMII。另外支持全双工,可编程控制的帧大小,MDIO主机管理接口,专用DMA控制器。图就不贴了。总架构图如下:
物理连接:
DMA相关寄存器
概括解释一下,可能有错
- register 0:总线模式寄存器,包含了数据总线的一些设置,不详细解释
- register 1:写入任何数据都可以启动DMA发送
- register 2:写入任何数据启动DMA接收
- register 3:DMA接收描述符,DMA使用这个描述符的信息进行批量数据传送,里面有状态标志和目的存放地址。
- register 4:DMA发送描述符
- register 5:状态寄存器,不解释每一位的详细含义,只读
- register 6:操作模式寄存器
- register 7:中断使能寄存器
- register 8:丢帧和缓冲区溢出控制寄存器
- register 18:当前发送描述符(由DMA再传送的时候更新这个寄存器的值)
- register 19:当前接收描述符(由DMA再传送的时候更新这个寄存器的值)
- register 20:当前发送缓冲区地址(由DMA再传送的时候更新这个寄存器的值,值来自发送描述符中的缓冲区地址)
- register 21:当前接收缓冲区地址(由DMA再传送的时候更新这个寄存器的值,值来自发送描述符中的缓冲区地址)
mac控制器相关寄存器
挑几个关键的解释(可能会说错):
- register 0:mac配置寄存器,很重要的一个配置寄存器,内容比较多,主要是配置了传输速度10M/100M/1000M、双工模式、链路使能、发送接收使能、Jabber、watchdog、CRC等等。
- register 1:帧过滤,这个可以开启网卡的混淆模式
- register 2:mac地址高32位
- register 3:mac地址低32位
- register 4:GMII管理接口,表示要访问的PHY寄存器的地址(读写PHY就靠这个)
- register 5:GMII管理接口,读写的数据
- register 16-17:需要过滤的mac地址
- register 54:主要是状态寄存器,只读,调试的时候可以读这个寄存器看看
PHY:rtl8211e寄存器
- register0:控制寄存器,有复位、loopback(回传,调试比较有用,发送的数据会发回来,验证MII接口的连通性)、速度设置(这里设置的速度不一定就是工作状态的速度,实际速度取决于PHY链路自动协商)、电源开关、双工模式。
- register1:PHY状态寄存器,主要有当前工作速度、网口连接状态、Jabber Detect(超时)
- register9-10、15:千兆状态标志,读取这个可以知道PHY是否工作在千兆模式,调整gmac速度予以匹配。