通过gpsd-3.20、chronyd-3.5、phc2sys-3.1.1、ptp4l-3.1.1配置ptp主时钟(Master)

news/2024/12/4 20:14:13/

本文使用的开发板为野火鲁班猫1S

文章目录

  • 零、总体流程
  • 一、gpsd配置
  • 二、chronyd配置
  • 三、phc2sys配置
  • 四、ptp4l配置

零、总体流程

  1. 通过gpsd接收(NEMA+pps)获得精准的绝对时间
  2. 通过chronyd将上步的时间源同步系统时钟
    在没有gps、gps解算失效、有网的时候,就是正常地采用ntp协议,网络时钟服务器同步系统时钟
  3. 这一步按ptp4l采用什么时间戳(软硬)来划分
    A、软件时间戳,给ptp报文打上的是系统时间的时间戳,不需要用phc2sys
    B、硬件时间戳,给ptp报文打上的是网卡时钟的时间戳,需要提前用phc2sys把系统时钟同步网卡或者网络接口的时钟
  4. 通过ptp4l配置PTP Master

一、gpsd配置

  1. 利用普通GPIO接收pps信息,查看关于pps-gpio的驱动是否可用

    code /boot/config-$(uname -r)
    

    在这里插入图片描述
    1、若CONFIG_PPS_CLIENT_GPIO is not set,需要编译安装pps-gpio驱动模块,具体操作可查看我的上一篇文章,设备树插件如下:

    /dts-v1/;
    /plugin/;#include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/pinctrl/rockchip.h>&{/} {pps_test: pps_test{status = "okay";compatible = "pps-gpio";gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;   // 根据使用的板卡确认引脚 assert-rising-edge;                         // 好像没作用pinctrl-names = "default";pinctrl-0 = <&pps_test_pin>;};
    };&{/pinctrl} {pps_test {pps_test_pin: pps_test_pin {rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; // GPIO功能  浮空输入};};
    };
    

    2、编译好驱动模块后,加载模块sudo insmod pps-gpio.ko,正常会产生设备 /dev/pps0
    3、安装pps工具,sudo apt-get install pps-tools;测试pps,sudo ppstest /dev/pps0
    在这里插入图片描述

  2. 利用串口接收NEMA信息
    注意点
    1、打开串口使能
    2、赋予串口权限,sudo chmod 666 /dev/tty*
    3、配置串口波特率等,可使用sudo minicom -s

  3. 手动开启gpsd

    # 安装gpsd
    sudo apt-get install gpsd gpsd-clients
    # 清除gpsd
    sudo killall -9 gpsd
    # Tmp
    systemctl stop gpsd
    systemctl disable gpsd
    systemctl stop gspd.socket
    # 手动开启gpsd 
    sudo gpsd -n /dev/ttyS5 /dev/pps0
    # 验证
    gpsmon
    

    在这里插入图片描述

二、chronyd配置

  1. 修改配置文件
    sudo vim /etc/chrony/chrony.conf
    # 在最后添加
    # 参考 https://gpsd.gitlab.io/gpsd/gpsd-time-service-howto.html
    refclock SOCK /run/chrony.ttyS5.sock refid GPS precision 1e-1 offset 0.9999
    refclock SOCK /run/chrony.pps0.sock refid PPS precision 1e-7
    # 或
    refclock SHM 0 refid GPS precision 1e-1 offset 0.9999 delay 0.2
    refclock SHM 1 refid PPS precision 1e-7
    
  2. 开启
    # 安装chrony(包含chronyd、chronyc)
    sudo apt-get install chrony
    # 清除
    sudo killall -9 gpsd chronyd
    # gpsd需要在chronyd后启动
    sudo chronyd -f /etc/chrony/chrony.conf
    sudo gpsd -n /dev/ttyS5 /dev/pps0
    # 查看时间同步源情况
    chronyc sources 
    chronyc tracking
    
    在这里插入图片描述

三、phc2sys配置

  1. 系统时钟同步ptp硬件时钟,参数-rr;ptp硬件时钟同步系统时钟,参数-r
  2. 经过测试开启之后,硬件时钟时间源就是CST,不开启为UTC
  3. 此处有个疑问,ptp硬件时钟一开机就有时间吗,初始时间哪来的,一直没搜到答案。是否和RTC一样,断电前系统时间同步PTP硬件时钟为UTC
    # 方便安装	linuxptp(ptp4l+phy2sys)  老版本
    sudo apt-get install linuxptp
    # 源代码安装  新版本  下载网址http://sourceforge.net/projects/linuxptp/files/latest/download
    # 进入源代码路径下,make -jx(编译),sudo make install(安装=复制到local)# 手动开启,这两种具体区别还不清楚
    sudo phc2sys -s eth0 -rr -w -m
    sudo phc2sys -s CLOCK_REALTIME -c eth0  -w -m
    # -s 主时钟接口,CLOCK_REALTIME为系统时钟
    # -c 从时钟接口
    # -w 等待ptp4l
    # -m 打印输出
    

四、ptp4l配置

  1. 修改配置文件
    # 参考 https://blog.csdn.net/qq_24972557/article/details/115049024
    sudo vim /etc/linuxptp/ptp4l.conf
    sudo systemctl restart chrony
    
  2. 开启ptp4l
    # 清除
    sudo killall -9 gpsd chronyd ptp4l
    # 依次开启
    # sudo chronyd -f /etc/chrony/chrony.conf
    sudo gpsd -n /dev/ttyS5 /dev/pps0
    sudo ptp4l -f /etc/linuxptp/ptp4l.conf -i eth0
    sudo ptp4l -i eth0 -H -m
    
    在这里插入图片描述

http://www.ppmy.cn/news/638305.html

相关文章

补充:以 ptp4l、E2E 为例的 Linuxptp 代码分析

最近仍然在看linuxptp的问题&#xff0c;对其代码做了更深的了解&#xff0c;下面补充一些知识点。详细文章需要参考上一篇&#xff1a;以 ptp4l、E2E 为例的 Linuxptp 代码分析 1 Event message and General message 我是由于研究第二点才发现的第一点&#xff0c;有个先后顺…

问题解决ros:Checking for module libv4l2

问题&#xff1a; ros&#xff1a;Checking for module libv4l2 问题描述 ubuntu18.04 melodic 编译usb_cam caktkin_make时出错 -- processing catkin package: usb_cam -- > add_subdirectory(usb_cam) -- Searching required modules -- Checking for module libv4l…

以 ptp4l、E2E 为例的 Linuxptp 代码分析

最近在学习这部分内容&#xff0c;发现网上没有多少相关的代码分析的文章&#xff0c;结合自己的学习&#xff0c;和大家分享一下&#xff0c;希望大家批评指正&#xff01; linuxptp code git clone git://git.code.sf.net/p/linuxptp/code linuxptpptp4l.c::main() 首先是处…

PTP4L命令手册(谷歌翻译)

ptp4l-PTP边界/普通时钟概要ptp4l [-AEP246HSLmqsv] [-f config] [-p phc-device] [-l打印级别] [-i接口] ...描述ptp4l是根据Linux的IEEE标准1588的精确时间协议&#xff08;PTP&#xff09;的实现。它实现了边界时钟&#xff08;BC&#xff09;和普通时钟&#xff08;OC&…

linuxptp/ptp4l PTP时钟同步配置选项

欢迎淘宝搜索飞灵科技&#xff0c;我司相关新产品陆续上线。 匆忙翻译了一下linuxptp ptp4l的帮助手册&#xff0c;不尽准确&#xff0c;不尽详细&#xff0c;仅供参考。欢迎留言讨论相关问题。 1 名称 ptp4l - PTP普通时钟/边界时钟/透明时钟协议栈 2 描述 ptp4l是一个Lin…

用ptp4l和phc2sys实现系统时钟同步

linuxptp用于时钟同步。 安装方法&#xff1a; ubuntu平台上用apt,也可以用官方的github源码自行编译&#xff1a; https://github.com/richardcochran/linuxptp apt install linuxptp linuxptp主要包含2个程序&#xff1a;ptp4l和phc2sys 1.ptp4l 进行时钟同步&#xff0c;实时…

linux libv4l dev下载,libv4l-dev和libv4l2-dev在哪里可以下载

大家好&#xff0c;在对vlc-1.1.7源码进行./configure操作的时候&#xff0c;出现这样的提示&#xff1a; configure: WARNING: LibV4L support disabled because libv4l development headers were not found checking linux/videodev2.h usability... yes checking linux/vide…

ptp4l linux,如何使用PTP4l测试PTPV2协议精度?

1、首先安装ptp4l的方式 http://linuxptp.sourceforge.net/ 下载和安装方式请参照此网址&#xff0c;下载开源代码&#xff0c;然后使用make &#xff0c;make install 手动安装 或者使用yum install ptp4l 进行安装 2、ptp4l环境搭建 使用ptp4l测试环境&#xff0c;需要两个机…