【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发) 您所在的位置:网站首页 交换机原理图注意点 【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发)

【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发)

#【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发)| 来源: 网络整理| 查看: 265

文章目录 交换机基础知识交换机处于网络中的位置以太网帧结构端口二层转发原理VLAN 典型网络接口分析SMIMII接口RMII接口GMII接口 典型交换芯片分析RTL8306MB 交换芯片调试过程交换芯片SDK移植问题背景问题解决

交换机基础知识 交换机处于网络中的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzIAZnbW-1678890143298)(image/驱动开发学习13交换芯片开发/1675856042249.png)]

以太网帧结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mm7MPlIj-1678890143298)(image/驱动开发学习13交换芯片开发/1675856166581.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B74TPh2F-1678890143299)(image/驱动开发学习13交换芯片开发/1675856211989.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-taqk0Cd8-1678890143299)(image/驱动开发学习13交换芯片开发/1675856241083.png)]

端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JGym2LuS-1678890143300)(image/驱动开发学习13交换芯片开发/1675856272949.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BTGOFPDx-1678890143300)(image/驱动开发学习13交换芯片开发/1675856302211.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SaJKPnb4-1678890143300)(image/驱动开发学习13交换芯片开发/1675856322129.png)]

二层转发原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GeNfnFmJ-1678890143300)(image/驱动开发学习13交换芯片开发/1675856355680.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtNjA4Us-1678890143301)(image/驱动开发学习13交换芯片开发/1675856377399.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6AlXHP1k-1678890143301)(image/驱动开发学习13交换芯片开发/1675856393633.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uwkl9m4y-1678890143301)(image/驱动开发学习13交换芯片开发/1675856432980.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g3pRlF1D-1678890143302)(image/驱动开发学习13交换芯片开发/1675856454445.png)]

VLAN

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

典型网络接口分析 SMI

SMI 是MMI管理总线具有 MDIO和MDC两根线,它允许带有smi的外部设备控制PHY的状态以及内部寄存器。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cgmyhpFi-1678890143305)(image/驱动开发学习13交换芯片开发/1675857461740.png)]

MII接口

MII(Media Independent interface)即介质无关接口,它是IEEE-802.3定义的行业标准,是MAC与PHY之间的接口。MII数据接口包含16个信号和2个管理接口信号,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j5F8URWO-1678890143305)(image/驱动开发学习13交换芯片开发/1678433133794.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DHrHQgSf-1678890143305)(image/驱动开发学习13交换芯片开发/1678433173162.png)]

RMII接口

RMII接口有12个信号线,节省了一半的数据线 ,主要包括四个部分。一是从MAC层到物理层的发送数据接口,二是从MAC层到物理层的接收数据接口,三是物理层与MAC层之间时钟接口,四是MAC层和物理层之间数据管理的MDIO/MDC接口。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eduz8sBF-1678890143305)(image/驱动开发学习13交换芯片开发/1678431840207.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-34nSHUbs-1678890143306)(image/驱动开发学习13交换芯片开发/1678433209732.png)]

其中CRS_DV是MII中RX_DV和CRS两个信号的合并,当物理层接收到载波信号后CRS_DV变得有效,将数据发送给RXD。当载波信号消失后,CRS_DV会变为无效。在100M以太网速率中,MAC层每个时钟采样一次RXD[1:0]上的数据,在10M以太网速率中,MAC层每10个时钟采样一次RXD[1:0]上的数据,此时物理层接收的每个数据会在RXD[1:0]保留10个时钟。

GMII接口

GMII(Gigabit Media Independant Interface),千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传输速率可达1000Mbps。同时兼容MII所规定的10/100 Mbps工作方式。GMII接口数据结构符合IEEE以太网标准,该接口定义见IEEE 802.3-2000。信号定义如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ytadFdxY-1678890143306)(image/驱动开发学习13交换芯片开发/1678433386429.png)]

综合分析网络接口都具有几根共性的线:

时钟线:都是由PHY侧向MAC侧提供时钟

SMI线:管理PHY寄存器

RXDV: PHY侧向MAC侧告知数据发送

TXEN:MAC侧向PHY侧告知数据发送

典型交换芯片分析

CPU集成MAC外接switch芯片,switch内部一般是N个PHY和N+1个MAC,通过CPU的MAC与Switch的MAC使用MII/RMII等接口MAC-MAC方式连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZWaUb0IP-1678890143306)(image/驱动开发学习13交换芯片开发/1678438731786.png)]

为了可以进行这样的连接,switch与CPU连接的那个MAC口通常可以配置成PHY模式,这个时候从CPU的角度来看,switch与之连接的端口可以看成一个PHY。

RTL8306MB

RTL8306MB-CG是6端口10 / 100M以太网交换机控制器,将用于10Base-T和100Base-TX操作的内存,六个MAC和五个物理层收发器集成到单个芯片中。它支持(T)MII / RMII接口,以使外部设备连接到第六个MAC。外部设备可以是路由引擎,HomePNA,HomePlug或VDSL收发器,具体取决于应用程序。

