Linux 2.6.24.4移植到S3C2410(nano2410)之:RTC

Linux 2.6.24.4移植到S3C2410(nano2410)之:RTC

 

【平台信息】

目标板(Nano2410)------------------------

CPU:           S3C2410X

SDRAM:      HY57V561620(32MB)

FLASH:        K9F1208(64MB)

NET:             CS8900

 

HOST---------------------------------------

Linux Realse Version: Fecora Cor 8 (FC8)

CrossCompiler:           gcc-4.1.1/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

 

S3C2410RTC已经在2.6.24.4 kernel中,但是没有加入SMDK2410 targetboard

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

 

1.       menu configRTC部分使用默认设置。

 

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设置不当引起的。没有设置RTCRTC也不会启动计时。

 

下面首先设置正确的系统时间,然后将系统时间传递给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

 

OkRTC开始工作了!

 

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

Hwclock –s

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

 

etc/init.d/rcS中添加

#+kevin080305

/bin/hwclock -s

 

 

 

 

 

 

 

 

 

 

 

 

 

//------------------------------------------------------------------------------------------------------------------

 

 

PS 时间设置的相关命令(转载)

    1.在虚拟终端中使用date命令来查看和设置系统时间
   
查看系统时钟的操作:
    # date

    设置系统时钟的操作:
    # date 091713272003.30

    通用的设置格式:
    # date
月日时分年.

    2.使用hwclockclock命令查看和设置硬件时钟
   
查看硬件时钟的操作:
    # hwclock --show

    # clock --show
    20030917
星期三 132411 -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,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clockhwclock命令来同步系统时钟和硬件时钟。

    硬件时钟与系统时钟同步:
    # hwclock --hctosys

    或者
    # clock --hctosys

    上面命令中,--hctosys表示Hardware Clock to SYStem clock

    系统时钟和硬件时钟同步:
    # hwclock --systohc

    或者
    # clock --systohc

    使用图形化系统设置工具设置时间

------------------------------------------------------

有什么问题欢迎交流:

QQ:21744485

Email:[email protected]

QQ Group:7152476 (ARM&Linux研究)

------------------------------------------------------

你可能感兴趣的:(Linux驱动程序)