分类: 嵌入式
2010-04-26 19:19:24
Linux
【平台信息】
目标板(Nano2410)------------------------
CPU:
S
SDRAM:
HY57V561620(32MB)
FLASH:
K
NET: CS8900
HOST---------------------------------------
Linux Realse
Version: Fecora Cor 8
(FC8)
CrossCompiler: gcc-
从启动信息可以看出没有加载成功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)
IP-Config:
Complete:
device=eth0, addr=192.168.0.69,
mask=255.255.255.0, gw=192.168.0.1,
host=www, domain=,
nis-domain=kevin.com,
bootserver=192.168.0.104,
rootserver=192.168.0.104, rootpath=
Looking up
S
所以我们只需要将RTC加入初始化的设备列表中。
1. menu config中RTC部分使用默认设置。
2. 修改文件mach-smdk2410.c(/linux
3. 在/dev目录下创建rtc设备文件rtc.
mknod rtc c 10 135
4. 重新编译内核。看看启动信息。
……
S
s
s
……
( 以上信息说明RTC设备已经加入内核了。)
……
s
……
以上信息说明可能还没有设置RTC时间,RTC初始时间为 Wed Dec 31
23:59:59 1969。从内核函数int
rtc_valid_tm(struct rtc_time *tm),可以看出,当year小于1970时,认为是时间
invalid,函数返回-EINVAL,下面来验证一下这个想法J
[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
v
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
s
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
------------------------------------------------------
有什么问题欢迎交流:
QQ:21744485
Email:zhang8083@163.com
QQ Group:7152476 (ARM&Linux研究)
------------------------------------------------------
PS: 时间设置的相关命令(转载)
1.在虚拟终端中使用date命令来查看和设置系统时间
查看系统时钟的操作:
#
date
设置系统时钟的操作:
# date
091713272003.30
通用的设置格式:
# date
月日时分年.秒
2.使用hwclock或clock命令查看和设置硬件时钟
查看硬件时钟的操作:
# hwclock
--show 或
# clock
--show
设置硬件时钟的操作:
# hwclock
--set --date="09/17/2003 13:26:00"
或者
# clock --set
--date="09/17/2003 13:26:00"
通用的设置格式:hwclock/clock --set
--date=“月/日/年时:分:秒”。
3.同步系统时钟和硬件时钟
Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(管理员在2009年8月13日编辑了该文章文章。