1.前言
本文档主要介绍通过ntp服务实现开发板的联网自动校对时间。
2.简介
ntp的下载编译,以及开发板接通外网,实现ntp服务。
3.开发环境
开发语言:C语言
编 译 器:arm-linux-geaubihf-gcc
编辑工具:vi,vim
下载工具:浏览器内置下载
调试工具:超级终端win7版本
调试方式:串口输出LOG信息
4.编译环境安装(简)
Win7下安装好VMware Workstation11(下载地址:http://www.xpgod.com/soft/20113.html)下载好后按操作步骤安装(https://jingyan.baidu.com/article/a3a3f811d6d32e8da2eb8a33.html)
下载Ubuntu14.04镜像(http://releases.ubuntu.com/14.04/ubuntu-14.04.5-desktop-amd64.iso)然后在VMware 11 里安装,创建虚拟机选择稍后安装系统:
内存:2GB(大于等于1GB即可)
处理器:4(自主选择)
硬盘:50GB(大于等于40GB)
网络适配器:选择桥接
然后重启该虚拟机选择前面下载下来的镜像安装好Ubuntu。
然后在VMware界面点击菜单上的虚拟机选项,选择安装VMware Tools。安装步骤(https://jingyan.baidu.com/article/1974b289b813dcf4b1f77411.html)。
安装完这个工具之后,重启Ubuntu,Win7和Ubuntu就可以互传文件了。
在win7上下载AM335x SDK(http://downloads.ti.com/processor-sdk-linux/esd/AM335X/latest/exports/ti-processor-sdk-linux-am335x-evm-04.01.00.06-Linux-x86-Install.bin?tracked=1)下载完成后直接拉到Ubuntu桌面。
在Ubuntu下用Ctrl+Alt+T打开中端,输入sudo –s 再输入su –root获取root权限。
然后在终端下找到刚刚拉过去的bin文件,通过chmod +X bin文件名再用./bin文件安装SDK,这里会进入图形界面安装,按要求安装好SDK后,我们需要配置开发环境。
具体步骤可以看TI的官方文档。
5.下载ntp源码包并编译
上网查找ntp的源码包(下载地址:http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-dev/ntp-dev-4.3.93.tar.gz),
下载下来,在之前下载配置好的am335x的开发环境中进行交叉编译,步骤如下:
1.解压ntp源码包到指定目录
root@ubuntu2:/home/faceless/share# tar -zxvf ntp-dev-4.3.93.tar.gz
2.进入刚解压的目录,并配置
(1)root@ubuntu2:/home/faceless/share# cd ntp-dev-4.3.93.tar.gz
(2)在ntpd/ntp_loopfilter.c中增加下面的宏定义
#ifndef MOD_NANO
#define MOD_NANO 0x2000
#endif
(3)root@ubuntu2:/home/faceless/share/ntp-dev-4.3.93# ./configure –prefix=$PWD/install –exec-prefix=$PWD/install –host=arm-linux CC=arm-linux-geaubihf-gcc
注意:a.指定的安装目录位源码目录下的install文件夹, b.运行configure前要先设置好arm-linux开发环境,否则报错。
在安装目录下成功生成了Makefile文件。
3.编译安装
root@ubuntu2:/home/faceless/share/ntp-dev-4.3.93# make
root@ubuntu2:/home/faceless/share/ntp-dev-4.3.93# make install
4.安装完成后,在安装目录install下有几个文件夹
root@ubuntu2 : /home/faceless/share/ntp-dev-4.3.93/install# ls
bin libexec sbin share
进入bin文件夹,里面的命令文件如下:
root@ubuntu2 : /home/faceless/share/ntp-dev-4.3.93/install/bin# ls
calc_tickadj ntpd ntpdate ntpdc ntp-keygen ntpq ntptime ntptrace ntp-wait sntp tickad update-leap
5.将需要的文件拷贝进开发板的/bin目录下
ntpdate和ntp
6.让开发板能够接入外网
1.共享或桥接
将电脑的无线网络共享或者桥接到本地连接:
共享:打开右下角的网络和共享中心,鼠标右键单击无线网络连接,选择属性,属性界面点击共享,勾选Internet连接共享,确定保存。
桥接:打开右下角的网络和共享中心,按住Ctrl键,鼠标左键单击本地连接和无线网络连接,此时同时选中,鼠标右键单击桥接
两种选其一即可,我用的是网络桥接。桥接后计算机的ipv4地址为
2.使开发板能够ping通外网
我通过终端输入ifconfig eth0 192.168.10.106指令将开发板的IP更改到与计算机同一频段
此时我ping 8.8.8.8,得到结果如下
发现网关不通,然后我修改了开发板的默认网关
终端下执行命令route add default gw 192.168.10.1
然后再次ping 8.8.8.8,发现可以ping通
接下来我ping了外网,ping www.baidu.com ,ping不通。
可能是开发板的DNS有问题,接下来我对开发板的DNS进行了设置
终端输入vi /etc/resolv.conf,进行编辑
编辑完成后按ESC键,按住shift键+:键,然后输入wq按Enter键保存,保存后
再次对www.baidu.com进行ping,结果如下,等一段时间后,发现可以ping通。
此时开发板接入了外网。
7.用ntpdate命令自动校时
我用ntpdate命令更新网络时间,ntpdate 0.pool.ntp.org
(0.pool.ntp.org是智能dns的ntp服务器,返回的基本都是中国的ntp服务,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org同上)
板子时间成功被校准,与网络上的时间同步。
测试我的最终目的是否达成:
在终端键入date命令,看下此时的开发板时间,并通过date命令修改时间(时间随机),查看板子rtc时间,hwclock,再使用hwclock –w命令更新板子时间到rtc中。
再次用ntpdate 0.pool.ntp.org更新时间
经验证,可以完成校时。