news 2026/5/1 4:55:25

在QNX中运行PTPD实现gPTP同步问题的排查与解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在QNX中运行PTPD实现gPTP同步问题的排查与解决

文章目录

    • 0. 引言
    • 1. 问题定位
      • 1.1 初步排查
      • 1.2 Wireshark抓包验证
      • 1.3 Linux环境对比
    • 2. 问题分析与解决
      • 2.1 可能原因
      • 2.2 混杂模式测试
    • 3 结论

0. 引言

PTPD是一种时间同步的开源实现,遵循IEEE1588 协议,是通过在主从时钟之间传输同步报文来实现同步,主要分为两个阶段:偏差测量和延迟测量,同步过程重要的报文如下图所示:

在QNX系统中运行PTPD时,遇到了无法进行gPTP(通用精确时间协议)同步的问题。经过排查,发现是QNX开发板无法收到数据链路层的PTPv2数据包引起的问题。

更多阅读请查看 PTPD 在 QNX 系统上的授时精度验证与误差排查
以下是问题排查过程及解决方法的详细记录。

1. 问题定位

1.1 初步排查

首先,尝试在报文接收的位置打日志,发现没有报文过来。一路追踪至select函数没有触发。

ret=select(nfds,readfds,0,0,tv_ptr);

随后,尝试不用gPTP的event和general的socket,而是用原始套接字(raw socket)来接收数据,但依然无法收到报文。

1.2 Wireshark抓包验证

为进一步确认问题,尝试在QNX开发板中未启动PTPD进程的情况下,使用以下指令进行抓包:

./tcpdump-c100-w./tmp.pcap

在不同的主时钟启动方式下,抓包结果如下:

  • 主时钟以gPTP方式启动:pcap文件中没有授时报文。

  • 主时钟以PTP的UDP方式启动:pcap文件中有授时报文。

  • 主时钟以PTP的L2方式(用数据链路层传输数据)启动:pcap文件中没有授时报文。

1.3 Linux环境对比

为了验证问题是否特定于QNX开发板,我在Linux开发板中进行了相同的测试,主时钟发gPTP报文,然后使用以下指令抓包:

./tcpdump-c100-w./tmp.pcap

在Linux开发板中,可以抓到数据链路层的报文。由此可以判断,问题与QNX开发板中的PTPd无关,很可能是QNX开发板本身无法收到数据链路层的包。

2. 问题分析与解决

2.1 可能原因

分析认为数据链路层的报文是有到达QNX开发板的,但在底层没有被正确处理。可能的原因是驱动没有适配,最有可能的是网卡驱动没有开启混杂模式。

一般情况下,网卡往往只会接收目的MAC地址是它的数据包而不会接收目的MAC地址不是它的数据包。

混杂模式就是指网卡能接受所有通过它的数据流,无论是什么模式、什么地址的。当网卡处于这种“混杂”模式时,它对所有遇到的每一个数据帧都产生一个硬件中断,以提醒操作系统处理流经该物理媒体上的每一个报文包。
这样wireshark或者tcpdump就可以在数据链路层的报文看到gPTP的报文。

2.2 混杂模式测试

后来确认开启混杂模式时,能够收到gPTP数据链路层报文。具体操作如下:

  1. 用以下指令查看结果:

    io320x00ff0c0004
  2. 从右往左,从0开始,第4位,将其置为1,然后重新设置进去,使用以下指令:

    io320x00ff0c0004 0x02B2045A

]

经过以上设置,可以看到QNX开发板和主时钟的gPTP报文交互正常。

3 结论

在QNX系统中运行PTPD进行gPTP同步时,若无法收到数据链路层的报文,建议开启混杂模式,并确认底层驱动的适配情况。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 4:50:33

你知道吗?其实这些都是AI——无人驾驶技术

无人驾驶技术 背景介绍 随着科技的进步和城市化进程的加速,交通运输系统正面临着前所未有的挑战。交通拥堵、事故频发以及环境污染等问题日益严重。无人驾驶技术的出现为解决这些问题带来了新的希望。通过先进的传感器、数据处理和控制技术,无人驾驶技术能够实现车辆的自动…

作者头像 李华
网站建设 2026/5/1 4:50:03

Arm SVE2向量运算指令UHADD/UHSUB详解与应用优化

1. Arm SVE2向量运算架构解析在当今计算密集型应用领域,单指令多数据(SIMD)技术已成为提升处理器性能的关键手段。作为Armv9架构的重要组成部分,SVE2(Scalable Vector Extension 2)通过引入UHADD/UHSUB等新型向量运算指令,为现代算法提供了更…

作者头像 李华
网站建设 2026/5/1 4:42:35

Vibe Space技术:实现概念级图像混合的突破

1. 项目概述:概念级图像混合的技术挑战 在创意设计和内容生成领域,图像混合技术一直面临着核心矛盾:像素级混合(如传统图像编辑软件中的渐变过渡)虽然操作简单,但会导致关键语义信息丢失,产生模…

作者头像 李华
网站建设 2026/5/1 4:42:06

用GD32H759I-EVAL的TLI玩转LVGL:双图层+IPA加速实现流畅GUI的完整配置流程

GD32H759I-EVAL开发板TLI与LVGL深度整合实战:双图层IPA加速打造流畅GUI 在嵌入式系统开发中,图形用户界面(GUI)的性能直接影响用户体验。GD32H759I-EVAL开发板搭载的Cortex-M7内核和专用图形加速硬件,为开发者提供了构建高性能GUI的绝佳平台。…

作者头像 李华
网站建设 2026/5/1 4:36:45

终极指南:vue3-element-admin布局大小调整完整教程

终极指南:vue3-element-admin布局大小调整完整教程 【免费下载链接】vue3-element-admin 🔥基于 Vue 3 Vite 7 TypeScript element-plus 构建的后台管理前端模板(配套后端源码),vue-element-admin 的 vue3 版本。 …

作者头像 李华