Marvell交换芯片88E6321/88E6320驱动总结-硬件篇

2023-05-16

芯片特性

  • Marvell 88E6321/88E6320 是一个7-Port千兆以太网交换芯片。支持最新的IEEEE802.1 Audio Video Bridging标准。
  • 芯片包含两个10、100、1000三速以太网收发器(PHYs),两个千兆SERDES,三个数字接口(GMII\RGMII\MII组合)。
  • 芯片采用Marvell动态队列限制(Dynamic Queue Limit ),实现高速无阻塞4级QOS交换结构。包含一个高性能地址查询引擎,多达支持8K个节点和1Mbit的帧缓存。
  • 内部MAC单元符合标准的IEEE802.3,最大支持10KByte帧长。
  • 包含一个TCAM-based策略控制列表(TCAM-based Policy Control List)引擎,支持256条规则(仅88E6321支持)。
  • 芯片的RGMII(或MII/RMII)接口支持直接连接管理器件或者路由器CPU作为MAC使用。2、6Port可以设置支持完整GMII接口。
  • 千兆SERDES接口支持SGMII、1000BASE-X、100BASE-FX。
  • PHY单元支持802.3az 节能以太网(Energy Efficient Ethernet)。
  • 内部PHY单元、MAC单元均支持完整IEEE802.3标准。
  • 支持帧唤醒和帧时间侦测唤醒功能,允许在连接cpu是进入睡眠模式,以达到降低系统功耗目的。
  • 多达6个LED,可以通过寄存器配置相应功能。
  • 可以使用SMI接口和以太网帧对芯片进行配置,也可以使用EEPROM进行配置。
  • 支持8K条MAC地址自动学习和老化功能。
  • 支持25MhzXTAL时钟源。

结构框图

结构框图
从结构框图可以看出:

  • Port2、5、6可以配置为MAC模式或者PHY模式,均支持RGMII/RMII/MII,2、6Port还支持GMII。
  • Port3、4支持10、100、1000M自适应以太网接口。
  • Port0、1支持100M、1000M光口(SFP)。

引脚定义

引脚定义
从引脚定义可以看出,许多引脚都有多种功能,这些复用的功能大多在RESETn为低电平时有效,RESETn上升沿时锁存。

1.NO_CPU模式选择:

在复位状态下(RESETn = low)时,设置NO_CPU引脚电平后,RESETn上升沿将锁存引脚电平。若此时NO_CPU=0则表示芯片由CPU控制,NO_CPU=1则表示芯片非CPU控制。
在NO_CPU=0模式下,所有的Port在初始化时都被关闭,PHY的供电关闭,使得CPU可以在芯片工作前进行启动与配置,该引脚内部上拉,默认上电所有Port打开。
为了方便,可以将NO_CPU置为1进行调试,调试通过后,考虑低功耗处理时,可以采用NO_CPU=0模式,以屏蔽不需要打开的Port。

2.P5和P2、6的模式选择(以P5为例):

P5_OUT[3:0]为多功能引脚,在复位状态下(RESETn = low),引脚为输入状态,此时可以设置引脚电平(P5_MODE[2:0])来决定该端口的工作模式(见下图),在设置好引脚电平后,RESETn上升沿过程中将会锁存引脚电平,进入对应的工作模式。
P5模式
该引脚内部上拉,默认工作模式为RGMII,对于其他模式,可以在硬件上直接串4.7K电阻到GND来进行配置,我这里设置为0x04RMII模式,因此P5_MODE[1:0]引脚通过4.7K电阻接地。
RMII
在NO_CPU=1模式下,P5_CRS,P5_COL作为MDC_PHY,MDIO_PHY功能使用用于管理外接的SMI从设备(如外部PHY),否则为GPIO[8:7]使用。

3.寻址模式

