Спасибо. Как я понял, обработкой сигнала 1PPS будет заниматься драйвер устройства PPS, он и PPSAPI добавлены в ядро, надо только указать, какой пин анализировать. Поискал в инете, но инфы по тому, как связать /dev/pps0 и конкретный пин, не нашёл... Задача несколько эволюционировала - теперь хочу поставить сервер ntpd с коррекцией времени от приемника GPS по протоколу NMEA с использованием сигнала PPS. Для ntpd и надо устройство /dev/pps0.
хм.. задача становится интереснее, более того, мне в недалеком будущем могут потребоваться наработки вокруг PPS и GPS
к сожалению, сейчас занят совершенно другой тематикой..
имеет смысл заглянуть в /Documentation/pps
покопать потроха драйвера PPS (если он существует)
На самом деле, ещё интереснее придумать, что делать, если надо хранить шкалу времени с точностью, которую обеспечивает GPS, в отсутствии самого GPS (временного)... Хотя сейчас идёт движуха в сторону Глонасса...
Какое ядро у вас ? Я смотрю клиент pps-gpio появился буквально в последнем релизе, грепните исходники по имени структуры pps_gpio_platform_data, возможно в какой-то плате найдется пример. Судя по коду pps-gpio.c нужно зарегистрировать platform_device и передать эту структуру - указать пин gpio и название, драйвер сам его переключит на вход и навесит irq.
ядро 2.6.36. Спасибо за помощь, Sasamy, стало ясно, куда копать!
Хотя сразу возник вопрос - PPSAPI доступно и для более ранних ядер, а сигнал 1PPS никуда, кроме gpio, не заведёшь... Однако, это работает и без клиента pps-gpio... Но реализация клиента pps-gpio, естественно, самая универсальная.
У at91 прерывания от gpio генерируются по обоим фронтам, если флаги не соответствуют возможностям периферии то до регистрации обработчика дело не дойдет