由于ARM板断电重启问题ubuntu linux,为保证能获取到确切的实时时间,所以须要实现手动从网路上获取时间,这就须要用到NTP。NTP是网路时间合同(NetworkTimeProtocol)的简称linux 版本,它是拿来同步网路中各个计算机设备的时间的合同。目前有第三方的代码可以支持NTP,本文讲诉ntpclient的用法。
ntpclientisanNTP(RFC-1305)clientforunix-alikecomputers.Itsfunctionalityisasmallsubsetofxntpd,butIMHOperformsbetter(oratleasthasthepotentialtofunctionbetter)withinthatlimitedscope.Sinceitismuchsmallerthanxntpd,itisalsomorerelevantforembeddedcomputers.
ntpclientisCopyright(C)1997-2015LarryDoolittle,andmaybefreelycopiedandmodifiedaccordingtothetermsoftheGNUGeneralPublicLicense,version2.
ntpclient的下载地址是:
下载好后,解压,步入解压后的目录进行交叉编译
1.更改Makefile
# To cross-compile
CC = arm-none-linux-gnueabi-gcc
2.交叉编译
make
3.拷贝编译得到的ntpclient文件至目标板/sbin/目录下,并加可执行权限chmod+xntpclient
之后我们须要一个网路授时服务器网址
这个是授时中心网页linux 开发arm,在这个里面可以找到须要的授时中心网址
之后我们在开发板上运行程序
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
假如时区不是中国的东八区linux 开发arm,可设置环境变量
exportTZ=CST-8
设置后就可以显示中国时间了。
接出来是将后面加入开发板启动,进而实现上电手动同步网路时间。
1.在开机(我的是/etc/init.d/rcS)中更改下边几句话:
本文原创地址://q13zd.cn/abddcqhrhzdc.html编辑:刘遄,审核员:暂无