I tried a number of different ptp (precision time protocol) daemons to see which would work best on my ARM development board. There was a version of ptpd (version 2.0.0) which had been ported by STM to run on their board, but this was an old version. Upgrading to 2.3 (the current version) looked horrific.
In the end, I went with ppsi which has a nice separation between the core code and the the system dependent pieces. The porting was easier than I expected as I am already running the time nanokernel which provides an adjtimex implementation. Strangely, the ppsi implementation tries to control the frequency of the clock by using the clock offset. It seems rather more stable if you control the offset of the system clock instead.
In the course of this, I ran ppsi on a standard linux box. It turns out that, due to an uninitialized variable, it corrupts the system time even if it is told not to alter the system clock.
Now I need to bring up another ARM board with the PTP code running and see how good it is at synchronizing the two boards. Happily I can tell what the clock skew is as both boards have GPS receivers with PPS outputs....
No comments:
Post a Comment