文档章节

嵌入式移植NTP(Network Time Protocol)

famince
 famince
发布于 2014/03/11 20:56
字数 1270
阅读 1268
收藏 8

ST板子OTT盒子没法通过实时码流获取时间,只能通过网络实时获取时间,这篇文档记录下自己解决的整个过程,网上已经有很多NTP 服务器配置、ARM板子移植博文,大家可以参考,详细原理我也是查阅网上的资料;


1、NTP官网下载源码:

http://www.ntp.org/downloads.html


2、编译

[root@bogon ntp-4.2.6p5]#./configure --prefix=/opt/ntp --exec-prefix=/opt/ntp --host=sh4-linux CC=/opt/STM/STLinux-2.4/devkit/sh4/bin/sh4-linux-gcc

其中:

If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries.

通常对于嵌入式系统来说,--target、--build不需要更改;

交叉编译参数只需要指定 --host=sh4-linux 即可;


接着编译:

[root@bogon ntp-4.2.6p5]# make
ntp_loopfilter.c:520:27: error: ?.OD_NANO?.undeclared (first use in this function)

参考网上,修改 ntp_loopfilter.c:

[root@bogon ntp-4.2.6p5]# find ./ -name ntp_loopfilter.c
./ntpd/ntp_loopfilter.c

添加下面定义:

ifndef MOD_NANO

#define MOD_NANO 0x2000

#endif


最后编译成功,生成了对应文件:

[root@bogon ntp-4.2.6p5]# make install
[root@bogon ntp]# pwd
/opt/ntp
[root@bogon ntp]# ls bin/
ntpd  ntpdate  ntpdc  ntp-keygen  ntpq  ntptime  ntptrace  ntp-wait  sntp  tickadj


3、配置ntp,同时调用ntpdate 同步时间;

a>首先把上面bin目录下的需要的命令文件拷贝到开发板的/bin目录下,或者全部拷贝过去,

b>同时把服务器/etc/ntp.conf 拷贝到板子上同样目录下,并设置时间同步服务器为:

server 2.cn.pool.ntp.org
server 1.asia.pool.ntp.org

http://www.pool.ntp.org这上面我们可以找到离我们城市最近的NTP Server. NTP建议我们为了保障时间的准确性,最少找两个个NTP Server;我选择了下面两个服务器:


c>接下来在板子后台,使用ntpdate同步授时服务器时间:

# ntpdate 2.cn.pool.ntp.org
ntpdate: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory

解决方法: 在交叉编译工具目录:/opt/STM/STLinux-2.4/devkit/sh4/target/usr/lib下拷贝libcap.so.2和libattr.so.1 到开发板上;


②上面OK后,提示下面:

# ntpdate 2.cn.pool.ntp.org
Error resolving cn.pool.ntp.org: Servname not supported for ai_socktype (-8)
 1 Jan 00:01:04 ntpdate[1734]: Can't find host cn.pool.ntp.org: Servname not supported for ai_socktype (-8)
 1 Jan 00:01:04 ntpdate[1734]: no servers can be used, exiting

解决方法: 需要设置ntp对应网口(这个我在服务器上看着是有的,板子上没有这个文件), 在/etc/services加入两行

ntp             123/tcp
ntp             123/udp                         # Network Time Protocol


③提示如下:

# ntpdate 2.cn.pool.ntp.org
 1 Jan 00:01:27 ntpdate[1765]: no server suitable for synchronization found
# ntpdate -d cn.pool.ntp.org
 1 Jan 00:01:36 ntpdate[1803]: ntpdate 4.2.6p5@1.2349 Fri Mar  7 11:01:43 UTC 2014 (2)
