-
瑞芯微芯片已大规模用于国产化边缘网关、机械臂控制器、视觉盒。
-
多主板级联场景:
-
工业相机触发 → 光源闪光 → 机械臂抓取,整条链路抖动 < 1 ms。
-
5G TSN 网关:CUC 下发门控列表,时间漂移 > 100 ns 即丢包。
-
-
常规 NTP 只能到毫秒级,PTP(Precision Time Protocol)配合瑞芯微内置 Timestamp Unit (TSU) 可达纳秒级。
-
掌握本文技能 = 让“国产化硬件 + 实时 Linux”通过严苛工业时序测试,缩短客户审厂 1-2 周。
1. 硬件
-
主板 2 块:RK3568 或 RK3588 核心板(≥2 核,1 GB RAM)
-
千兆交换机 1 台(支持硬件时间戳优先,普通管理型亦可)
-
网线 2 根(CAT5e 以上,< 5 m 误差可忽略)
2. 软件
apt install linuxptpapt install ethtool3. 一键烧录实时内核(可复制)
#!/bin/bash
# install_rt.sh
VER=5.15.71
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v${VER}/linux-image-${VER}-rt56_*.deb
sudo dpkg -i linux-image-*rt*.deb && sudo reboot
重启后:
uname -r # 5.15.71-rt56
某液晶面板厂使用 6 台 RK3588 边缘视觉盒 做缺陷检测:
-
相机帧触发信号经 PTP 同步,误差 < 200 ns,确保 6 相机同时拍照,避免“果冻效应”;
-
同一 PTP 域内 RK3568 PLC 控制 12 台伺服驱动器,位置环采样 1 kHz,窗口抖动 < 500 ns,替代进口 Beckhoff 方案,整机成本降 30%。
客户审厂要求提供 PTP 精度测试报告 + 48 h 连续运行日志,本文后续步骤可直接输出 CSV 报表,一次通过。
实验目录统一:
~/ptp-lab,所有脚本放此处,方便管理。
mkdir -p ~/ptp-lab && cd ~/ptp-lab
5.1 确认硬件时间戳能力
# 查看 MAC 是否支持 SOF_TIMESTAMPING_TX_HARDWARE
ethtool -T eth0
期望输出:
Time stamping parameters for eth0:
Capabilities:
hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)
hardware-receive (SOF_TIMESTAMPING_RX_HARDWARE)
hardware-raw-clock (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
off (HWTSTAMP_TX_OFF)
on (HWTSTAMP_TX_ON)
若只有 software → 只能用 CPU 时间戳,精度降至 10-50 μs,建议换板或检查设备树。
5.2 配置 PTP 主时钟(Grandmaster)
主板 A 接 GPS/北斗授时,或手动指定为 master:
# /etc/ptp4l.conf
[global]
twoStepFlag 1
slaveOnly 0
priority1 128
priority2 128
delay_mechanism E2E
tsproc_mode filter
delay_filter moving_median
delay_filter_length 10
[eth0]
time_stamping hardware
启动主时钟:
sudo ptp4l -f /etc/ptp4l.conf -i eth0 -m &
日志出现:
ptp4l[1234]: port 1: MASTER CLOCK SELECTED
5.3 配置从时钟(Slave)
主板 B 同一网段,配置相同文件,仅加一行:
slaveOnly 1
启动:
sudo ptp4l -f /etc/ptp4l.conf -i eth0 -m &
日志:
ptp4l[5678]: port 1: SLAVE CLOCK SELECTED
5.4 用 chrony 把 PHC 同步到系统时钟
# /etc/chrony.conf 追加
refclock PHC /dev/ptp0 poll 2 dpoll -2 offset 0
allow
重载:
sudo systemctl restart chrony
验证:
chronyc sources
输出:
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
#* PHC0 0 2 377 6 -12ns[+/- 50ns]
系统时间已跟 PHC 对齐,误差 ≈ 几十纳秒。
5.5 精度测量:秒级报表一键导出
#!/bin/bash
# measure.sh
LOG=ptp_$(date +%F_%H-%M).csv
echo "time,offset(ns),delay(ns)" > $LOG
for i in {1..600}; do
offset=$(sudo pmc -u -b 0 -t 1 -d 0 | grep offset | awk -F' *' '{print $3}')
delay=$(sudo pmc -u -b 0 -t 1 -d 0 | grep delay | awk -F' *' '{print $3}')
echo "$(date +%s),$offset,$delay" >> $LOG
sleep 1
done
跑 10 分钟:
chmod +x measure.sh && sudo ./measure.sh
用 Excel 打开 CSV → 插入折线图,offset 峰值 < 200 ns 即达标。
5.6 48 h 老化脚本(客户审厂用)
#!/bin/bash
# aging.sh
LOG=aging_$(date +%F).csv
echo "ts,offset,delay" > $LOG
timeout 172800 sudo ptp4l -f /etc/ptp4l.conf -i eth0 -m |
stdbuf -oL awk '/offset/ {print strftime("%s"),$3,$5}' >> $LOG
生成报表后 gzip 上传,一次通过审厂。
snps,tsu-clock = <&cru>;ptp 组:sudo usermod -a -G ptp $USERpi_proportional_const=0.7delay_mechanism=P2P,协议选 gptp-
主时钟冗余
两台 Grandmaster 用priority1区分,BMCA 自动 failover。 -
温度补偿
在老化箱跑 0-70 °C 循环,记录 offset 漂移,生成补偿表写进驱动。 -
与 ROS2 融合
ROS2 Foxy 内置rclcpp::Clock支持 PHC,时间戳直接纳秒级,SLAM 建图闭环误差更小。 -
容器化部署
Docker 启动加--cap-add=SYS_TIME --device=/dev/ptp0,镜像内同样装ptp4l。 -
监控接入 Prometheus
node_exporter 文本文件收集脚本:bash
复制
echo "ptp_offset_ns $offset" > /var/lib/node_exporter/ptp.prom -
版本锁定
内核、ptp4l、chrony 版本写入《BSP 版本清单》,任何升级需重新测量精度。
瑞芯微 + 实时 Linux PTP
├─ 硬件:RK3568/RK3588 GMAC 内置 TSU
├─ 软件:PREEMPT_RT + ptp4l + chrony
├─ 步骤:ethtool 确认→ptp4l 主从→chrony 系统同步→measure 报表
├─ 指标:offset < 200 ns, jitter < 50 ns
└─ 场景:边缘视觉同步、分布式 PLC、5G TSN 网关
时间精度是分布式实时系统的“心跳”。
把本文脚本推送到你的 GitLab,下次客户审厂,只需跑 1 条命令即可导出 48 h 精度报表,让国产化瑞芯微平台也能用“纳秒级”说话!祝你调试顺利,漂移 < 100 ns!










