跳至主要内容

ASR-A502 GMSL 相機時間同步

在 ASR-A502 平台上實現高精度 GMSL 相機時間同步的技術文檔。


概述

  1. 背景與同步挑戰
  2. 解決方案架構與實施
  3. 驗證與確認程序

為什麼 AMR 和機器人系統需要時間同步

在多相機機器人系統中,不準確的時間戳對齊會顯著影響 SLAM、感測器融合和基於 AI 的感知工作負載的性能。

要確保多個相機之間的確定性幀同步,需要硬體輔助的時間同步機制。

技術挑戰

  • Linux 系統時間與相機硬體時間不同步
  • 多相機幀時間戳對齊問題
  • GMSL 解串器引入的時序不一致
  • 需要精確的 PPS(每秒脈衝)同步

解決方案架構

ASR-A502 平台提供基於以下內容的硬體輔助同步框架:

  • Intel TGPIO(Time-Aware GPIO)
  • PTP 硬體時鐘(/dev/ptpX
  • PPS 信號生成
  • 連續同步校準服務

平台目前支援兩種同步方法。

TGPIO 連接圖


解決方案實施

BIOS 配置

在使用同步框架之前,必須啟用以下 BIOS 功能:

  • 啟用 TGPIO 支援
  • 整合 BIOS 支援:
    • INTC1023
    • INTC1024

PTP 設備驗證


TGPIO 硬體路由

驗證 CPU TGPIO 信號是否正確連接到 GMSL 解串器。

以下範例使用 ASR-A502 平台。

CPU 到 120-pin 連接器

時間比較輸出 PPS 信號波形

120-pin 連接器到 MAX9296A(GMSL 子板)

連續同步流程 連續同步流程 連續同步流程


驗證 PTP 設備並編譯測試工具

識別哪個 /dev/ptpX 節點對應 TGPIO 設備。

預期結果應類似於以下範例,其中 TGPIO 設備映射到 /dev/ptp3

udevadm info /dev/ptp* | grep virtual

連續同步流程

根據所使用的 Linux 版本編譯 testptp 工具。

參考來源:

https://github.com/intel/linux-intel-lts/tree/lts-v6.12.36-linux-250711T071314Z

Build procedure:

cd <kernel source folder>

make headers_install ARCH=x86_64
make -C tools/testing/selftests/ TARGETS=ptp

Navigate to the generated binary location:

cd tools/testing/selftests/ptp

The folder contains:

  • testptp executable
  • testptp.c source code

The source code also demonstrates how to control TGPIO through IOCTL interfaces.


時間偏移測量

比較 TGPIO PTP 硬體時鐘與 Linux CLOCK_REALTIME 以計算同步偏移。

sudo ./testptp -d /dev/ptp3 -X

連續同步流程


PPS 信號生成

對於硬體驗證,testptp 可以透過 TGPIO 輸出引腳生成 PPS 波形。

PPS 信號應使用示波器進行驗證。

ASR-A502 GMSL 子板包含兩個解串器 IC。

TIME_SYNC_0 → PPS 輸出

使用 /dev/ptp3 的範例:

sudo ./testptp -d /dev/ptp3 -i 0 -L 0,2 -p 1000000000
  • 1000000000 代表 1 秒週期
  • 輸出波形:
    • 50% 高電平
    • 50% 低電平
  • 生成的 PPS 信號未與 Linux 系統時間相位對齊

TIME_SYNC_1 → PPS 輸出

sudo ./testptp -d /dev/ptp3 -i 1 -L 1,2 -p 1000000000

連續同步流程 連續同步流程


連續同步服務

在長時間運行期間,Linux 系統時間與 TGPIO PTP 硬體時鐘之間的漂移可能會逐漸增加。

對於需要穩定長期同步的機器人和 AMR 應用,強烈建議使用連續校準機制。

Intel 提供參考實現:

RDC#785823
Precision Time Measurement Test Scripts and Timed-GPIO for Linux*
https://cdrdv2.intel.com/v1/dl/getContent/785823?explicitVersion=true

套件包含樣本工具 pps,在控制 TGPIO 輸出的同時連續對齊 PPS 信號與 Linux 系統時間。

來源位置:

785823_PTM_Test_Scripts_TGPIO_for_Linux_Rev_1_0/
└── Time-Aware-GPIO-Support/
└── user-code/
└── tgpio_pps/
└── pps.c

在編譯 pps.c 之前,使用以下命令獲取 TSC/clock 比率和標稱核心晶體時鐘頻率:

cpuid -1 | grep -E "(Time Stamp|TSC/clock|nominal)"

連續同步流程

修改 pps.c 中的必要定義,然後重新編譯工具。

連續同步流程 連續同步流程

對於 TIME_SYNC_0 PPS 輸出:

sudo ./pps -d /dev/ptp1 -p 0

此服務連續對齊生成的 PPS 信號與 Linux 系統時間。

連續同步流程


注意事項

  • /dev/ptpX 索引可能因不同的硬體平台和 BIOS 版本而有所不同。
  • PPS 時序準確性應始終使用示波器進行驗證。
  • 對於長時間運行的機器人和自主系統部署,強烈建議使用連續同步服務。
  • 精確的硬體時間同步對於多相機系統中可靠的 SLAM、感測器融合和 AI 感知工作負載至關重要。

← 返回 解決方案 總覽