ESP32-P4 как дешёвый PTPv2 Grandmaster от GNSS
Среднее смещение PTP-slave относительно Grandmaster составило −74 нс в прямом 100-Mbit/s соединении на двух ESP32-P4. Открытый проект Кристиано Монтейро привязывает сетевую шкалу времени к GNSS и использует аппаратные метки Ethernet MAC. Главный вопрос теперь лежит в поведении схемы через PTP-коммутаторы и при работе с несколькими ведомыми узлами.
На ESP32-P4 собран открытый GNSS-ведомый PTPv2 Grandmaster, рассчитанный на локальные измерительные сети. Проект Кристиано Монтейро объединяет плату Guition JC-ESP32P4-M3-DEV, GNSS-приёмник AllyStar TAU1201, встроенный Ethernet PHY IP101 и OLED-индикатор. Ранее эта же аппаратная основа работала как сервер NTP и RDATE; новая версия реализует PTPv2 по IEEE 1588-2008 на канальном уровне.
Ключевая деталь находится в Ethernet MAC ESP32-P4. Контроллер формирует 64-битные временные метки для принятых и переданных кадров, поэтому момент прохождения PTP-пакета фиксируется рядом с физическим интерфейсом, минуя джиттер планировщика и задержки сетевого стека. В ESP-IDF для этого предусмотрен экспериментальный API: он включает RX/TX timestamping, даёт доступ к аппаратным меткам и умеет выводить синхронизированный PPS на GPIO. Вывод PPS поддержан начиная с третьей ревизии кремния.
GNSS-приёмник переводится в режим хронометрии с фиксированной позицией. При первом запуске на новом месте он проводит survey position в течение нескольких минут, затем использует координаты для устойчивого решения временной шкалы. Фронт PPS захватывается обработчиком прерывания, после чего программный servo корректирует часы PTP. Автор отдельно отказался от захвата в задаче FreeRTOS: такой путь в его стенде вносил 10–50 мкс джиттера планирования.
Реализация включает двухшаговую последовательность Sync/Follow_Up, сообщения Announce, Delay_Req и Delay_Resp, а также BMCA для выбора лучшего мастера. В документации описан и companion slave на аналогичной плате ESP32-P4. Этот узел использовался как измеритель при прямом соединении Grandmaster↔slave на скорости 100 Mbit/s. Сам ESP32-P4 также ограничен интерфейсом 10/100 Mbit/s через внешний PHY; упоминание гигабитного линка в раннем описании проекта противоречит схеме стенда и спецификации SoC.
По авторским измерениям, после холодного старта slave входит в синхронизацию примерно за 30 с. Около 74% отсчётов укладываются в ±1 мкс, 89% — в ±2 мкс, примерно 30% — в ±300 нс. Средняя разность шкал составила −74 нс. Эти цифры характеризуют конкретную пару одинаковых устройств, короткий прямой линк и авторский измерительный тракт. Они подтверждают субмикросекундный класс работы схемы, однако абсолютная привязка Grandmaster к GNSS-времени независимым прибором пока не аттестована.
Ценность проекта лежит в распределении единой временной шкалы между Ethernet-приборами: регистраторами, удалёнными АЦП, сетевыми датчиками, SDR-узлами и установками для TDOA. Для когерентного радиоприёма одного PTP недостаточно: сетевые метки времени не синхронизируют фазу гетеродинов и тактов АЦП. Таким системам требуется распределённая частотная опора, например 10 MHz, синхронизация sampling clock и измеренная задержка каждого тракта.
Следующий технический рубеж для ESP32-P4 Grandmaster — сеть с PTP-aware switch, несколькими slave, transparent или boundary clock и контролем асимметрии пути. Именно там проявятся задержки проживания кадров в коммутаторе, качество осциллятора в holdover и устойчивость сервопетли. Исходный код опубликован по лицензии MIT, поэтому эти проверки доступны на уровне прошивки и схемы, а не только по результатам демонстрации.