Chinaunix首页 | 论坛 | 博客
  • 博客访问: 191096
  • 博文数量: 43
  • 博客积分: 2190
  • 博客等级: 大尉
  • 技术积分: 659
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-04 16:15
文章分类
文章存档

2015年(1)

2013年(2)

2012年(1)

2011年(6)

2010年(11)

2009年(22)

分类: LINUX

2010-08-24 16:08:35

  Linux 2.6.33.5移植到S3C2410之:RTC
 
【平台信息】
目标板(S3C2410)------------------------
CPU:           S3C2410A
SDRAM:      K4S281632(32MB)
FLASH:        K9F1208(64MB)
 
 
HOST---------------------------------------
Linux Realse Version: Fecora Cor 9.0 (FC9)
CrossCompiler:           gcc-4.3.2/glibc-2.3.2
 
 
 
从启动信息可以看出没有加载成功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 port of RPC 100003/2 on 192.168.0.104
 
S3C2410的RTC已经在2.6.33.5 kernel中,但是没有加入SMDK2410 targetboard,
所以我们只需要将RTC加入初始化的设备列表中。
 
1.       menu config中Real Time Clock部分使用默认设置,并加入【*】S3C2410 SOC 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,下面来验证一下这个想法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 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
 
 
 
 
 
 
 
 
 
 
 
 
 
//------------------------------------------------------------------------------------------------------------------
 
 
PS: 时间设置的相关命令(转载)
    1.在虚拟终端中使用date命令来查看和设置系统时间
    查看系统时钟的操作:
    # date
    设置系统时钟的操作:
    # date 091713272003.30
    通用的设置格式:
    # date 月日时分年.秒
    2.使用hwclock或clock命令查看和设置硬件时钟
    查看硬件时钟的操作:
    # hwclock --show 或
    # clock --show
    2003年09月17日 星期三 13时24分11秒 -0.482735 seconds
    设置硬件时钟的操作:
    # 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,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。
    硬件时钟与系统时钟同步:
    # hwclock --hctosys
    或者
    # clock --hctosys
    上面命令中,--hctosys表示Hardware Clock to SYStem clock。
    系统时钟和硬件时钟同步:
    # hwclock --systohc
    或者
    # clock --systohc
    使用图形化系统设置工具设置时间
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuxyz/archive/2009/03/31/4038546.aspx
阅读(1616) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~