phy芯片没有接网线时,时钟输出不对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phy芯片没有接网线时,时钟输出不对相关的知识,希望对你有一定的参考价值。

参考技术A 方法/步骤分步阅读

1

/12

PTP 授时同步原理时间同步含义是指按照接收到的标准时间通过调整频率和相位来调整被授时设备内部的时钟。时钟的相位用数值表示出来其实就是我们所说的时刻。时间同步有授时和守时两大主要功能,通俗的说,授时就是“对表”,通过不定期地对表动作,将本地时间与标准时间进行相位同步;守时即是在对表的间隙里,本地时间与标准时间之间不能出现太大的偏差。

2

/12

PTP 授时原理为在同一个局域网中, 主时钟周期性地发送时间同步报文, 从时钟接收该同步报文, 同时随机性的给主时钟发送延迟请求报文, 然后通过同步算法调整自身时钟的偏差。

3

/12

从主时钟所在的系统中由 PTP 协议进行组包同步数据流, 然后经过传输层, 网络层, 数据链路层。网络多播负责将数据流发送给交换机, 交换机将转发该数据报文到同一个多播组, 同一个多播组的从时钟将接收到该同步报文, 从链路层传送送到 PTP 协议层进行解包处理。同时从时钟发送的延迟请求报文过程将由从时钟协议层组包, 然后通过网络链路传回到主时钟,来回传送的原理类似。

4

/12

经往返反复计算,得到比较理想的偏差数值后,通过计算从时钟和主时钟之间的偏差比率计算得到从时钟和主时钟之间的一个相位差和频率差, 将所获偏差补尝给从时钟设备, 从而达到主从时钟设备的一致。

5

/12

PTP 授时钟硬件的设计,ptp 授时精度从理论上来说主要受两方面的影响,一方面是打时间戳的位置另外是软件同步的算法。打时间戳目前可以在物理层、数据链路层和应用层上进行,同时精度会依次降低。

SYN2401型PTP主时钟

6

/12

本文讨论的是基于以太网的传输媒介, 在物理层打时间戳的方式, 该方式实现可以获得较高的同步精度。该方式下的 PTP 数据报文流改变标准的以太网物理层芯片, 使用精度更高的具有 IEEE1588 PTP 功能的太网物理层芯片。一般来讲硬件单元包括 UDP 用户数据包协议传输层、网络连接协议 IP 传输层、MAC 数据链路层、 传输层和 PHY 物理层。

7

/12

PTP 授时钟软件的设计

软件采用了分层模型, 模块化设计的思想,协议栈与平台相关的部分分开, 这样可以很方便的移植到任何平台下, 在系统调试和功能的删除添加操作非常的方便。

系统初始化单元主要用于对定时器、系统日志模块、配置模块等进行初始化。其中初始化包括但不限于资源分配、创建定时器、创建消息队列以及初始化系统日志等。其中定时器用于完成 PTP 协议交互时的逻辑操作,保证 PTP 协议的正常运转。消息队列负责为用户提供一个外部的 API 接口,方便获取 PTP 协议运转过程中发生的异常信息。

SYN2401型PTP主时钟

8

/12

在这里需要说明一下人机交互单元,这一单元主要由配置模块和测试模块组成, 前者用于提供参数配置接口, 接收用户输入的配置请求,根据配置请求对PTP 协议的实现的系统参数进行配置;后者负责提供用于测试的应用程序编程接口, 并对该测试请求要求的 PTP 协议的功能进行测试。用户输入的测试请求,就是通过测试模块完成的。

9

/12

协议引擎单元包括定时器、PTP 报文处理模块、网络通讯模块、同步算法模块和时钟处理模块。定时器顾名思义为 PTP 协议的运行提供定时功能,一般有同步间隔定时器、接收超时定时器和延迟请求间隔定时器等三种类型的定时器。ptp 报文处理模块一般处理同步报文、跟随报文、延迟请求报文和延迟响应报文, 根据 ptp 协议组织并封装各种 ptp 报文, 通过网络通讯模块发送 ptp 报文, 或从网络通讯模块接收 ptp 报文,并获取各 PTP 报文的发送时间戳和接收时间戳。

SYN2401型PTP主时钟

10

/12

ptp 授时时钟产品为适应更高精度的时间同步,推出纳秒级的时间同步技术 PTP。相关的 ptp 授时系列产品包括 PTP 主时钟和从时钟,除此之外还有 PTP 授时板卡,其中板卡分为串口授时和总线控制两种,采用高速集成芯片实现硬件时间戳打标功能,大幅度提高了对时和授时精度。

11

/12

