打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
千兆网口 Freescale ETSEC + Marvell 88E1111 uboot Linux 驱动分析 一
userphoto

2013.12.10

关注

在连续两个平台的ubootLinux系统移植过程中,在千兆网口调试这块都遇到了很大的麻烦。由于寄存器数量庞大,千兆网口MACPHY内部结构复杂,MACPHY接口种类多,千兆以太网驱动的调试成了系统移植过程中最让人烦心的一个环节。就像火箭队,每次都让球迷无比揪心,不是输的窝囊,就是伤兵满营,现在新赛季又两连败了,打的比勇士还勇士,后场两个比我还瘦的家伙,怎么防守。算了,不扯这么多了,今天要说的是网口MAC+PHY的一些原理和代码分析。(以FreescaleETSECMarvell88E1111为例。)

 

1 千兆以太网的物理层

 

千兆以太网的物理层分为物理编码子层PCSPhysical Coding Sublayer)、物理介质连接子层PMAPhysical Medium Attachment)和物理介质相关子层PMDPhysical Medium Dependent)三层,如下图所示:

其中PCS子层负责8b10b编码,它可以把从GMII口接收到的8位并行的数据转换成10位并行的数据输出。因为10比特的数据能有效地减小直流分量,降低误码率,另外采用8b10b编码便于在数据中提取时钟和进行首发同步。可以把PCS两头看成GMII接口和TBI接口。

PMA子层进一步将PCS子层的编码结果向各种物理媒体传送,主要是负责完成串并转换。PCS层以125M的速率并行传送10位代码到PMA层,由PMA层转换为1.25Gbps的串行数据流进行发送,以便实际能得到1Gbps的千兆以太网传送速率。可以把PMA子层的两头分别看做TBI接口和SGMII接口。

PMD子层将对各种实际的物理媒体完成接口,完成真正的物理连接。由于1000BASE-X支持多种物理媒介,如光纤和屏蔽双绞线,它们的物理接口显然不会相同。有的要进行光电转换,有的要完成从不平衡到平衡的转换。PMD层将对这些具体的连接器作出规定。

 

2 Freescale ETSECPHY之间的接口

 

FreescaleMPC8314P2020都自带了三速以太网控制器ETSEC,可以提供10M100M1000M三种速率的接口。当作为以太网时,需要外部的PHY芯片或者Serdes设备与其相连接。每个ETSEC都支持多标准的MII接口,总体结构如下图所示,可以提供GMIIRGMIIMIIRMIIRTBISGMII 六种接口,下图为从MPC8314 datasheet中截取的ETSEC的结构图。

 

     如果CPUPHY之间是GMII接口或RGMII接口,那么PHY将提供完整的PCSPMAPMD三层工作;如果CPUPHY之间是RTBI接口,那么PCS层的工作在ETSEC中已经做完了,ETSEC中的TBI模块可以做PCS层的工作,PHY只需要做PMAPMD的工作即可;如果CPUPHY之间是SGMII接口,那么PHY只需要完成PMD的工作,ETSEC中的PCSTBI完成,而PMACPU自带的Serdes模块完成。

 

3 BD表结构

在千兆以太网的驱动中,现在一般都使用一个叫BD表的东西来管理MAC层发送和接收的内存区域,如下图所示:

 

 

IMMR映射的寄存器空间中有两组寄存器TBASEnRBASEn,分别为TxBD Ringn RxBD Ringn的指针。MPC8314ETSEC允许有8TxBD Ring8RxBD Ring,他们都存放在内存的某个区域中。每个Buffer Descriptor 都是有8个字节构成,两个字节的状态,两个字节的数据长度和四个字节的数据指针,这个指针指向内存的另一块地方,这才是真正存储发送接收数据的地方。Buffer Descriptor必须在网口初始化的时候初始化,并将自己的地址赋给TBASEnRBASEn

在网口驱动程序中可以看到,每个BD Ring中的BD数量是可变的(我们设为64),而他们之间并没有指针连接,只是一段连续的空间,顺序下来的,所谓的环只是一个虚拟的概念,在最后一个BD时,需要将BD状态位中的W位(Wrap)置一,表示这是最后一个BD,他的下一个BD就是第一个BD。如下图所示:

 

 

 

下面一节将结合uboot源码分析一下网口初始化以及PHY配置的过程,再下一节会分析内核中的驱动。为什么先说uboot,因为在我看来,驱动程序就是分为两个部分,1 按照Datasheet的说明去配置寄存器,2 添加符合操作系统规范去融入操作系统。在uboot下系统很简单,代码一目了然,所以我们应该在boot下先把寄存器配置好,再去分析复杂的多的内核代码。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
FPGA千兆位收发器选择指南
第一次移植uboot(3)(添加DM9000网卡支持)
10G以太网接口的fpga实现,你需要的都在这里了
【科普】一文读懂以太网PHY芯片
AM335x支持KSZ8863调试总结
知识分享-千兆网之RGMII & SGMII解析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服