Как определить GPIO-вывод как источник PPS

Вопрос или проблема

Я использую Linux в встроенной среде. Я хочу использовать определенный GPIO-вывод в качестве источника PPS для использования с GPSD. Так что, думаю, вывод настроен правильно, потому что я вижу переходы высокого и низкого уровней с помощью

cat /sys/class/gpio/gpio372/value

Я также определил GPIO-вывод в качестве источника PPS в дереве устройств.

/ {
chosen {
    bootargs = "console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4";
};

pps-gpio {
    compatible = "pps-gpio";
    gpios = <&gpio 372 GPIO_ACTIVE_HIGH>;
    echo-gpios = <&gpio 372 GPIO_ACTIVE_HIGH>;
    echo-active-ms = <100>;
};};

Обычно вы указываете GPSD использовать /dev/pps0, но я не уверен, как назначить GPIO-вывод устройству в /dev или как еще его настроить.

Ответ или решение

Чтобы настроить GPIO-вывод как источник PPS (Pulse Per Second) в среде Linux на встроенной системе и интегрировать его с GPSD, необходимо выполнить несколько шагов, включая конфигурацию устройства в дереве устройств (Device Tree), настройку самой GPIO и регистрацию устройства PPS. Ниже приведен подробный план действий.

1. Подготовка GPIO

Убедитесь, что выбранный вами GPIO-пин (в данном случае gpio372) правильно настроен и может генерировать сигналы. Использование команды cat /sys/class/gpio/gpio372/value подтвердило, что вы видите изменения на выводе, что указывает на корректную работу pина.

2. Конфигурация Device Tree

Как вы уже сделали, необходимо добавить в дерево устройств секцию, определяющую ваш GPIO как источник PPS. Ваш код выглядит правильно. Однако проверьте, что у вас правильный путь и синтаксис:

/ {
    chosen {
        bootargs = "console=ttyPS0,115200 earlyprintk uio_pdrv_genirq.of_id=generic-uio root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4";
    };

    pps-gpio {
        compatible = "pps-gpio";
        gpios = <&gpio 372 GPIO_ACTIVE_HIGH>;
        echo-gpios = <&gpio 372 GPIO_ACTIVE_HIGH>;
        echo-active-ms = <100>;
    };
};

Убедитесь, что ваш узел pps-gpio корректно добавляется в ваше устройство и компилируется библиотеками.

3. Регистрация PPS устройства

Для регистрации устройства PPS необходимо воспользоваться pps-gpio в ядре Linux. После включения параметров в дереве устройств, вы можете проверить наличие устройства /dev/pps0 с помощью следующей команды:

ls /dev/pps*

Если устройство не отображается, вам может потребоваться перезагрузить систему с новым деревом устройств или вручную зарегистрировать устройство.

4. Настройка GPSD

После успешного создания устройства PPS в /dev, следуйте этим шагам для использования его с GPSD:

  1. Убедитесь, что GPSD установлен и запущен. Обычно это можно сделать с помощью:

    sudo systemctl start gpsd
  2. После того как GPSD запустится, вы можете указать GPSD использовать ваше новое устройство, выполнив следующую команду:

    gpsd -N -G /dev/pps0

    или добавив строку в конфигурационный файл GPSD, чтобы он автоматически использовал GPIO.

5. Тестирование

После настройки просмотрите логи GPSD:

sudo journalctl -u gpsd

Проверьте, присутствуют ли сообщения об инициализации PPS. Если все настроено правильно, GPSD сможет использовать ваш GPIO как источник PPS для синхронизации времени.

Заключение

Таким образом, настройка GPIO как источника PPS в встроенной системе на базе Linux требует правильной конфигурации дерева устройств, регистрации устройства PPS и его интеграции с GPSD. Если у вас возникнут сложности на каком-либо этапе, обратитесь к документации вашего устройства или сообществу разработчиков для получения дополнительной информации.

Оцените материал
Добавить комментарий

Капча загружается...