在外企做服务器开发, 目前是项目经理, 管理两个server开发的项目。不做嵌入式好久了。
全部博文(197)
分类: LINUX
2007-11-02 18:08:37
原本以为选中 Device Driver –> Character Device -> S
Arch/arm/mach/mach-smdk2410.c
static struct platform_device *smdk2410_devices[] __initdata = {
&s
&s
&s
&s
&s
&s
};
如果没有上面的s
# insmod /lib/s S init platform_driver_register = 0 # kobject_add failed for s > insmod: cannot insert '/lib/s
---
事实上, 这个driver(drivers/char/s
与这个driver对应的header文件regs-rtc.h 里面
#define S
Note: 对于 2410的RTC chip ,有两个driver : drivers/char/s
后者才适合我们的jk2410的RTC 芯片,并且并没有作为misc设备(传统的RTC 的设备号是 ( 10,135 )) ,
而drivers/rtc/rtc-s
而且 hwclock 最先读取的设备文件是 /dev/rtc ,busybox里面的hwclock是这样实现的:
static int xopen_rtc(int flags)
{
int rtc;
if (!rtcname) {
rtc = open("/dev/rtc", flags);
if (rtc >= 0)
return rtc;
rtc = open("/dev/rtc0", flags);
if (rtc >= 0)
return rtc;
rtcname = "/dev/misc/rtc";
}
return xopen(rtcname, flags);
}
最终的解决办法
1> 修改
Arch/arm/mach/mach-smdk2410.c
static struct platform_device *smdk2410_devices[] __initdata = {
&s
&s
&s
&s
&s
&s
};
2> regs-rtc.h 保持原样不动,
3> make menuconfig
Device Driver –>Real Time Clock -> [*]RTC Class
其他的不动,
再选中 [*] Samsung S
即可。
确保不要选中
Device Driver –> Character Device -> S
这个是错的,废弃了的
4> 在根文件系统的 做的动作, 把 pc linux上的 /etc/localtime 复制到 板子的 /etc/下面即可
5> mknod /dev/rtc c 254 0
下面的动作只需做一次 ,一旦写入RTC chip后, chip就自己计时了,除非电池没电了。
板子第一次启动后,
假如设置系统时间为
1> date 100213492007
2> hwclock –w
如果没有出错, 就已经把
测试:
反复执行hwclock ,看看是否时间在变化。
3> 重启板子, 测试, 执行hwclock ,看看时间是否在流逝 。