我有一个带I/O引脚的主板,我编写了一个C库,其中包含设置和查询这些I/O引脚状态的功能.假设其中一个函数的名称是get_pin(int pin_no),它返回该引脚的逻辑电压.我想向我的一个引脚发送1脉冲/秒(PPS)信号,并告诉Linux的NTPD根据该信号进行校准.
是否有可能告诉NTPD使用其中一个I/O引脚作为其PPS?如果是这样,这样做的方法是什么?IE浏览器.是通过配置文件还是需要修改NTPD的源代码?我早期的研究似乎表明后者可能是必要的.
编辑:我正在使用Centos上的ntpd
小智 3
你的内核有 PPS 支持吗?
$ grep PPS /boot/config-$(uname -r)
# PPS support
CONFIG_PPS=m
# CONFIG_PPS_DEBUG is not set
# PPS clients support
# CONFIG_PPS_CLIENT_KTIMER is not set
CONFIG_PPS_CLIENT_LDISC=m
CONFIG_PPS_CLIENT_PARPORT=m
CONFIG_PPS_CLIENT_GPIO=m
# PPS generators support
Run Code Online (Sandbox Code Playgroud)
是否已ldattach安装?
$ which ldattach
/usr/sbin/ldattach
Run Code Online (Sandbox Code Playgroud)
你可能不需要ldattach。LinuxPPS安装说明中提到了这一点。然而,它似乎仅用于通过串行线路(例如RS-232)发送的PPS。
都pps-tools安装了吗?
$ which ppstest
/usr/bin/ppstest
Run Code Online (Sandbox Code Playgroud)
模块安装了吗pps-gpio.ko?
$ modinfo pps-gpio
filename: /lib/modules/4.4.0-38-generic/kernel/drivers/pps/clients/pps-gpio.ko
version: 1.0.0
license: GPL
description: Use GPIO pin as PPS source
author: James Nuss <jamesnuss@nanometrics.ca>
author: Ricardo Martins <rasm@fe.up.pt>
srcversion: D2C22B0A465DA63746EFB59
alias: of:N*T*Cpps-gpio*
depends: pps_core
intree: Y
vermagic: 4.4.0-38-generic SMP mod_unload modversions
Run Code Online (Sandbox Code Playgroud)
您可以通过在 GRUB 配置中的内核行中添加类似内容来告诉内核 GPIO 引脚将用作 PPS 信号:
dtoverlay=pps-gpio,gpiopin=18
Run Code Online (Sandbox Code Playgroud)
您需要将“18”更改为您正在使用的 GPIO 引脚。
您需要将几行添加到您的ntp.conf:
server 127.127.22.1 # ATOM(PPS)
fudge 127.127.22.1 flag3 1 # enable PPS API
Run Code Online (Sandbox Code Playgroud)
参考:
http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm
http://linuxpps.org/wiki/index.php/Main_Page
http://rdlazaro.info/compu-Raspberry_Pi-RPi-stratum0.html
http://doc.ntp.org/4.1.1/refclock.htm
http://doc.ntp.org/4.1.1/driver22.htm
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |