FRDM-K64F IEEE1588硬件时间戳测试

开发板FRDMK64F用了三周了。

硬件时间戳的作用:
在这里插入图片描述上图中的t1为物理层芯片发送数据的时间,t2为物理层芯片接收到数据的时间。如果采用软件实现,要经过MAC芯片的缓冲,然后交给驱动,再交给协议栈,最后由应用程序从硬件时钟获取时间,中间经历的过程非常复杂,导致校时精度不高,另外当处理器繁忙时会进一步降低精度,如果用于数字音频会无法满足精度要求。
所以高精度校时需要硬件支持PTP时间戳功能。

FRDM-K64F的硬件时间戳功能测试:
协议栈使用LWIP,无操作系统,要实现PTPv2的内容。
PTPv2的文档为IEEE 1588-2008,v1为IEEE 1588-2002,还有IEEE 802.1AS-2011。
通过飞思卡尔的官方库读取MAC中IEEE 1588的硬件时间戳。

发送时间戳的读取:
使用例子中的UDP协议发送SYNC数据包后,可以读出对应的时间戳,输出如下:
在这里插入图片描述
Get the 5-th time 6 second, 728335220 nanosecond:这种输出为直接读取IEEE1588的时间戳。
The 6 frame transmitted success! the timestamp is 16 second, 912475760 nanosecond:这种输出为,通过UDP发送自己构造的SYNC数据帧后,读取到的对应的时间戳。

接收时间戳的读取:
由于没有找到在Windows运行的PTPv2的测试软件,为了测试接收SYNC数据包的时间戳功能,用C++编写了一个可以发送任意数据包的程序。发送构造的SYNC数据包。输出如下:
A frame received. the length 60 Dest Address ff:ff:ff:ff:ff:ff Src Address 50:9a:4c:2d:f4:6a 08-06
A frame received. the length 77 the timestamp is 105 second, 896954860 nanosecond
Dest Address ff:ff:ff:ff:ff:ff Src Address 8c:ec:4b:bb:da:df 88-f7
A frame received. the length 1000 the timestamp is 105 second, 925657900 nanosecond
Dest Address 01:00:5e:01:01:01 Src Address 8c:ec:4b:bb:da:df 08-00
A frame received. the length 60 Dest Address ff:ff:ff:ff:ff:ff Src Address 3c:46:d8:5d:c7:b1 88-99
其中88-f7和08-00是二层网络协议的type字段。
08-00的是IP类型,UDP发送的SYNC数据包。
88-f7的是PTPv2中增加的专用类型。在二层协议上直接发送SYNC数据包。
结果为可以对PTPv2版本的数据包增加时间戳。
之后的测试发现PTPv1版本的SYNC数据包也可以获取时间戳。
在这里插入图片描述
上图为Wireshark抓取的网络数据包,可以看到里面的PTPv1版本的Sync报文。但是开发板的输出中却没有看到时间戳输出,如下图:
在这里插入图片描述

SYNC数据包测试程序:
任意数据包发送是通过WinPcap来实现的。网上还有WSASocket的资料,但是创建socket时失败,所以就放弃了,并且win10中增加了各种限制,可能不适合某些测试要求。
WinPcap代码编写简单,并且发送的数据包没有限制,可以方便做各种测试。
WinPcap官方也提供开发包,和简单易懂的例子程序。WinPcap开发包的下载地址见下图。
在这里插入图片描述

需要安装WinPcap软件才能使用。工作原理为通过一个过滤驱动程序直接向网卡发送数据, 出了能发送数据包外,还能截获网卡的数据包。

意外收获:
1.如果时间戳能达到1纳秒的精度,1纳秒相当于光前进0.3米的距离,所以用于无线定位。
2.通过WinPcap可以做很多网络测试程序,也可用用来实验协议栈。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值