(1)移植RTC驱动
(i)在busybox1.5.1中,添加对date和dwclock命令的支持
#cd
#make clean
#make menuconfig
[Linux System Utilities]-->
[*]hwclock
[Coreutils]-->
[*]date
#make
#make install
复制文件到根文件系统中:
#cp -ad _install/sbin usr/local/arm/now_wpb_rootfs/
#cp -ad _install/bin usr/local/arm/now_wpb_rootfs/
将now_wpb_rootfs做成yaffs格式:
./mkyaffs2image now_wpb_roofs /mnt/hgfs/win/Image/rootfilesystem/root.yaffs
烧写到开发板
【问题】:在进入文件系统后,键入:hwclock时,出现如下问题:
hwclock: applet not found
这主要是busybox的问题,要全部覆盖原来的文件夹sbin和bin
(ii)添加RTC驱动
#cd linux-2.6.14
#vi arch/arm/mach-s3c2410/mach-smdk2410.c
在数组smdk2410_devices[]中添加&s3c_device_rtc.
#make menuconfig
Device Driver--> Character devices
[*] S3C2410 RTC Driver
#make zImage
将zImage下载到开发板
(iii)启动系统时,会看到如下信息,说明RTC驱动已经装载好了
S3C2410 RTC, (c) 2004 Simtec Electronics
s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
(iv)进入系统
下面首先设置正确的系统时间,然后将系统时间传递给RTC。
板子第一次启动后,
假如设置系统时间为2009年07月09日,13:35分,可以这样设置
1> date 070913352009
2> hwclock –w
如果没有出错, 就已经把2009年07月09日,13:35分 写入RTC chip了,
测试:
反复执行hwclock ,看看是否时间在变化。
3> 重启板子, 测试, 执行hwclock ,看看时间是否在流逝 。
为了使系统时间和RTC时间同步,可以在初始化文件中添加命令
Hwclock –s
使每次开机时读取RTC时间,并同步给系统时间。
在根文件系统:usr/etc/rc.local中添加
/sbin/hwclock -s
【时间设置的相关命令】
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
(2)RTC与Qtopia上的时钟结合,实时显示时间
qtopia/Setting/中的 “Date/Time”程序可实现:读写硬件RTC时钟的功能;但不能实时显示时间
rtc移植
2009-05-10 13:24
make menuconfig driver char 选中rtc
2. 修改文件mach-smdk2410.c(/linux2.6.24.4/arch/arm/mach-s3c2410/mach-smdk2410.c),在数组smdk2410_devices[]中添加&s3c_device_rtc. [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@root /]# date 040612282008.20 Sun Apr 6 12:28:20 UTC 2008 [root@root /]# hwclock -w [root@root /]# hwclock Sun Apr 6 12:29:01 2008 0.000000 seconds [root@root/]# hwclock Sun Apr 6 12:30:15 2008 0.000000 seconds Ok,RTC开始工作了! 为了使系统时间和RTC时间同步,可以在初始化文件中添加命令 Hwclock –s 使每次开机时读取RTC时间,并同步给系统时间。 在etc/init.d/rcS中添加 /bin/hwclock -s
PS: 时间设置的相关命令(转载) 1.在虚拟终端中使用date命令来查看和设置系统时间 设置系统时钟的操作: 通用的设置格式: 2.使用hwclock或clock命令查看和设置硬件时钟 设置硬件时钟的操作: 或者 通用的设置格式:hwclock/clock --set --date=“月/日/年时:分:秒”。 3.同步系统时钟和硬件时钟 Linux系统(笔者使用的是Red Hat 8.0,其它系统没有做过实验)默认重启后,硬件时钟和系统时钟同步。如果不大方便重新启动的话(服务器通常很少重启),使用clock或hwclock命令来同步系统时钟和硬件时钟。 硬件时钟与系统时钟同步: 或者 上面命令中,--hctosys表示Hardware Clock to SYStem clock。 系统时钟和硬件时钟同步: 或者 使用图形化系统设置工具设置时 |