LINUX.ORG.RU

GPS NTP server stratum 1 with kpps

 , , , ,


0

1

Здравствуйте. Надо поднять локальный NTP сервер класса stratum 1. Использую Geos 5m gps модуль, на котором есть PPS. Поднял Gpsd демон, данные он получает, а вот сигнал PPS нет. Для указания девайсов используется device tree. GPS демон выдает следующее.

Sep 20 11:03:22 localhost.localdomain systemd[1]: Starting GPS (Global Positioning System) Daemon...
Sep 20 11:03:22 localhost.localdomain systemd[1]: Started GPS (Global Positioning System) Daemon.
Sep 20 11:03:40 localhost.localdomain gpsd[1974]: gpsd:ERROR: /dev/pps0: device activation failed.
Sep 20 11:03:40 localhost.localdomain gpsd[1974]: gpsd:ERROR: /dev/pps0: activation failed, freeing device

PPS tools следующее.

[root@localhost ~]# ppstest /dev/pps0
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1600600961.355050557, sequence: 1876 - clear  0.000000000, sequence: 0
source 0 - assert 1600600962.355043151, sequence: 1877 - clear  0.000000000, sequence: 0
source 0 - assert 1600600963.355042594, sequence: 1878 - clear  0.000000000, sequence: 0
[root@localhost ~]# ppscheck /dev/pps0
# Seconds  nanoSecs   Signals
PPS ioctl(TIOCMIWAIT) failed: 25 Inappropriate ioctl for device

Вот кусок device tree, используется 0 gpio в emio, который настроен на p21 пин.

gpio0: gpio@e000a000 {
   compatible = "xlnx,zynq-gpio-1.0";
   #gpio-cells = <2>;
   clocks = <&clkc 42>;
   gpio-controller;
   interrupt-controller;
   #interrupt-cells = <2>;
   interrupt-parent = <&intc>;
   interrupts = <0 20 4>;
   reg = <0xe000a000 0x1000>;
  };
&gpio0 {
  emio-gpio-width = <1>;
  gpio-mask-high = <0x0>;
  gpio-mask-low = <0x5600>;
};

pps {
    compatible = "pps-gpio";
    gpios = <&gpio0 54 0>;
    assert-falling-edge;
  };


Последнее исправление: kiruseni (всего исправлений: 1)

У тебя, как я понял, какой-то одноплатник с gpio гребёной. Есть ли какая-то реакция ppstest, если на этот пин какую-нибудь кнопку повесить и потыкать её руками?
Ну и осциллографом ещё можно посмотреть, есть ли сигнал PPS на самом деле.
До gpio у меня руки не доходили, сам сталкивался с тем, что нужно было pps подавать строго на 1 контакт com-порта. На 4 контакте его не видело.

imul ★★★★★
()
Ответ на: комментарий от imul

У меня xilinx 7000 серии. Осцилом тыкался, есть сигнал. С той же частотой как и в ppstest. Кнопку не пробовал, но думаю будет реакция со стороны ОС. Ппс как бы есть, но для Gpsd демона нету.

kiruseni
() автор топика
Ответ на: комментарий от imul

Очень странно, что PPS tools имеет права, хоть и выкинул ошибку. А вот gpsd демон не имеет прав. Ему же просто надо читать данные. Или работать по прерыванию. Хотя pps core выделил ему номер прерывания. Ещё у меня все 16 прерываний в ps части заняты, и я сделн софт прерывания в pl.

kiruseni
() автор топика
Ответ на: комментарий от kiruseni

pps tools ты запускаешь от того пользователя, под которым сидишь. А демоны частенько имеют своего специального пользователя и группу, под которыми они запускаются и работают

cobold ★★★★★
()