TSync时钟同步开发板开发指南

欢迎淘宝搜索飞灵科技,我司相关新产品陆续上线。

本文介绍在TSync时钟同步开发板上如何进行二次开发。
TSync时钟同步开发板开发指南_第1张图片

开发板环境

硬件环境:

  • 处理器i.MX6ULL:ARM Cortex-A7 800MHz
  • 内存:512MB
  • eMMC:8GB
  • 外设:百兆双网口,USB host,SD,miniUSB串口,GNSS接口,PPS输出,其他扩展信号

软件环境:

  • Linux 5.4.3
  • Ubuntu 18.04.5 LTS

二次开发指南

开发板用户手册见:https://flyelf-tech.gitee.io/docs/tsync/manual/

1. 丰富的Ubuntu软件源

Ubuntu系统支持丰富的软件包,可以命令安装所需软件包,

apt update
apt install <package>

2. 通过NodeRED快速实现想要的Web UI

Node-RED是一款基于Node.js的编程工具,用新颖有趣的方式将硬件设备,API和在线服务连接在一起。它提供了一个基于浏览器的编辑器,可以使用面板中的各种节点轻松地将流连接在一起,只需单击即可将其部署运行。

  • Node-RED官方网站https://nodered.org/

我们选择这款工具,一方面是为了通过Dashboard UI界面展示PTP的功能,另一方面也为了使用者可以在Node-RED上快速开发自己需要的功能和界面。

开发板Web UI
TSync时钟同步开发板开发指南_第2张图片
Web UI编辑器
TSync时钟同步开发板开发指南_第3张图片
3. 基于PTP API开发自己的应用

开发板虽然对GNSS授时/PTP同步做了新特性的支持,稳定性和性能的提升,但依旧沿用Linux内核标准的PTP API。基于PTP API,用户可以开发自己的应用。前面已经有两篇博文对软件架构,接口,如何学习,做了介绍了。

  • IEEE 1588/802.1AS标准、硬件,Linux软件学习建议
  • linuxptp的接口函数列举

在这里提供PTP API的示例应用程序,帮助使用者在开发板上验证和开发,可以从这里下载https://flyelf-tech.gitee.io/docs/tsync/dl/。两个示例程序分别用于PTP clock的操作,和网络报文收发硬件时间戳。将示例程序压缩包拷贝到板子上,解压,编译。

tar zxvf ptp-api-test.tar.gz
cd ptp-api-test/
gcc testptp.c -o testptp
gcc timestamping.c -o timestamping

PTP clock的基本操作

# 获取PTP时间
root@TSync:~/ptp-api-test# ./testptp -d /dev/ptp0 -g
clock time: 1640492382.339218833 or Sun Dec 26 04:19:42 2021

# 将系统时间设置为PTP时间
root@TSync:~/ptp-api-test# ./testptp -d /dev/ptp0 -s
set time okay

# 调整频率+1000ppb
root@TSync:~/ptp-api-test# ./testptp -d /dev/ptp0 -f 1000
frequency adjustment okay

网络报文收发时间戳

在两块板子上分别运行timestamping,一块测试发送硬件时间戳,一块测试接收硬件时间戳。接收端运行,

root@TSync:~/ptp-api-test# ./timestamping eth0 SOF_TIMESTAMPING_RX_HARDWARE SOF_TIMESTAMPING_RAW_HARDWARE

发送端运行如下命令,HW raw 1640492773.415471564就是发送的硬件时间戳,接收端也能捕获接收报文时间戳。

root@TSync:~/ptp-api-test# ./timestamping eth0 SOF_TIMESTAMPING_TX_HARDWARE SOF_TIMESTAMPING_RAW_HARDWARE
SIOCSHWTSTAMP: tx_type 1 requested, got 1; rx_filter 0 requested, got 0
SO_TIMESTAMP 0
SO_TIMESTAMPNS 0
SO_TIMESTAMPING 65
1640492773.424175: sent 124 bytes
1640492773.424220: select 1575780us
1640492773.424403: select returned: 1, success
ready for reading
recvmsg regular: Resource temporarily unavailable
1640492773.424565: received error data, 166 bytes from 1.0.0.0, 80 bytes control messages
   cmsg len 36: SOL_SOCKET SO_TIMESTAMPING SW 0.000000000 HW raw 1640492773.415471564
   cmsg len 44: IPPROTO_IP IP_RECVERR ee_errno 'No message of desired type' ee_origin 4 => bounced packet => GOT OUR DATA BACK (HURRAY!)

你可能感兴趣的:(IEEE,1588,嵌入式开发,单片机,ubuntu,linux,时钟同步,网络)