~/textes/etiquettes
#timing
4 textes
Le stratum 1 à 20 piasses que chrony mettait sur le banc
J'ai bâti un serveur NTP discipliné au GPS sur un ESP32 à 20 piasses, avec un horodatage interne à la nanoseconde. Puis chrony a refusé de s'en servir. Le correctif n'était pas dans l'horloge. Il était dans tout ce que j'avais tenu pour acquis sur la façon de servir l'heure.
ts2phc et gpsd ne peuvent pas partager un port série
Un seul port série USB, deux programmes qui veulent tous les deux un accès exclusif. ts2phc veut uniquement du RMC pour discipliner l'horloge PTP; gpsd veut tout le reste. J'ai écrit un démultiplexeur qui donne à chacun un port synthétique façonné exactement comme il l'attend.
Les cœurs de réserve d'un BeagleBone gardent l'heure mieux que son noyau
Le pilote PPS standard de Linux horodate l'impulsion GPS dans un gestionnaire d'interruption et paye pour ça ~20 µs de gigue. Le BeagleBone a deux cœurs temps réel à 200 MHz que Linux ne touche jamais. J'ai déplacé l'horodatage dans un de ces cœurs-là, et le décalage de l'horloge est tombé dans les bas nanosecondes.
Le GPS qui répond 0xFF quand il n'a rien à dire
Lire un GPS u-blox par I2C libère l'UART, mais l'interface I2C n'a aucune notion de repos. Quand le module n'a rien à envoyer, chaque lecture revient en remplissage 0xFF. Voici le petit pont qui transforme ça en refclock pour chrony.