0hwclock与date

来源:互联网 发布:手机淘宝店铺号怎么看 编辑:程序博客网 时间:2024/05/16 18:53

转自: http://blog.ifeng.com/article/17624888.html   

weibo_mily 

date与hwclock的相同点:

都是表示时间的。

date与hwclock的 差异点:

1. date 是表示系统的时间,假如在系统启动时没有设置的话,系统都会从1970年开始。

2.hwclock是表示硬件的时间,如时钟芯片或主芯片自带的rtc里面的时间。

3. Date就不做介绍了,看下hwclock

# hwclock --help

BusyBox v1.14.1 (2010-01-22 10:35:16 CST) multi-call binary

Usage: hwclock [-r] [-s] [-w] [-l] [-u] [-f FILE]

Query and set hardware clock (RTC)

Options:

-r Show hardware clock time

-s Set system time from hardware clock

-w Set hardware clock to system time

-u Hardware clock is in UTC

-l Hardware clock is in local time

-f FILE Use specified device (e.g. /dev/rtc2)

应该说解释的很详细了,但是-s与-w选项,我个人觉得解释的会让人误解,可以这么理解

-s Set system time from hardware clock 从硬件时钟读取数据到系统时钟,主要用于刚开始时,系统时钟从硬件时钟读取时间信息,如果没有这步,则系统时间就会为1970年了。

-w Set hardware clock to system time 把系统时钟设置到硬件时钟里面,主要用于设置硬件时钟的时间,比如在使用busybox制作的根文件系统中,要设置时间有2个步骤:1,先使用date设置系统时间;2,再利用hwclock –w把当前系统时间写到硬件时钟里面。如果没有第二步,下次启动时,系统时间是不会更新的。

可以看看下面例子:

# date

Thu Jan 1 12:10:11 UTC 1970

# hwclock

Thu Jan 1 12:10:13 1970 0.000000 seconds

时间是一致的(当然了秒不一样,是我操作需要时间的原因)

用date 设置下时间

# date -s 13:00:00

Thu Jan 1 13:00:00 UTC 1970

# date

Thu Jan 1 13:00:02 UTC 1970

# hwclock

Thu Jan 1 12:14:27 1970 0.000000 seconds

很明显设置后date 与hwclock显示不一样

然后,使用

# hwclock -w

# date

Thu Jan 1 13:01:27 UTC 1970

# hwclock

Thu Jan 1 13:01:29 1970 0.000000 seconds

很明显,时间又一致了。

然后,再来看下驱动。

先把at91sam9263自带的rtc配置上,启动的时候提示

rtc-at91sam9 at91_rtt.0: hctosys: unable to read the hardware clock

于是用hwclock来检查,到底是哪里出了问题

# hwclock

hwclock: can’t open ’/dev/misc/rtc’: No such file or directory

没有这个设备,需要建立一个

查看下rtc设备号

# cat /proc/devices

Character devices:

1 mem

2 pty

3 ttyp

4 /dev/vc/0

4 tty

4 ttyS

5 /dev/tty

5 /dev/console

5 /dev/ptmx

7 vcs

10 misc

13 input

90 mtd

128 ptm

136 pts

153 spi

253 pcmcia

254 rtc

Block devices:

1 ramdisk

7 loop

31 mtdblock

179 mmc

#

rtc是254,建立设备

# mknod /dev/misc/rtc c 254 0

这里查看下busybox的源码

int FAST_FUNC rtc_xopen(const char **default_rtc, int flags)

{

int rtc;

if (!*default_rtc) {

*default_rtc = "/dev/rtc";

rtc = open(*default_rtc, flags);

if (rtc >= 0)

return rtc;

*default_rtc = "/dev/rtc0";

rtc = open(*default_rtc, flags);

if (rtc >= 0)

return rtc;

*default_rtc = "/dev/misc/rtc";

}

return xopen(*default_rtc, flags);

}

就会发现调用hwclock时做了3次尝试,随便你用/dev/rtc,/dev/rtc0,/dev/misc/rtc哪个设备都可以,若3个都没有就会提示错误。

为了简单,以后就弄个/dev/rtc0

# mknod /dev/rtc0 c 254 0

再用hwclock 查看下

# hwclock

Thu Jan 1 00:05:41 1970 0.000000 seconds

就有了时间了。

如果时钟芯片或主芯片自带的时钟格式有问题的话,会出现如下错误

# hwclock

hwclock: RTC_RD_TIME: Invalid or incomplete multibyte or wide character

这里就需要把系统的时间设置到时钟芯片或主芯片自带的rtc里面去,如下

#hwclock –w

然后rtc就可以用了。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 单反m档拍出来照片是黑色怎么办 从兴趣部落老发骚扰信息怎么办 在厂里辞一个月厂长不批怎么办 在厂里做管理被员工恐吓怎么办 在葡京娱乐输了很多钱怎么办 从珠海入镜澳门北京往返签注怎么办 艾艾灸灸了一身小子子怎么办? 微信视频已过期或已清理怎么办 视频已过期或已被清理怎么办 小孩作业不会老婆天天吵骂打怎么办 苹果手机在太阳下屏幕变暗怎么办 斗鱼的鱼丸竞猜主播结算了怎么办 附近有个小姐姐想加她好友怎么办 孩子出现听别人说话语速很快怎么办 苹果手机上的邮件删了怎么办 手机qq邮箱独立密码忘记了怎么办 哺乳期吃了人参回奶了怎么办? 扣扣邮箱里的邮件过期了怎么办 一体机的管理员账号被删除了怎么办 手机里的邮箱重要吗删除了怎么办 华为荣耀10账号邮箱忘记了怎么办 大陆微信号在台湾登录不上怎么办 威纶触摸屏被禁止到反编译了怎么办 微信公众号邮箱被占用怎么办 京东绑定的手机号不用了怎么办 绑定微信的手机号不用了怎么办 绑定支付宝的手机号不用了怎么办 百度账号手机号换了密码忘了怎么办 换手机好了华为账号密码忘了怎么办 苹果手机忘了id账号和密码怎么办 金立手机账号密码忘了怎么办 乐视手机账号密码忘了怎么办 企业邮箱发出去邮件撤不回来怎么办 餐厅加热保温设备零线带电怎么办 小米手机不小心把照片删了怎么办 华为手机不小心把照片删了怎么办 网易邮箱被改成别人的姓名怎么办 苹果手机忘记id密码和邮箱怎么办 163邮箱下载的附件没有了怎么办 小米自带浏览器打开网页太慢怎么办 再歪一点授权码忘记了怎么办