由于88E6321本身功能强大,即可以做MAC也可以做PHY(2个Port)、SERDES(2个Port),因此虽然只是一个芯片,但却可以看作多个设备,这将面临一个地址确定的问题,如何给片内PHY、SERDES、MAC分配地址。为了解决这个问题,88E6321有两种芯片寻址模式:单芯片寻址与多芯片寻址。
通过在复位状态时设置ADDR[4:0]n引脚的电平可以设置设备地址(需要注意的是,ADDR所设置的地址为实际SMI地址的反码,即ADDR=0x1F对应的实际SMI地址为0x00,,ADDR=0x00对应的实际SMI地址0x1F,这点在下文中需要注意)。
寄存器

  • 单芯片寻址模式:
    当ADDR[4:0]n=0x1F时,进入单芯片寻址模式,此时通过内部地址直接访问,在这个模式下,88E6321会响应所有的32个SMI地址,因此必须确保他是惟一的SMI从设备,在设备寄存器映射图中,SMI设备地址0X10-0X16(对应Port0-Port7),0X1B-0X1D(对应特殊寄存器Global1-3)是可以直接访问的,而地址0X03、0X04(对应Port3、4的PHY)、0X0C、0X0D(对应Port0、1的SERDES)则需要使用Global2地址的SMI PHY CommandSMI PHY Data两个寄存器进行间接访问。
  • 多芯片寻址模式:
    当ADDR[4:0]n!=0x1F时,则进入多芯片寻址模式,此时,88E6321只会响应ADDR设置的地址的反码,同时仅有两个寄存器可以直接访问(SMI Command寄存器与SMI Data寄存器),其他寄存器则通过这两个寄存器间接访问(包括在单芯片寻址模式下间接访问的寄存器)。

4.从SMI接口

当88E6321作为SMI从设备时,主控可以通过这个接口(MDC_CPU与MDIO_CPU)对88E6321进行管理。
MDC_CPU最高支持20MHz,MDIO_CPU需要外接一个4.7K到10K的上拉电阻。需要注意的是,该接口在INTn为低电平时才可以通信。
INTn为中断引脚,用于指示未被掩码屏蔽的中断是否产生。由于该引脚为开漏输出,且低电平有效,因此必须在其外部上拉,这样在未发生中断的情况下,始终未高电平。同时,该引脚低电平有效时也意味着SMI接口可以使用。(上电过程中,芯片会从外挂的EEPROM(如果有的话)加载寄存器设置,然后发出EEPROM处理完成中断,拉低INTn)

5.PHY接口

Port3、Port4支持10/100/1000三速PHY,支持IEEE标准中的10BASE-T,100BASE-TX,1000BASE-T。

6.SERDES接口

Port0、Port1是SERDES接口,可以通过配置选则其工作模式:

  • 连接Marvell的三速PHY
    SERDES可以配置为三速PHY接口,用于连接外部PHY,此时SERDES使用SGMII协议,
  • 连接到1000BASE-X的光纤模块
  • SGMII接口
    通过设置Px_SMODE引脚电平可以配置SERDES工作模式:
    Px_SMODE
  • 与其他Marvell交换芯片级联

LED接口

88E6321采用矩阵LED接口,使得每个PHYPort都能分配到2个LED。LED的阴极都连接到一条行信号线上(Rx_LED),阳极连接到列信号线上(Cx_LED)。LED引脚能够形成3行2列的矩阵LED。
LED映射如下图:
LED映射
典型电路连接图:
电路连接图
LED行信号(Cx_LED)与EEPROM共用,采用时分多路复用来避免LED与EEPROM操作的互相干扰。

  • LED选项
    通过对各自Port的LED Control寄存器(offset=0x16)进行配置,可以设置各个LED的功能:
    LED选项
  • 上电参数设置
    LED上电后的初始化功能可以由LED_SEL[1:0]来配置,这些硬件内部上拉,默认是0x03,可以复位状态通过外接下拉4.7K电阻,来改变初始配置。
    1.LED_SEL[1:0]=0x03
    一个LED显示网络连接(Link)与网络活动(Activity),另一个LED用于显示更高速率的连接(Gig Link)。
    LED03
    2.LED_SEL[1:0]=0x02
    一个LED显示千兆网络连接与网络活动,另一个LED用于显示10/100M网络连接与网络活动.
    LED02
    3.LED_SEL[1:0]=0x01
    用于双色或三色LED,不同颜色显示不同网络速率下的网络连接与网络活动。
    LED01
    4.LED_SEL[1:0]=0x00
    用于单LED显示,通过不同的闪烁频率来表示不同网络速率,连接,网络活动。默认的闪烁频率如下:1Gbps:84ms,100Mbps:170ms,10M:340ms。
    LED00
    以上是88E6321关于硬件相关的介绍。

我这里使用stm32通过RMII连接至88E6321的Port5,Port4连接电口以太网,Port5连接SFP光口以太网。

不同于一般的功能单一的PHY器件(如LNA8720A),88E6321的PHY相关寄存器操作相对较复杂,具体操作方法见后续介绍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Marvell交换芯片88E6321/88E6320驱动总结-硬件篇 的相关文章

  • 内核驱动中断申请类型及函数分析

    ret 61 request irq chip gt irq xxx intr handler IRQF TRIGGER FALLING IRQF NO THREAD IRQF NO SUSPEND name chip 上面是中断初始化中调
  • I2C设备注册的4种方法

    文章目录 前言一 静态注册二 动态注册三 用户空间注册四 i2c驱动扫描注册 前言 I2C设备的4种添加方法 xff1a 1 xff09 静态注册 2 xff09 动态注册 3 xff09 用户空间注册 4 xff09 i2c驱动扫描注册
  • pm_wakeup.h

    pm wakeup h Power management wakeup interface Copyright C 2008 Alan Stern Copyright C 2010 Rafael J Wysocki Novell Inc T
  • GTK+ Reference Manual

    GTK 43 Reference Manual for GTK 43 2 6 2 Table of Contents I GTK 43 Overview Compiling the GTK 43 libraries How to compi
  • Linux获取进程列表

    实现思路是 xff1a 遍历 proc目录下的所有进程描述文件夹 xff0c 从而获取进程列表 代码如下 xff1a include lt stdio h gt include lt dirent h gt include lt unist
  • ubuntu18.04 下firefox 不能 播放视频,因为默认未安装FLASH插件。(当然只是原因之一)

    ubuntu18 04 下firefox 不能 播放视频 xff0c 默认未安装FLASH插件 终端输入 xff1a sudo apt get install flashplugin nonfree
  • Ubuntu上可使用的15个桌面环境

    Ubuntu上可使用的15个桌面环境 发布者 红黑魂 来自 Ubuntu之家 摘要 Linux下桌面环境很多 xff0c Ubuntu之家给大家总结了比较常用的15个桌面环境 xff0c 并附上Ubuntu 12 10 xff08 Linu
  • C语言数据类型

    数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作 数据类型包括原始类型 多元组 记录单元 代数数据类型 抽象数据类型 参考类型以及函数类型 本文主要以51单片机中的数据类型为中心而展开的话题 在keil C51或者ia
  • 《Cortex-M0权威指南》之Cortex-M0技术综述

    Cortex M0权威指南 之Cortex M0技术综述 转载请注明来源 xff1a cuixiaolei的技术博客 Cortex M0 处理器简介 1 Cortex M0 处理器基于冯诺依曼架构 xff08 单总线接口 xff09 xff
  • xos详解5:PendSV_Handler

    PendSV Handler PendSV Handler LDR R2 61 OSTcbCurr 不必关中断 嵌套中断发生时会自动保存 R0 R3 到 MSP 并恢复 LDR R0 R2 如果发生咬尾的多个 PendSV xff0c 上半
  • M0最高优先级的中断设计

    1 Reset 3 Highest Reset 绝大部分处理器设计时 xff0c 将复位中断放在最高优先级 一般来说这样设计是合理的 xff0c 个人认为在某些应用场景这样处理仍有局限性 2 NMI 2 Nonmaskable interr
  • 如何从零开始写一个操作系统?

    首页发现等你来答 登录加入知乎 如何从零开始写一个简单的操作系统 xff1f 关注问题 写回答 操作系统 编程学习 如何从零开始写一个简单的操作系统 xff1f 看了这个 xff1a 从零开始写一个简单的操作系统 求指教 关注者 4 787
  • 每次听到同事跳槽后的薪资,我就像打了鸡血一样

    本文总结了现阶段 34 大龄程序员 34 的职业生存状况 xff0c 内容包含职位需求量 xff0c 议价能力如何以及如何度过传说中的 34 中年危机 34 等等 xff0c 供大家参考 xff01 值此金 三 银四跳槽季 的开端 xff0
  • Lua性能优化—Lua内存优化

    原文链接https blog uwa4d com archives usparkle luaperformance html 这是侑虎科技第236篇原创文章 xff0c 感谢作者舒航供稿 xff0c 欢迎转发分享 xff0c 未经作者授权请
  • Jetson Xavier NX(emmc)烧录系统时可能遇到的问题(避坑)

    目录 Ununtu18虚拟机无法联网 当NX接上电源后 xff0c 指示灯没有亮 xff08 不工作 xff09 在登陆SDK时 xff0c 可能会出现卡在初始界面的情况 在烧录镜像时 xff0c 可能会卡在该处没有变化 Ununtu18虚
  • 互斥量、条件变量与pthread_cond_wait()函数的使用,详解(一)

    1 首先pthread cond wait 的定义是这样的 The pthread cond wait and pthread cond timedwait functions are used to block on a conditio
  • STAR法则写简历

    STAR 法则是在面试 xff0c 求职 xff0c 写简历时候的常用利器 虽然常用 xff0c 但是我想知道的人一定很少很少 xff0c 不然为什么那么多人面试的时候犯那么低级的错误呢 xff1f STAR法则无法帮你提高你的实力 xff
  • 论文发表为什么不可以一稿多投呢

    论文发表为什么不可以一稿多投呢 很多作者在担心投一家杂志会被拒稿 xff0c 就会选择一篇稿件投多家期刊的方法 xff0c 大家应该或多或少都听过不能一稿多投 xff0c 但具体原因是什么大家知道吗 一稿多投会有什么后果 一稿多投是自稿件发
  • ROS下视频消息发布与订阅

    https download csdn net download v7xyy 10869743 下下来后 1 发布视频消息 rosrun video transport tutorial video publisher xff08 节点 c
  • ros中标志位设计(4)

    由于需要涉及控制权的交接事件 xff0c 需要通过标志位的方式进行设计 首先需要自定一个标志位的信息在ros中用于标志位信息的发布 下面是用于标志位的头文件Flag h Generated by gencpp from file xx ms

