嵌入式Linux下RTC时间的读写

Linux系统下包含两个时间:系统时间和RTC时间。
系统时间:是由主芯片的定时器进行维护的时间,一般情况下都会选择芯片上最高精度的定时器作为系统时间的定时基准,以避免在系统运行较长时间后出现大的时间偏移。特点是掉电后不保存。
RTC时间:是指系统中包含的RTC芯片内部所维护的时间。RTC芯片都有电池+系统电源的双重供电机制,在系统正常工作时由系统供电,在系统掉电后由电池进行供电。因此系统电源掉电后RTC时间仍然能够正常运行。

每次Linux系统启动后在启动过程中会检测和挂载RTC驱动,在挂载后会自动从RTC芯片中读取时间并设置到系统时间中去。此后如果没有显式的通过命令去控制RTC的读写操作,系统将不会再从RTC中去获取或者同步设置时间。

linux命令中的date和time等命令都是用来设置系统时间的,而hwclock命令是用来设置和读写RTC时间的。

读系统时间:date
设置系统时间:date -s 011209512012.00              设置系统时间为2012年1月12日9点51分00秒
注:date -s命令设置时间只会影响系统时间,不会设置RTC时间,如果需要把当前系统时间同步设置到RTC中,需要额外调用hwclock命令。

hwclock命令使用:
hwclock -r      读取并打印当前的rtc时间
hwclock -s     读取RTC时间并设置到系统时间中去
hwclock -w     把当前的系统时间设置到RTC中

因此完整的设置RTC的时间可执行如下命令:
date -s 011209512012.00
hwclock -w 

另外为了在启动时自动执行RTC时间同步到系统时间,可以把
hwclock -s
加入到rc.local或者rcS文件中。


参考资料

http://blog.csdn.net/sailor_8318/article/details/2310459

http://blog.csdn.net/linfeng999/article/details/6431670

首先下载ntp的源代码

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

解压缩之后,编译:

./configure --prefix=/opt/ntp-arm --exec-prefix=/opt/ntp-arm  --host=arm-linux --enable-all-clocks --enable-parse-clocks && make && make install

将生成的bin目录和lib目录(lib目录好像是空的)拷贝到开发版上面。


编译pc版本:

./configure --prefix=/opt/ntp-PC --exec-prefix=/opt/ntp-PC --enable-all-clocks --enable-parse-clocks  && make && make install


一般来说编译都会很顺利。于是,我们剩下的任务就是来写配置文件,进而来使用了。

主要用到ntp.conf文件,可以参考下面的文章

http://pc51.net/system/unix/freebsd/2007-06-17/8382_3.html

下面来讲述如何进行ntp服务器架设。

可以参考http://publish.it168.com/2006/0328/20060328019101.shtml

首先,选择一台服务器作为ntpserver,编写ntp.conf文件如下:

zxzxy@zxzxy-Founder-PC:/etc$ cat /etc/ntp.conf 

#restrict default nomodify notrap noquery

restrict 127.0.0.1

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

server  127.127.1.0     # local clock

fudge   127.127.1.0 stratum 5

driftfile /var/lib/ntp/drift

broadcastdelay  0.008

keys            /etc/ntp/keys



主要的几句话就是stratum 5  是5层的意思(这个说实话,我也不知道啥意思,但是,经过查阅资料,应该就设为这个数),高了不行。

然后,运行ntpd /etc/ntp.conf,ntp服务就运行起来了。(可以使用ps -aux | grep ntp来看看是否启动了)

随后,在客户端运行ntpdate 服务器ip就可以。如
ntpdate 192.168.1.1
如果遇到错误,可以运行ntpdate -d 192.168.1.1
-d是debug模式的意思,这样就可以看出中间哪一步出问题了。

不要忘了使用hwclock命令,把时间写入bios
hwclock -w 

如果想定时更新的话,需要用到crontab,这个命令干啥用的,可以自行百度。基本上就是定时执行任务的东东。
在终端输入crontab -e
如果出现


 " chdir(/var/spool/cron/crontabs): No such file or directory"错误,


运行 mkdir /var/spool/cron/crontabs  创建即可。我是这么写的:


mkdir -p /var/spool/cron/crontabs #for crontab use                              

echo '*/2 * * * * /ntp-arm-bin/ntpdate 192.168.1.1' > /var/spool/cron/crontabs/r

oot                                                                             

crond & #start cron daemon


关于crontab也可以参考

http://liguxk.blog.51cto.com/129038/123555


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值