ASR-A502 GMSL Camera Time Synchronization Solution Introduction
Technical documentation for implementing high-precision GMSL camera time synchronization on the ASR-A502 platform.
Overview
- Background and synchronization challenges
- Solution architecture and implementation
- Validation and verification procedures
Why Time Synchronization Is Critical for AMR and Robotics Systems
In multi-camera robotic systems, inaccurate timestamp alignment can significantly impact the performance of SLAM, sensor fusion, and AI-based perception workloads.
To ensure deterministic frame synchronization across multiple cameras, a hardware-assisted time synchronization mechanism is required.
Technical Challenges
- Linux system time is not synchronized with camera hardware time
- Multi-camera frame timestamp misalignment
- Timing inconsistencies introduced by the GMSL deserializer
- Requirement for precise PPS (Pulse Per Second) synchronization
Solution Architecture
The ASR-A502 platform provides a hardware-assisted synchronization framework based on:
- Intel TGPIO (Time-Aware GPIO)
- PTP Hardware Clock (
/dev/ptpX) - PPS signal generation
- Continuous synchronization calibration service
The platform currently supports two synchronization methods.

Solution Implementation
BIOS Configuration
The following BIOS features must be enabled before using the synchronization framework:
- Enable TGPIO support
- Integrate BIOS support for:
INTC1023INTC1024

TGPIO Hardware Routing
Verify that the CPU TGPIO signal is correctly connected to the GMSL deserializer.
The following example uses the ASR-A502 platform.
CPU to 120-pin Connector

120-pin Connector to MAX9296A (GMSL Daughter Board)

Verify the PTP Device and Build the Test Utility
Identify which /dev/ptpX node corresponds to the TGPIO device.
The expected result should be similar to the example below, where the TGPIO device is mapped to /dev/ptp3.
udevadm info /dev/ptp* | grep virtual

Build the testptp utility according to the kernel version in use.
Reference source:
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:
testptpexecutabletestptp.csource code
The source code also demonstrates how to control TGPIO through IOCTL interfaces.
Time Offset Measurement
Compare the TGPIO PTP hardware clock with Linux CLOCK_REALTIME to calculate the synchronization offset.
sudo ./testptp -d /dev/ptp3 -X

PPS Signal Generation
For hardware validation, testptp can generate a PPS waveform through TGPIO output pins.
The PPS signal should be verified using an oscilloscope.
The ASR-A502 GMSL daughter board includes two deserializer ICs.
TIME_SYNC_0 → PPS Output
Example using /dev/ptp3:
sudo ./testptp -d /dev/ptp3 -i 0 -L 0,2 -p 1000000000
1000000000represents a 1-second cycle period- Output waveform:
- 50% high level
- 50% low level
- The generated PPS signal is not phase-aligned with Linux system time
TIME_SYNC_1 → PPS Output
sudo ./testptp -d /dev/ptp3 -i 1 -L 1,2 -p 1000000000

Continuous Synchronization Service
Over long operating durations, drift between Linux system time and the TGPIO PTP hardware clock may gradually increase.
For robotics and AMR applications requiring stable long-term synchronization, a continuous calibration mechanism is strongly recommended.
Intel provides a reference implementation:
RDC#785823
Precision Time Measurement Test Scripts and Timed-GPIO for Linux*
https://cdrdv2.intel.com/v1/dl/getContent/785823?explicitVersion=true
The package includes a sample utility, pps, which continuously aligns the PPS signal with Linux system time while controlling TGPIO output.
Source location:
785823_PTM_Test_Scripts_TGPIO_for_Linux_Rev_1_0/
└── Time-Aware-GPIO-Support/
└── user-code/
└── tgpio_pps/
└── pps.c
Before compiling pps.c, retrieve the TSC/clock ratio and nominal core crystal clock frequency using the following command:
cpuid -1 | grep -E "(Time Stamp|TSC/clock|nominal)"

Modify the required definitions inside pps.c, then rebuild the utility.

For TIME_SYNC_0 PPS output:
sudo ./pps -d /dev/ptp1 -p 0
This service continuously aligns the generated PPS signal with Linux system time.

Notes
- The
/dev/ptpXindex may vary across different hardware platforms and BIOS versions. - PPS timing accuracy should always be validated using an oscilloscope.
- Continuous synchronization services are strongly recommended for long-duration robotics and autonomous system deployments.
- Accurate hardware time synchronization is essential for reliable SLAM, sensor fusion, and AI perception workloads in multi-camera systems.