Looking for host cn.pool.ntp.org and service ntp
host found : dns.sjtu.edu.cn
transmit(202.120.2.101)
transmit(218.75.4.130)
transmit(202.112.29.82)
transmit(202.112.31.197)
transmit(202.120.2.101)
transmit(218.75.4.130)
transmit(202.112.29.82)
transmit(202.112.31.197)
transmit(202.120.2.101)
transmit(218.75.4.130)
transmit(202.112.29.82)
transmit(202.112.31.197)
transmit(202.120.2.101)
transmit(218.75.4.130)
transmit(202.112.29.82)
transmit(202.112.31.197)
transmit(202.120.2.101)
transmit(218.75.4.130)
transmit(202.112.29.82)
transmit(202.112.31.197)
202.120.2.101: Server dropped: no data
218.75.4.130: Server dropped: no data
202.112.29.82: Server dropped: no data
202.112.31.197: Server dropped: no data
server 202.120.2.101, port 123
stratum 0, precision 0, leap 00, trust 000
refid [202.120.2.101], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: 00000000.00000000  Thu, Feb  7 2036  6:28:16.000
transmit timestamp:  bc17c266.45aa6c31  Sat, Jan  1 2000  0:01:42.272
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
server 218.75.4.130, port 123
stratum 0, precision 0, leap 00, trust 000
refid [218.75.4.130], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: 00000000.00000000  Thu, Feb  7 2036  6:28:16.000
transmit timestamp:  bc17c266.78dc33a9  Sat, Jan  1 2000  0:01:42.472
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
server 202.112.29.82, port 123
stratum 0, precision 0, leap 00, trust 000
refid [202.112.29.82], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: 00000000.00000000  Thu, Feb  7 2036  6:28:16.000
transmit timestamp:  bc17c266.ac0d0ae2  Sat, Jan  1 2000  0:01:42.672
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
server 202.112.31.197, port 123
stratum 0, precision 0, leap 00, trust 000
refid [202.112.31.197], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Thu, Feb  7 2036  6:28:16.000
originate timestamp: 00000000.00000000  Thu, Feb  7 2036  6:28:16.000
transmit timestamp:  bc17c266.df4488f9  Sat, Jan  1 2000  0:01:42.872
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000
 1 Jan 00:01:44 ntpdate[1803]: no server suitable for synchronization found

解决方法: 悲剧乎,公司内网要认证才能上网,找了根VPN外网就好了;


接着:

# ntpdate cn.pool.ntp.org
11 Mar 12:13:23 ntpdate[1781]: step time server 218.75.4.130 offset 447855103.036517 sec

OK,这下成功了,不过这个时间是不对的,现在准确应该是20:13左右,这是因为没有设置时区,这个是0时区的时间;

解决方法: 从服务器上把/usr/share/zoneinfo/Asia中的文件Shanghai拷贝到开发板目录/etc中并且改名为localtime;


最后:

# ntpdate cn.pool.ntp.org
11 Mar 20:21:29 ntpdate[1822]: step time server 218.75.4.130 offset 447855575.325113 sec
# date
Tue Mar 11 20:21:44 CST 2014

这下基本OK,没有问题了;


实际情况下,注意 ntpdate 时间更新对依赖时间的模式产生的影响,我这边还一堆连锁问题等着改...


参考:

Linux NTP配置详解 (Network Time Protocol)

http://blog.csdn.net/iloli/article/details/6431757

NTP移植和使用

http://m.blog.csdn.net/blog/orange1988319/8880788


© 著作权归作者所有

famince
粉丝 10
博文 19
码字总数 34161
作品 0
深圳
高级程序员
私信 提问
NTP协议实现

10.4 实验内容 ——NTP协议实现 1.实验目的 通过实现NTP协议的练习,进一步掌握Linux网络编程,并且提高协议的分析与实现能力,为参与完成综合性项目打下良好的基础。 2.实验内容 Network ...

徐学良
2016/07/12
107
0
网络时间协议--NTP

网络时间协议(Network Time Protocol,NTP)是以交换封包把两台电脑的时钟同步化的网络协议。NTP使用udp123作为端口。 NTP是仍在使用中的最古老的网络协议之一(在1985前开始),是使用最广...

匿名
2013/06/07
1K
0
NTP 4.2.8 发布,网络时间协议

NTP 4.2.8 发布,此版本现已提供下载: http / md5 http proxy / md5 详细内容请看文档。 网络时间协议(Network Time Protocol,NTP)是以交换封包把两台电脑的时钟同步化的网络协议。NTP使...

oschina
2014/12/20
3.2K
2
NTP服务部署

1. NTP简介 NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联...

游骑兵vtx
2018/01/09
0
0
Win Server 2012搭建NTP服务器

NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地...

惊风狼
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
1
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
2
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
5
0
拉普拉斯算子

拉普拉斯算子是二阶微分算子。 我们知道,一维离散信号一阶微分公式如下: 相应的,一维离散信号二阶微分公式如下: 由于图像有x和y两个方向,因此图像信号属于二维离散信号。其在x,y两个...

yepanl
昨天
3
0
记录"正则表达式"

详细请查看我的博客:https://blog.enjoytoshare.club/article/RegularExpression.html 1 写在前面 正则表达式(Regular Expression)在代码中常常简写为regex。正则表达式通常被用来检索、替...

wugenqiang
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部