timegpsarmcortex-mntpd

Which OS for cortex-m4 offering NTPd or similar to enable time sync with GPS-PPS


I've received these 3 boards as a gift.

STM32F407 HIGH PERF DISCOVERY BOARD http://www2.mouser.com/Search/ProductDetail.aspx?R=STM32F4DISCOVERYvirtualkey51120000virtualkey511-STM32F4DISCOVERY

STMicroelectronics STM32F411 Nucleo board http://www2.mouser.com/Search/ProductDetail.aspx?R=NUCLEO-F411REvirtualkey51120000virtualkey511-NUCLEO-F411RE

STM32F429 Discovery Kit Board http://www2.mouser.com/Search/ProductDetail.aspx?R=STM32F429I-DISCOvirtualkey51120000virtualkey511-STM32F429I-DISCO

They have these CPUs:

STM32F407 @ 168 MHz STM32F411 @ 100 MHz STM32F429 @ 180 MHz

I also have a good GPS module with serial and PPS output. I'm wondering if a small Linux version exists for one of these CPU/boards, allowing me to configure the NTPd service to get the internal clock in sync with the GPS like seen on other boards like the Raspberry PI.

It is my understanding that usually the NTPd also uses the network interface for connection with other time servers or publishing of the information on the network. These boards do not have network chips/connectors and actually I'm not interested in connecting them with the external world. I would use the synced clock only on the choosen board itself.

As an alternative to a small linux edition, would this be something feasible with a different embedded or real time OS ?

or with a NTPd only port ?

thank you

Added text:

I would like to find the best approach to re-use any existing code to get time from gps, write to rtc AND sync to PPS.

i know that reading GPS received time via serial and writing to rtc is easy but i need to use also the sync logic to the PPS signal to get the lowest possible jitter within my budget constraints.

i need to save money and cannot buy off-the-shelf devices. if i can avoid the use of an os and stick to something smaller like an RTOS or embedded or custom code... well i would be happy :-)

i mentioned NTPd because is the only thing i know (my limitation) that allows these things (plus others).

did somebody else already "strip away" the PPS sync related portions of code ? or are them actually the core of NTPd and PPS is just a plugged in additional source like the network servers could be ?

please note that i'm a total newbie to the inner working of NTPd. I just configured gps-pps-ntpd sync on a raspberry pi following web available instructions to test the concept, but that does not make me ... an expert of NTPd :-)


Solution

  • I guess you can read GPS output to get the time, and then you should use PPS output of the GPS receiver as a trigger for the RTC - this way you use the actual "value" only once, then the RTC timer will be incremented each time an edge on the PPS line occurs. To do that, just connect this signal to OSC32_IN input, configure RTC to use "external clock" (not "external crystal"!) and set prescaler to 0. I don't think you can be any more accurate than that...