特征: 基本切换功能 具有存储器和收发器的6端口开关控制器,用于10Base-T和100Base-TX 无阻塞线速收发,无阻塞头转发 兼容IEEE 802.3 / 802.3u自动协商 内置用于数据包缓冲区的高效SRAM,具有2K条目查找表 2048字节最大数据包长度 完全支持流量控制 半双工:背压流量控制 全双工:IEEE 802.3x流控制 支持与外部MAC或PHY的(T)MII / RMII接口连接

支持最多16个VLAN,并且支持VLAN学习,带有四个独立的IVL过滤。

RTL8306MB可以通过硬件管脚将MAC5 配置成三种模式:MAC MODE(MII ) , PHY MODE(MII) ,RMII MODE。

在这里插入图片描述

交换芯片调试过程 交换芯片SDK移植

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6rLUE3O-1678890143306)(image/驱动开发学习13交换芯片开发/1678434225792.png)]

其中RTL8306E管理接口为MDC/MDIO,MDC为时钟,MDIO为传输数据…源代码使用两个GPIO引脚来模拟MDC/MDIO信号。将此驱动程序移植到客户平台需要创建文件mdcmdio.c和mdcmdio.h。在这些文件中, 需要实现smi通信逻辑 。如果已经有SMI读写接口再包装一层即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-na1kPJKb-1678890143306)(image/驱动开发学习13交换芯片开发/1678434501189.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rD7yCsFR-1678890143307)(image/驱动开发学习13交换芯片开发/1678434514692.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5P3w4Az-1678890143307)(image/驱动开发学习13交换芯片开发/1678434541515.png)]

此外还要注意另一个问题,即在SMI读取和写入期间,防止CPU被打断 ,因此在SMIREAD和SMIWRITE中,需要关闭中断以及调度。

问题背景

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z6BR6ygT-1678890143307)(image/驱动开发学习13交换芯片开发/1678437814211.png)]

在这个项目中的rtl8306MB的mac5 就是被配置成RMII MODE ,首先在进行SMI总线调试的时候非常顺利,可以使用SMI读出chipid , 读写交换芯片配置信息。但是在调试RMII总线的过程中发现switch的MAC5没有任何收发包的记录,cpu也没有任何收发包的记录。所以就准备先用示波器寻找原因。

问题解决

我们首先判断RTL8306MB没有配置成RMII模式,也就是说时钟可能没有通过时钟线从RTL8306MB芯片传输到CPU中,所以首先通过示波器读取时钟信号,在硬件上需要断开时钟信号,然后分别读取时钟线两边的信号:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrUCjYbP-1678890143307)(image/驱动开发学习13交换芯片开发/1678435853921.png)]

读取后发现switch侧有50M时钟,MAC侧无时钟,说明RMII模式配置正常。

然后读取数据线上的数据,因为数据线是独立的,所以每一边只要测差分信号的其中一根就行:

我们首先通过电脑向switch芯片发包然后读取switch芯片和CPU之间的 TXD数据线:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUPDG6UI-1678890143307)(image/驱动开发学习13交换芯片开发/1678436146396.png)]

然后使用cpu通过发包函数,向switch发包:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-949A7oF6-1678890143307)(image/驱动开发学习13交换芯片开发/1678436192826.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-URrvKNh2-1678890143307)(image/驱动开发学习13交换芯片开发/1678436203179.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mJCLnI1-1678890143308)(image/驱动开发学习13交换芯片开发/1678436214526.png)]

发现 两边的数据线上都是有数据的,这就说明两边都是正常进行发送的。

然后测试TXEN,RXDV

TXEN:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0R5NFEQ-1678890143308)(image/驱动开发学习13交换芯片开发/1678436291215.png)]

发现TXEN有信号,而RXDV一直没有信号。

所以判断硬件上是不是将TXEN和对端的RXDV 接了起来,为了判断是否是这个问题,我们将TXEN线上的串阻卸下然后在串阻的两端同时检测到使能信号:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7KvARrZQ-1678890143308)(image/驱动开发学习13交换芯片开发/1678437114418.png)]

所以MAC侧和PHY侧的使能信号竟然同时出现在了TXEN信号上。所以就可以确定就是将两端的TXEN和RXDV接起来了。飞线之后发现GMAC收发包正常。

查看芯片手册:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GXOWJvPc-1678890143308)(image/驱动开发学习13交换芯片开发/1678437496966.png)]

从芯片手册上来看,硬件同事犯了一个非常容易犯的错误,因为在RMII默认就是PHY模式,所以将TXEN,和RXDV搞反了,导致了两端的TXEN接到了对端的RXDV上,导致两端都无法收到使能信号,导致GMAC通信异常。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有