您的位置:首页 > 运维架构

[ARM笔记]unable to ope…

2013-05-07 20:14 190 查看



[ARM笔记]unable to open rtc device
(rtc0)

2011-03-29 11:31:31| 分类: ARM|字号 订阅

From:http://blogold.chinaunix.net/u2/63560/showart_518707.html

从启动信息可以看出没有加载成功RTC驱动!

TCP cubic registered

NET: Registered protocol family 1

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

drivers/rtc/hctosys.c: unable to open rtc device (rtc0)

S3C2410的RTC已经在2.6.24.4 kernel中,但是没有加入SMDK2410
targetboard,

所以我们只需要将RTC加入初始化的设备列表中。

1. menu config中RTC部分使用默认设置。

2.
修改文件mach-smdk2410.c(/linux2.6.24.4/arch/arm/mach-s3c2410/mach-smdk2410.c),在数组smdk2410_devices[]中添加&s3c_device_rtc.

3. 在/dev目录下创建rtc设备文件rtc.

#mknod rtc c 10 135

4. 重新编译内核。看看启动信息。

……

S3C24XX RTC, (c) 2004,2006 Simtec Electronics

s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling

s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0

……

( 以上信息说明RTC设备已经加入内核了。)

……

s3c2410-rtc s3c2410-rtc: hctosys: invalid date/time

……

以上信息说明可能还没有设置RTC时间,RTC初始时间为 Wed Dec 31 23:59:59 1969。从内核函数int
rtc_valid_tm(struct rtc_time *tm),可以看出,当year小于1970时,认为是时间
invalid,函数返回-EINVAL,下面来验证一下这个想法。
[root@kevin /]#
hwclock

Wed Dec 31 23:59:59 1969 0.000000
seconds

[root@kevin /]# date

Thu Jan 1 00:06:58 UTC 1970

系统时间是通过date来设置的,RTC时间是通过hwclock来设置的。开机时系统时间首先通过RTC来获得,RTC没有设置时,系统时间也会使用Wed
Dec 31 23:59:59 1969。

[root@kevin /]# hwclock --help

BusyBox v1.9.2 (2008-04-01 21:32:34 CST) multi-call
binary

Usage: hwclock [-r|--show] [-s|--hctosys] [-w|--systohc]
[-l|--localtime] [-u|--utc] [-f FILE]

Query and set a hardware clock (RTC)

Options:

-r
Read hardware clock and print result

-s
Set the system time from the hardware clock

-w
Set the hardware clock to the system time

-u
The hardware clock is kept in coordinated universal time

-l
The hardware clock is kept in local time

-f
FILE
Use the specified clock (e.g. /dev/rtc2)
[root@kevin /]#
hwclock -s

hwclock: settimeofday() failed: Invalid argument

[root@kevin /]# hwclock -w

s3c2410-rtc s3c2410-rtc: rtc only supports 100 years

hwclock: RTC_SET_TIME: Invalid argument

以上错误信息都是因为year设置不当引起的。没有设置RTC,RTC也不会启动计时。

下面首先设置正确的系统时间,然后将系统时间传递给RTC。

[root@kevin /]# date 040612282008.20

Sun Apr 6 12:28:20 UTC 2008

[root@kevin /]# hwclock -w

[root@kevin /]# hwclock

Sun Apr 6 12:29:01 2008
0.000000 seconds

[root@kevin /]# hwclock

Sun Apr 6 12:30:15 2008
0.000000 seconds

Ok,RTC开始工作了!

为了使系统时间和RTC时间同步,可以在初始化文件中添加命令

Hwclock –s

使每次开机时读取RTC时间,并同步给系统时间。

在etc/init.d/rcS中添加

#+kevin080305

/bin/hwclock -s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: