关键字rj45、pci-e

  1. 1. general

下图是网口结构简图。网口由CPU、MAC和PHY三部分组成。DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中。

对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列几种类型:

方案一:CPU集成MAC与PHY;

方案二:CPU集成MAC,PHY采用独立芯片;

方案三:CPU不集成MAC与PHY,MAC与PHY采用集成芯片;

本例中选用方案二做进一步说明,因为CPU总线接口很常见,通常都会做成可以像访问内存一样去访问,没必要拿出来说,而Mac与PHY之间的MII接口则需要多做些说明。

下图是采用方案二的网口结构图。虚框表示CPU,MAC集成在CPU中。PHY芯片通过MII接口与CPU上的Mac连接。

在软件上对网口的操作通常分为下面几步:

1)        1) 为数据收发分配内存;

2)        2) 初始化MAC寄存器;

3)        3) 初始化PHY寄存器(通过MIIM);

4) 启动收发;

  1. 2. 2MII

MII接口是MAC与PHY连接的标准接口。因为各厂家采用了同样的接口,用户可以根据所需的性能、价格,采用不同型号,甚至不同公司的phy芯片。

需要发送的数据通过MII接口中的收发两组总线实现。而对PHY芯片寄存器的配置信息,则通过MII总的一组串口总线实现,即MIIM(MII Management)。

下表列出了MII总线中主要的一些引脚

PIN Name

Direction

Description

TXD[0:3]

Mac to Phy

Transmit Data

TXEN

Mac to Phy

Transmit Enable

TXCLK

Mac to Phy

Transmit Clock

RXD[0:3]

Phy to Mac

Receive Data

RXEN

Phy to Mac

Receive Enable

RXCLK

Phy to Mac

Receive Clock

MDC

Mac to Phy

Management Data Clock

MDIO

Bidirection

Management Data I/O

MIIM只有两个线,时钟信号MDC与数据线MDIO。读写命令均由Mac发起,PHY不能通过MIIM主动向Mac发送信息。由于MIIM只能有Mac发起,我们可以操作的也就只有MAC上的寄存器。

  1. 3. DMA

收发数据总是间费时费力的事,尤其对于网络设备来说更是如此。CPU做这些事情显然不合适。既然是数据搬移,最简单的办法当然是让DMA来做。毕竟专业的才是最好的。

这样CPU要做的事情就简单了。只需要告诉DMA起始地址与长度,剩下的事情就会自动完成。

通常在MAC中会有一组寄存器专门用户记录数据地址,tbase与rbase,cpu按MAC要的格式把数据放好后,启动MAC的数据发送就可以了。启动过程常会用到寄存器tstate。

  1. 4. 4. MAC

CPU上有两组寄存器用与MAC。一组用户数据的收发,对应上面的DMA;一组用户MIIM,用户对PHY进行配置。

两组寄存器由于都在CPU上,配置方式与其他CPU上寄存器一样,直接读写即可。

数据的转发通过DMA完成。

  1. 5. 5. PHY

该芯片是一个10M/100M Ethernet网口芯片

PHY芯片有一组寄存器用户保存配置,并更新状态。CPU不能直接访问这组寄存器,只能通过MAC上的MIIM寄存器组实现间接访问。

同时PHY芯片负责完成MII总线的数据与Media Interface上数据的转发。该转发根据寄存器配置自动完成,不需要外接干预。

http://www.cnblogs.com/cute/archive/2011/04/08/2009572.html

http://blog.csdn.net/shuyong1999/article/details/7453784

http://www.cnblogs.com/jason-lu/articles/3195473.html 最详细

