I am setting up an NTP server using a BBB and an NMEA-compatible GPS
device. I have wired up the GPS serial port to UART5 and the GPS 1 PPS
output to both a GPIO pin and UART5_CTS. I have successfully configured
everything to use kernel-level events for the 1 PPS via the GPIO pin, but
not via the CTS pin. GPSD can see that the CTS line is toggling, but since
the kernel is not detecting these events, GPSD falls back to a less
accurate measurement.
Question: What are the necessary settings to make UART5_CTS generate
kernel PPS events?
Thanks in advance for any assistance.
RCN kernel Linux bb-sdcard 3.8.13-bone59 #1 SMP Sat Jul 5 02:59:43 UTC 2014
armv7l armv7l armv7l GNU/Linux
NTPD version 4.2.7p454
GPSD version 3.10
Relevant DTS sections:
fragment@40 {
target = <&am33xx_pinmux>;
__overlay__ {
pinctrl_pps: pinctrl_pps_pins {
pinctrl-single,pins = <
0x0C8 0x27 // P8.36 uart3_cts INPUT PULLDN MODE7
>;
};
};
};
fragment@41 {
target = <&am33xx_pinmux>;
__overlay__ {
pinctrl_uart5: pinctrl_uart5_pins {
pinctrl-single,pins = <
0x0D8 0x36 // P8.31 uart5_cts INPUT PULLUP MODE6
//0x0DC 0x16 // P8.32 uart5_rts OUTPUT PULLUP MODE6
0x0C0 0x04 // P8.37 uart5_txd OUTPUT PULLDN MODE4
0x0C4 0x24 // P8.38 uart5_rxd INPUT PULLDN MODE4
>;
};
};
};
fragment@42 {
target = <&ocp>;
__overlay__ {
#address-cells = <1>;
#size-cells = <1>;
pps {
compatible = "pps-gpio";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pps>;
status = "okay";
gpios = <&gpio3 16 0>; // Linux GPIO enumeration is +1
from chip number
assert-rising-edge;
};
};
};
fragment@43 {
target = <&uart6>; //Linux enumeration is +1 from chip number
__overlay__ {
status = "okay";
};
};
fragment@44 {
target = <&ocp>;
__overlay__ {
uart5_helper {
compatible = "bone-pinmux-helper";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart5>;
status = "okay";
};
};
};
Syslog messages showing PPS registration:
Aug 4 20:42:37 bb-sdcard kernel: [ 0.141178] pps_core: LinuxPPS API
ver. 1 registered
Aug 4 20:42:37 bb-sdcard kernel: [ 0.141187] pps_core: Software ver.
5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
Aug 4 20:42:37 bb-sdcard kernel: [ 2.043004] pps_ldisc: PPS line
discipline registered
Aug 4 20:42:49 bb-sdcard kernel: [ 22.804952] pps pps0: new PPS source
pps.15.-1
Aug 4 20:42:49 bb-sdcard kernel: [ 22.805089] pps pps0: Registered IRQ
208 as PPS source
Aug 4 20:42:51 bb-sdcard kernel: [ 23.984672] pps pps1: new PPS source
OMAP-SERIAL5
Aug 4 20:42:51 bb-sdcard kernel: [ 23.984766] pps pps1: source
"/dev/ttyO5" added
Actual PPS devices, note pps0 generating kernel events and pps1 not:
root@bb-sdcard# ll /sys/class/pps/*
lrwxrwxrwx 1 root root 0 Aug 4 20:42 /sys/class/pps/pps0 ->
../../devices/virtual/pps/pps0/
lrwxrwxrwx 1 root root 0 Aug 4 20:42 /sys/class/pps/pps1 ->
../../devices/virtual/pps/pps1/
root@bb-sdcard# cat /sys/class/pps/pps0/assert
1407188062.999944873#3094
root@bb-sdcard# cat /sys/class/pps/pps1/assert
0.000000000#0
Syslog messages showing GPSD using less accurate PPS measurement instead of
KPPS:
Aug 4 20:42:13 bb-sdcard gpsd[1363]: gpsd:PROG: KPPS assert 0.000000000,
sequence: 0 - clear 0.000000000, sequence: 0
Aug 4 20:42:13 bb-sdcard gpsd[1363]: gpsd:PROG: KPPS data: using clear
Aug 4 20:42:13 bb-sdcard gpsd[1363]: gpsd:PROG: KPPS cycle: 0 uSec,
duration: 0 uSec @ 0.000000000
Aug 4 20:42:13 bb-sdcard gpsd[1363]: gpsd:RAW: PPS pps-detect on
/dev/ttyO5 changed to 1
Aug 4 20:42:13 bb-sdcard gpsd[1363]: gpsd:PROG: PPS cycle: 1000050 uSec,
duration: 199995 uSec @ 1407184933.203313318
Aug 4 20:42:13 bb-sdcard gpsd[1363]: gpsd:RAW: PPS edge rejected 1Hz
trailing edge
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:PROG: KPPS assert 0.000000000,
sequence: 0 - clear 0.000000000, sequence: 0
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:PROG: KPPS data: using clear
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:PROG: KPPS cycle: 0 uSec,
duration: 0 uSec @ 0.000000000
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:RAW: PPS pps-detect on
/dev/ttyO5 changed to 0
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:PROG: PPS cycle: 999973 uSec,
duration: 799977 uSec @ 1407184934.003291184
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:RAW: PPS edge accepted 1Hz
leading edge
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:RAW: PPS ntpshm_put
1407184934.000000000 @ 1407184934.003291184
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:INFO: PPS hooks called with
accepted 1407184934.003291184 offset -0.003291184
Aug 4 20:42:14 bb-sdcard gpsd[1363]: gpsd:PROG: PPS edge accepted
1407184934.003291184 offset -0.003291184
NTP syncing to GPIO PPS (127.127.22.0), not GPSD/CTS PPS (127.127.28.1):
root@bb-sdcard# ntpq -crv -pn
associd=0 status=011d leap_none, sync_pps, 1 event, kern,
version="ntpd [email protected] Thu Jul 31 18:42:54 UTC 2014 (2)",
processor="armv7l", system="Linux/3.8.13-bone59", leap=00, stratum=1,
precision=-19, rootdelay=0.000, rootdisp=1.165, refid=PPS,
reftime=d78a7b8f.133c7be8 Mon, Aug 4 2014 21:37:19.075,
clock=d78a7b9a.98131c27 Mon, Aug 4 2014 21:37:30.594, peer=21917, tc=4,
mintc=3, offset=-0.005, frequency=-27.669, sys_jitter=0.007313,
clk_jitter=0.000, clk_wander=0.001
remote refid st t when poll reach delay offset
jitter
==============================================================================
127.127.28.0 .GPS. 0 l 11 16 377 0.000 -1.311
0.111
127.127.28.1 .PPS. 0 l 11 16 377 0.000 -0.095
0.007
o127.127.22.0 .PPS. 0 l 11 16 377 0.000 -0.005
0.007
*172.16.15.100 .GPS. 1 u 37 64 377 7.644 -0.045
0.420
-50.7.0.66 128.138.141.172 2 u 30 64 377 35.170 -6.805
5.060
+204.235.61.9 128.10.19.24 2 u 34 64 377 44.352 -1.701
1.732
+206.217.199.65 204.9.54.119 2 u 32 64 177 35.892 -2.374
3.846
-96.226.242.15 204.9.54.119 2 u 9 64 77 14.801 2.163
1.655
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.