您的位置 首页 动态

linux RTC测验

先简单介绍date与hwclock的异同。相同点:都是表示时间的。差异点:date 是表示系统的时间,假如在系统启动时没有设置的话,系统都会从1970年开始。hwc

先简略介绍date与hwclock的异同。

相同点:都是表明时刻的。

差异点:

date 是表明体系的时刻,假如在体系发动时没有设置的话,体系都会从1970年开端。

hwclock是表明硬件的时刻,如时钟芯片或主芯片自带的rtc里边的时刻。

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就能够用了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/297541.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部