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

这篇具有很好参考价值的文章主要介绍了【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

交换机基础知识

交换机处于网络中的位置

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

以太网帧结构

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

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

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

端口

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

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

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

二层转发原理

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

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

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

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

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

VLAN

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

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

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

典型网络接口分析

SMI

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

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

MII接口

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

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

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

RMII接口

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

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

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

其中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。信号定义如下:

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

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

时钟线:都是由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方式连接

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

为了可以进行这样的连接,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。

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

交换芯片调试过程

交换芯片SDK移植

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

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

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

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

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

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

问题背景

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

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

问题解决

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

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

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

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

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

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

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

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

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

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

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

然后测试TXEN,RXDV

TXEN:

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

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

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

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

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

查看芯片手册:

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

从芯片手册上来看,硬件同事犯了一个非常容易犯的错误,因为在RMII默认就是PHY模式,所以将TXEN,和RXDV搞反了,导致了两端的TXEN接到了对端的RXDV上,导致两端都无法收到使能信号,导致GMAC通信异常。文章来源地址https://www.toymoban.com/news/detail-477307.html

到了这里,关于【网络BSP开发经验】交换芯片驱动开发1(RTL8306MB交换芯片驱动开发)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BSP-D2000平台调试CM9434串口芯片

    原理图显示两块9434的INT分别接到D2000的GPIO0_A3和GPIO0_A5. 设备树配置:   驱动GPIO操作 不用设备树配置,驱动代码中对固定GPIO操作 #define GPIO8_A6 254 ret = gpio_request(GPIO8_A6 , \\\"gpio8_a6\\\"); if (!ret) {          printk(\\\"request for gpio8_a6 failed:%dn\\\", ret);              return 0; } gpio_direct

    2024年01月16日
    浏览(31)
  • STM32外设芯片驱动学习记录 —— (二) PCA9555 IO扩展芯片驱动开发

    一、芯片介绍 二、Datasheet解读 1.硬件说明 2.寄存器说明 3.通信过程 三、驱动代码编写 1.软件I2C驱动 2. PCA9555芯片驱动函数 总结         PCA9555可设置16路输入或输出口,I2C接口,用于IO扩展,3个硬件地址引脚寻址,工作电压:VCC(2.3V 至 5.5V)。 1)框图   INT:中断输出 A0,

    2024年02月11日
    浏览(36)
  • 基于RTL8376+RTL8218B的16端口千兆非网管交换机设计

    前段时间,做了一个外包项目,在通信设备的背板上,设计16端口的交换机,实现网络数据包在背板上的交换功能。 网上搜索了一下,有人提示用RTL8376+RTL8218B,可以实现16端口的千兆网线速。 在这个基础上做开发,开发阶段遇到的问题: 芯片资料非常少。基本上只能找到d

    2024年02月09日
    浏览(39)
  • RTL8201 以太网PHY芯片 调试记录

    为了尽量给甲方降低成本,决定使用较低成本的PHY芯片RTL8201F-VB-CG芯片。移植官网的以太网demo程序,git上下载了一份很好看的rtl8201F的驱动程序,用来替换官方demo的lan8742程序。并没有直接通,于是开始了调试之路。 芯片型号:stm32h753 官网例程文件名:STM32Cube_FW_H7_V1.10.0 使用

    2023年04月20日
    浏览(33)
  • Linux 网络驱动实验(PHY芯片LAN8720)

    和自己工作的IOT项目类似。项目里使用AWS的框架,分为linux系统和freertos系统。Freetros里需使用AT指令驱动4g,不同的模组驱动有差异,需自己实现模组AT驱动然后注册到AWS框架里面。 网络驱动是linux 里面驱动三巨头之一,linux 下的网络功能非常强大,嵌入式linux 中也常常用到网

    2024年02月06日
    浏览(33)
  • Linux 有线网络驱动实验(PHY芯片LAN8720)

    和自己工作的IOT项目类似。项目里使用AWS的框架,分为linux系统和freertos系统。Freetros里需使用AT指令驱动4g,不同的模组驱动有差异,需自己实现模组AT驱动然后注册到AWS框架里面。 网络驱动是linux 里面驱动三巨头之一,linux 下的网络功能非常强大,嵌入式linux 中也常常用到网

    2024年02月04日
    浏览(40)
  • 【芯片设计- RTL 数字逻辑设计入门 6 -- 带同步复位的D触发器 RTL实现及testbench 验证】

    同步复位 :复位只能发生在在clk信号的上升沿,若clk信号出现问题,则无法进行复位。 Verilog 代码 testbench 代码 编译及仿真 波形如下 : 从波形可以看到,在第100ns后,第一个 clk 时钟沿变化时 q 的信号和 d 的信号保持一样,后面依次如此。 问题小结 在写 testbench 测试的时候

    2024年02月19日
    浏览(42)
  • 嵌入式音频开发:Codec芯片ES8311的驱动开发

    嵌入式音频开发:Codec芯片ES8311的驱动开发 随着物联网和嵌入式系统的快速发展,嵌入式音频设备的需求也越来越高。Codec芯片作为嵌入式音频处理的核心组件之一,能够实现音频采集、编码、解码等功能。本文将重点介绍如何进行Codec芯片ES8311的驱动开发,以满足嵌入式音频

    2024年02月04日
    浏览(39)
  • STM32驱动CH9121网络串口透传芯片

    目录 一.介绍 二.配置 1.搜索配置  基础设置 端口设置 2.串口配置 ①CFG脚进入配置: ②串口协商进入: 三、使用CH9121 四、测试 关于CH9121的资料和配置软件 :提取码:3fxd 网络串口透传芯片CH9121,官网资料:网络串口透传芯片CH9121 这里摘取一些简介 CH9121 集成TCP/IP 协议栈,

    2024年02月10日
    浏览(30)
  • 制作基于RTL8367实现8+2POE千兆交换机

    本文主要讲述制作千兆POE交换机的过程以及制作的过程中的踩坑点。 简单来说就是信息交互的设备 在1.0版本中,为了方便调试,我将板子做大,大约18*17左右,还做了POE供电部分的接插板。由于1.0版本是尝试版本,我们是将板子拿回来自己焊接,在焊接测试过程中,我遇到了

    2024年02月05日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包