随机推荐

  • 全球最贵域名Sex.com将再度出售

    金融时报消息称 xff0c Sex com域名曾位居全球最贵域名前例 xff0c 四年前 xff0c 它以1400万美元成交 xff0c 不过 xff0c 买下此域名的公司面临破产 xff0c 因此Sex com将再度拿来出售 Sex co
  • 微信消息推送消息加解密(golang)

    本篇介绍如何使用golang对微信消息推送进行加解密 xff0c 后续会补充 xff0c 目前先写个原理 xff0c 大概自己看一下 xff0c 其他的自己应该也能写 老套路 xff0c 分为三步 xff0c 为啥写 xff0c 教程 xf
  • C++数据可视化MathGL使用简示

    C 43 43 数据可视化 MathGL 使用指南 效果演示 搭建环境与依赖项 Windows10 64位 VS2017 Zlib1 2 11 xff08 已编译好的可用版本已集成在我后面的项目链接里 xff09 libpng1 6 37
  • 飞思卡尔智能车——舵机及PID控制

    本篇博客已迁移至 xff1a 飞思卡尔智能车 舵机及PID控制 请帮个忙 xff0c 去新地址访问 xff1a xff09 舵机 xff1a 小车转向的控制 机构 也就是控制小车的转向 它的特点是结构紧凑 易安装调试 控制简单 大扭力 成本
  • Github Actions + Docker实现HTML静态前端页面CICD部署

    使用 Github Actions 可以实现 CICD 自动构建部署 简单来说就是你只需要执行 git push 命令 xff0c 你服务器上的网页就可以自动部署更新 xff0c 无需你执行编译指令 前置环境 服务器一台 xff0c 我的是
  • Ubuntu显示“submodule(s) are missing“或“子模块未对路径注册“解决方案

    最近测试openMVG的三维重建效果 xff0c 于是在github下克隆openMVG的库 xff0c git clone过程成功进行 xff0c 但是在build文件夹下cmake的时候error occured 错误显示 34 sub
  • 互斥量、条件变量与pthread_cond_wait()函数的使用,详解(二)

    1 Linux 线程 进程与线程之间是有区别的 xff0c 不过Linux内核只提供了轻量进程的支持 xff0c 未实现线程模型 Linux是一种 多进程单线程 的操作系统 Linux本身只有进程的概念 xff0c 而其所谓的 线程 本质上
  • 网易视频云:流媒体服务器原理和架构解析

    网易视频云 是网易公司旗下的视频云服务产品 xff0c 以Paas服务模式 xff0c 向开发者提供音视频编解码SDK和开放API xff0c 助力APP接入音视频功能 今天 xff0c 网易视频云的技术专家给大家分享一篇流媒体技术性文章
  • MATLAB语言中int函数

    在MATLAB语言中 xff0c 求符号函数的定积分是使用int函数 xff0c 其调用格式如下 xff1a int F x a b a表示定积分的下限 xff1b b表示定积分的上限 xff1b 上式表示 xff0c 被积函数F在区间 a
  • matlab中的subs函数用法

    matlab中subs 是符号计算函数 xff0c 表示将符号表达式中的某些符号变量替换为指定的新的变量 xff0c 常用调用方式为 xff1a subs S OLD NEW 表示将符号表达式S中的符号变量OLD替换为新的值NEW 下面具体
  • Android配置临时ipv6地址

    Google公网DNS 2001 4860 4860 64642001 4860 4860 64 ifconfig wlan0 inet6 add IPV6ADDR ifconfig wlan0 inet6 add 2001 4860 48
  • MFC:pic控件的矩形的left、right、top、bottom 坐标位置

    CRect rect 然后 获取矩形控件 那么这个矩形控件的左上 和右下 分别对应 xff0c left xff0c top xff1b right xff0c bottom left xff0c top为左上角的点坐标 right xff
  • ubuntu下对sd卡 分区和格式化 挂载sd卡

    一 sd卡分区和格式化 1 查看自己的设备号 命令 xff1a mount 可以看到 最后一行即为sd卡的挂载目录 2 umount 由于sd卡插上之后会自动mount xff0c 所以需要unmout 命令 xff1a umount 路径
  • linux c 线程间同步(通信)的几种方法--互斥锁,条件变量,信号量,读写锁

    Linux下提供了多种方式来处理线程同步 xff0c 最常用的是互斥锁 条件变量 信号量和读写锁 下面是思维导图 xff1a 一 互斥锁 xff08 mutex xff09 锁机制是同一时刻只允许一个线程执行一个关键部分的代码 1 初始化锁
  • IMX头部详细解析之一 头部组成

    镜像组成 完整的imx镜像由以下四部分组成 xff1a Image Vector Table xff08 映像向量表 xff09 Boot Data xff08 启动数据 xff09 Device Configuration Data xf
  • IMX头部详细解析之二 头部生成工具

    前言 在之前的文章中 xff0c 介绍了imx的头部组成部分 xff0c 本文将介绍u boot如何通过mkimage工具构建imx的头部 正文 在imx6平台上进行裸机程序开发时 xff0c 通常需要添加imx头部信息 xff0c 才能使
  • Linux命令查询工具 O-LinuxCmd

    Linux命令查询工具 O linuxCmd 前言 一直以来 xff0c 遇到不熟悉的Linux命令都会直接百度 xff0c 找到一些命令查询网站再进行查询 xff0c 比如这个man linuxde net网站就很不错 虽然加入收藏夹就能
  • 嵌入式Linux利用ppp实现4G模块联网

    之前做项目时需要用到SIM7100模块 xff0c 便快速了解下ppp拨号 xff0c 实现了功能 xff0c 但是功能虽然实现了 xff0c 却依然有许多疑问 xff0c 这段时间有点时间 xff0c 打算更加详细的研究下 编译ppp2
  • O-ComTool V2.0.0串口调试工具

    O ComTool V2 1 0更新 xff0c 点击访问 O ComTool V2 0 0 简介 本次更新带来了 船新 的串口助手 xff0c 相较于V1 0 0版本 xff0c 代码重构 xff0c 添加了更多实用功能 xff0c 如
  • Marvell交换芯片88E6321/88E6320驱动总结-硬件篇

    芯片特性 Marvell 88E6321 88E6320 是一个7 Port千兆以太网交换芯片 支持最新的IEEEE802 1 Audio Video Bridging标准 芯片包含两个10 100 1000三速以太网收发器 xff08 P