LKM Timemark Driver

Gary E. Miller gem at rellim.com
Tue Aug 28 00:56:04 UTC 2018


Yo MLewis!

On Mon, 27 Aug 2018 19:07:52 -0400
MLewis via devel <devel at ntpsec.org> wrote:

> Gary,
> 
> On 27/08/2018 6:38 PM, Gary E. Miller via devel wrote:
> > Yo MLewis!
> >
> > On Mon, 27 Aug 2018 18:24:01 -0400
> > MLewis via devel <devel at ntpsec.org> wrote:
> >
> > The key thing I, and others, want from the Lukas patch is the
> > PPS out when the kernel detects the PPS.  Without out, nothing much
> > else matters.  
> 
> The PPS becomes irrelevant.
> The PPS has all of the interrupt lag. Why introduce all that variable
> error.

Because that is how U-blox tells us to use Timemark?  The point of Timemark
is to remove the interrupt lag/jitter.

> The thesis confirmed what I suspected, that the best results are from
> a kernel timestamp of the outgoing trigger that has the ublox
> generate its Timemark timestamp.

Yes, thus the need for the PPS timestamp AND the TM2 timestamp.

> Their difference is your offset.
> The critical part is in the kernel, in order, GPIO high, then
> timestamp. That's easy. It's all of the overhead for safe multi-port
> LKM. Then hitting the target times reliably and with what precision
> is available.
> And a stream of timestamps back to user space.

Easy?  I look forward to many pretty graphs and a howto.

> > What is your definition of "Timemark"?  I thought that was the
> > time stamp from the u-blox on receipt of  the PPS out from linux?  
> The Timemark timestamp returned in the next TM2 if triggered in an
> M8, specifically M8T's EXTINT0 or EXTINT1.

OK, we agree.  You were using it inconsistently in your email.

> >   From user space, various commands, including: open port, High,
> > Low, Toggle, Pulse is Positive, Pulse is Negative, Pulse, Pulse at
> > ms past TOS, Pulse every ms, and pulsing available specifying
> > nanoseconds. Interesting.  
>  From user space people can send commands to the LKM and thereby grow 
> their own trigger/pulse actions in user space by sending high, low, 
> toggle, etc.. Or use the predefined Pulse At or Pulse Every.

Yes, interesting.  I'll focus on Timemark for now.

> >> PAT017.165.250 will pulse GPIO 17 at 250 ms from tos, width 165 ms
> >> PAT018.165.580 will pulse GPIO 18 at 580 ms from tos, width 165
> >> ms  
> > Which 'tos'?  
> System time, specifically clock_gettime(CLOCK_REALTIME, &tv_current);
> This aligns the times timemarks are triggered with system time.

The time from clock_gettime() is very coarse.  Not up to our needs.
On a Raspberry Pi 3B+ running 64 bit kernel the granularity is only
52 ns.

> If a PPS feature was added, the GPS PPS could trigger the next
> "timemark cycle", and the timemark trigger times could be aligned
> with GPS UTC. No real benefit.

Yes, plus the interrupt latency that we are trying to determine.  Which
is why the Timemark method subtracts the two.

> As I'm implemented it, as system time is disciplined, then the
> repeating pulse cycles will align with the disciplined system time,
> as the timing runs (msleep, usleep, udelay, spins) until the next
> target time (the time for the next pulse rise or fall) is recognized,
> comparing against timespec tv_current.

I look forward to the results.  But your method is not what u-blox
described and Lukas implemented.  That is neither good, nor bad,
just different.  Many ways to skin this cat, let's get out the
sharp knives.

> >> Then something in user space to receive the TM2 messages and the
> >> LKM's timestamps and match up the Timemarks with the triggering
> >> timestamps.  
> > How does a daemon get the LKM timestamp?  In the base case, as
> > Lukas had it setup, no need for such a thing.  
> But that gave not so good results.

Better than I have ever gotten by a factor of 2.  I would take that.
Plus it opened the door to further optimization.

When you have good results, send us the ntpviz link.

RGDS
GARY
---------------------------------------------------------------------------
Gary E. Miller Rellim 109 NW Wilmington Ave., Suite E, Bend, OR 97703
	gem at rellim.com  Tel:+1 541 382 8588

	    Veritas liberabit vos. -- Quid est veritas?
    "If you can’t measure it, you can’t improve it." - Lord Kelvin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 851 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ntpsec.org/pipermail/devel/attachments/20180827/4cd01ef4/attachment-0001.bin>


More information about the devel mailing list