ptp 授时钟主要分为主时钟和从时钟,一般 1588 时钟都是主从成套使用, 因此可以选择 SYN2401型PTP主时钟和SYN2403型PTP从时钟,如果有 1588 时钟集成能力,可以选择各种 1588 时钟板卡,有核心板卡和整块板卡,1588 核心板卡体积小巧,可以做主时钟也可以做从时钟,性价比极高,时间信息、非连续调控设备时钟。

12

/12

时间同步有2个主要功能:授时和守时,用通俗的语音描述,授时就是“对表”.通过不定期地对表动作,将本地时刻与标准时刻相位同步;守时保证在对表的间隙里, 本地时刻与标准时刻偏差不要太大。

嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结

首先调试检查硬件,再调试软件

首先仔细阅读phy和主芯片datesheet ,尤其着重阅读mii寄存器,它是mac和phy交换信息的媒介。

硬件注意:关于phy的芯片需要注意的有几点:1、mdio接口和rgmii或者mii接口是否正确。2、电源是否稳定,晶振是否起振并且频率匹配。3、phy地址的配置是否正确,不能是0地址,因为0地址默认是所以芯片的地址。4、phy芯片输出时钟是否正确。4、phy和主芯片rgmii接口电平是否匹配。5、phy间的线序是否正确以及线路是否完好。6、mac和phy间的数据速率是否匹配即都是千兆百兆或10兆。

关于主芯片mac部分接口注意:1、rgmii或者mii以及mdio接口是否正确。2、mdio时序是否正确。3、rgmii时钟是否正确。

 

需要了解自协商过程以及mac->phy->phy->mac中间的连接,如果有一个断了就不能正确通信,因此首先得确保每段连接的接口物理和时序是正确的:对于phy间就是自协商成功,对于mac和phy间就是rgmii的时序正确即确保都是相同的数据速率(千兆百兆或10兆)。

 

mii寄存器解读:Status Register 0x01以及Extended Status Register 0x0F是用来显示phy自身能力以及当前状态的寄存器,因此有些值是默认的不能修改的,Link Partner Ability Register 0x05是用来显示连接伙伴能力的寄存器,而最终的协商结果是在Control Register 0x00?的6、13 SPEED SELECTION和8 DUPLEX MODE位中的,因此程序中读取phy连接速度时应该读取该寄存器的值,而不是自身能力寄存器的值。海思的uboot中就出现了该错误。

 

注意mdio接口是主从接口可以一拖多,所以地址尤为重要,00地址是广播地址,不能使用该地址,uboot mii命令的使用,其可以驱动mdio接口,可以用此来调试phy芯片寄存器!!关于其应用可以在common/cmd_mii.c 文件结尾出看到,或者此博文中http://www.cnblogs.com/pengdonglin137/p/3682637.html

 

关于RGMII时序问题,rgmii的发送和接收时钟一直是125Mhz,不过在100M和10M模式时,数据的采样频率会延迟一些时钟,因此在mac端的数据要保持一些时钟,否则时序会出错!!

 

关于phy芯片的配置,正常情况下phy寄存器因为是mii标准寄存器,所以用原厂自带uboot配置就可以,除非自己调试phy芯片自带的功能,才配置其特殊功能寄存器,比如回环测试等。

 

在调试ar8031时可以通过loopback来测试环路是否通,有本地回环测试和远端回环测试,这样分别检查本地和远端回路是否联通,这样很容易发现哪边不通,具体看ar8031手册2.5.2,来通过mii配置寄存器。100M loopback: register 0x0 = 0xA100是错误的应该是6100。

本地回环测试就是ping自己的ip地址,这样数据就会接收回来。

远端回环测试

 

 

 

软件方面注意:需要分两部分来调试:1、phy芯片mii标准寄存器的配置以及phy工作原理,以及主芯片mac部分的寄存器配置和时钟配置是否正确,phy接口配置正确,mdio部分配置是否正确。

2、详细了解uboot下mac和phy驱动架构。3、在uboot代码中跟踪调试。

 

 

 

下面介绍uboot-2010.06中hi3531的mac phy驱动架构以及工作流程。

 

 

未完待续。。。。

 

http://blog.csdn.net/xiaoaid01/article/details/51104837

以上是关于phy芯片没有接网线时,时钟输出不对的主要内容,如果未能解决你的问题,请参考以下文章

linux网络之数据包的接受过程

嵌入式开发之hi3519---i2c MDIO PHY uboot phy调试总结

ds1302怎么接单片机

单片机芯片之(74HC595/74LS595)

单片机引脚扩展芯片74HC595手工分解实验

以太网调试经验总结