实现嵌入式linux自动同步网络时间---NTP

因为ARM板断电重启问题,为保证能获取到准确的实时时间,所以需要实现自动从网络上获取时间,这就需要用到NTP。NTP是网络时间协议(Network Time Protocol)的简称,它是用来同步网络中各个计算机设备的时间的协议。目前有第三方的代码可以支持NTP,本文讲诉ntpclient的用法。

ntpclient is an NTP (RFC-1305) client for unix-alike computers. Its functionality is a small subset of xntpd, but IMHO performs better (or at least has the potential to function better) within that limited scope. Since it is much smaller than xntpd, it is also more relevant for embedded computers.
ntpclient is Copyright (C) 1997-2015 Larry Doolittle, and may be freely copied and modified according to the terms of the GNU General Public License, version 2.

ntpclient的下载地址是:http://doolittle.icarus.com/ntpclient/

下载好后,解压,进入解压后的目录进行交叉编译

1.修改Makefile

# To cross-compile
    CC = arm-none-linux-gnueabi-gcc

2.交叉编译

make

3.拷贝编译得到的ntpclient文件至目标板/sbin/目录下,并加可执行权限chmod  +x   ntpclient

然后我们需要一个网络授时服务器网址

http://www.ntp.org.cn/

这个是授时中心网页,在这个上面可以找到需要的授时中心网址

然后我们在开发板上运行程序

 ntpclient -s -d -c 1 -i 5 -h 202.108.6.95

设备会返回如下

[root@iTOP-4412]# ntpclient -s -d -c 1 -i 5 -h 202.108.6.95
Configuration:
  -c probe_count 1
  -d (debug)     1
  -g goodness    0
  -h hostname    202.108.6.95
  -i interval    5
  -l live        0
  -p local_port  0
  -q min_delay   800.000000
  -s set_clock   1
  -x cross_check 1
Listening...
Sending ...
packet of length 48 received
Source: INET Port 123 host 202.108.6.95
LI=0  VN=3  Mode=4  Stratum=2  Poll=4  Precision=-23
Delay=961.3  Dispersion=40679.9  Refid=10.69.2.34
Reference 3750052005.779027
(sent)    3590806877.094690
Originate 3590806877.094690
Receive   3750052666.964639
Transmit  3750052666.964667
Our recv  3590806877.137947
Total elapsed:  43425.00
Server stall:      27.02
Slop:           43397.98
Skew:          159245789848483.56
Frequency:             0
 day   second     elapsed    stall     skew  dispersion  freq
set time to 1541063866.964667000
41560 22877.138   43425.0     27.0  159245789848483.6  40679.9         0

其中那些参数可以阅读解压后的目录下的README文件,里面有详细的说明,需要提示的是-g不能使用,可能是嵌入式设备不支持。

使用date来查看一下系统时间:

Thu Nov  1 17:44:25 CST 2018

如果时区不是中国的东八区,可设置环境变量

export TZ=CST-8
设置后就可以显示中国时间了。

 

接下来是将前面命令加入开发板启动脚本,从而实现上电自动同步网络时间。

1.在开机脚本(我的是/etc/init.d/rcS)中修改下面几句话:

       #date -s "2018-10-31 11:20:35"     (注释掉这一行)

       ntpclient -s -d -c 1 -i 5 -h 202.108.6.95 >/dev/null &   (加入这一行,需加在获取网络命令行之后,确保先有网)

2.然后是添加系统环境变量,让开机后自动使用东八区(若之前已修改过系统硬件时钟配置文件,已改为东八区,则无需此步操作)

开发板文件系统/etc/profile中添加

export TZ=CST-8

然后就可以当开发板上电自动同步时间了。

 

 

  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
嵌入式Linux系统开发技术是指在嵌入式设备上使用Linux操作系统进行开发的技术。这种技术可以应用于各种嵌入式设备,如智能手机、电视机顶盒、路由器、工业控制系统等。在嵌入式Linux系统开发中,ARM架构是一种常用的处理器架构,它具有低功耗、高性能等特点,因此在嵌入式系统中得到广泛应用。 嵌入式Linux系统开发技术详解-基于arm.pdf下载提供了关于在ARM架构上进行嵌入式Linux系统开发的详细信息。这本书从ARM架构的基础知识开始讲解,介绍了嵌入式Linux系统的构建和配置,以及在ARM平台上进行驱动程序开发、应用程序开发等方面的技术内容。此外,书中还讲解了嵌入式Linux系统的调试和优化技术,帮助开发人员提高系统的性能和稳定性。 在嵌入式Linux系统开发中,掌握ARM架构的相关知识是非常重要的,因为ARM架构是嵌入式设备中最常用的处理器架构之一。通过深入学习嵌入式Linux系统开发技术,开发人员可以更好地理解嵌入式系统的工作原理,掌握系统开发中的关键技术,并且能够更好地应用于实际项目中,提高工作效率和项目质量。 总之,嵌入式Linux系统开发技术详解-基于arm.pdf下载是一本值得阅读的书籍,可以帮助开发人员更好地掌握在ARM架构上进行嵌入式Linux系统开发的技术,为他们在嵌入式系统开发领域取得更好的成就提供帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值