嵌入式驱动开发之phy---fine Mac与Phy组成原理的简单分析的更多相关文章

  1. 嵌入式驱动开发之uboot---uboot 中的常见命令参数参数

    Uboot相关命令介绍 bootm bootp cmp cp crc32 echo erase flinfo go minfo loadb loads mw 14mw 用指定的数据填充内存 15md ...

  2. 嵌入式驱动开发之dsp fpga通信接口---spi串行外围接口、emif sram接口

    -----------------------------------------author:pkf ------------------------------------------------ ...

  3. 嵌入式驱动开发之sensor---"VIP0 PortA", "VIP0 PortB", "VIP1 PortA", "VIP1 PortB",dvo0(vout1) dvo1(vout0)

    (1)vip 简介 (2)vip 电路图 (3)vip 更换采集相机输入 (4)vip 驱动 ---------------------author:pkf --------------------- ...

  4. 嵌入式驱动开发之usb 无线网卡驱动---RT2870STA dm368

    RT2870STA 368的无线网卡驱动! http://www.linuxidc.com/Linux/2014-02/96979.htm

  5. 嵌入式驱动开发之spi---spi串口通信调试

    一. 概念 SPI是 Serial Peripheral Interface(串型外部接口)的缩写.SPI接口有4根PIN脚,分别是:          * SPICLK     : 用于传输数据的同 ...

  6. 嵌入式驱动开发之dsp 算法优化vlib emcv---算法优化

    http://www.opencv.org.cn/forum.php?mod=forumdisplay&fid=9

  7. 嵌入式驱动开发之sensor---sensor 图形传感器调试

    图像传感器(image sensor)复位顺序 1. 硬件复位寄存器:2. 软件复位寄存器:3. 设置时钟寄存器:4. 设置PLL倍频:5. 设置分辨率:6. 设置窗口控制:7. 设置输出顺序:8. ...

  8. 嵌入式驱动开发之2440/2410---uboot 移植

    http://blog.chinaunix.net/uid-20620288-id-3058904.html

  9. Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置

    接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...

随机推荐

  1. Solidworks如何隐藏零件细节,如何让零件变成一个输入

    先把东西另存为IGS格式   再次打开这个IGS文件,凡是看到这个对话框都选择取消,然后确定   打开之后,还是可以看到文件结构,但是再打开每个零件都变成了输入,所以就相当于隐藏了文件细节,不知道怎么 ...

  2. 解决Android NDK 报jxxx编译找不到

    如题 解决: 引入NDK对应的arm或者x86库 如果你用的是GinyMotion模拟器,那就引入x86库 不多说了,见截图 1.选择Propertities->C/C++ General-&g ...

  3. C# 5 in a Nutshell - Delegate

    1. What is delegate in C#? A delegate is an object that knows how to call a method.A delegate type d ...

  4. 两种方法连接MySql数据库

    .用MySQLDriverCS连接MySQL数据库 先下载和安装MySQLDriverCS,在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中. ...

  5. Android 文件存储 和 权限管理

    转载请标明出处: :http://blog.csdn.net/huaiyiheyuan/article/details/52473984 android SD卡主要有两种存储方式 Internal . ...

  6. POJ 1163&amp;&amp; 3176 The Triangle(DP)

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 41169   Accepted: 24882 De ...

  7. 03-hibernate注解-关系映射级别注解-一对一

    实体之间的映射关系 一对一:一个公民对应一个身份证号码 一对多(多对一):一个人可以有多个银行账号 多对多:一个学生有多个老师,一个老师有多个学生. 一对一单向外键关联 @OneToOne(casca ...

  8. 全排列算法 --javascript 实现

    var Ann = function a(arr){ if(arr.length == 1){return arr;} var rr = new Array(); for(var i = 0; i&l ...

  9. 在windows 2012中安装sharepoint 2013时遇到问题的处理办法

    众所周知,sharepoint 2013是早于windows 2012的,所以在安装的时候,总会出现各种奇怪的问题,也就是所谓的一个个坑,为了减少大家掉到坑里的次数和排除故障的时间,我在这里记录下我曾 ...

  10. 网页中font-family的属性解析

    web中文字体的选择 web应用程序因其跨平台性被广泛应用,但是也为web应用程序运行带来了复杂的运行环境,比如各个系统字体的区别以及中英文字体显示的区别. 字体分类 网页常用字体通常分为5类:ser ...