您的位置:首页 > 运维架构 > Linux

linux-2.6.32在mini2440开发板上移植----- RTC移植

2013-09-20 13:54 344 查看
激活RTC 驱动

编者:RTC时钟在S3C2440上的移植非常的简单,因为linux已经支持了,仍以platform的形式来实现,只要把RTC的platform_deivce进行注册,对内核进行简单配置就好。但对于RTC的驱动的实现,很有值得研究的地方。这一驱动典型的使用了,linux内核中驱动分层设计的思想,对这驱动的研究,有利于理解linux内驱动的布局。对于一般的驱动,比较复杂的,很难看懂,这个就很不适合进行入门。太简单的,什么hello、led,这个容易懂,但这个也只能入门,不能用于深入。我感觉RTC驱动用来深入一点的入门是很好的,其中涉及到了platform和驱动设计中的分离思想。下面还是主要以手册所介绍为步骤,简述一下吧。

1 在初始化文件中加入RTC 设备结构

Linux-2.6.32.2 内核对2440 的RTC 驱动已经十分完善了,但并未在mach-mini2440.c中的设备集中加入它,因此并没有被激活,加入RTC 结构体如下红色字体:

在mini2440 设备集中加入RTC 结构体

static struct platform_device *mini2440_devices[] __initdata = {

&s3c_device_usb,

&s3c_device_rtc,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&mini2440_device_eth,

&s3c_device_nand,

};

2 在内核中配置RTC

接下来重新配置内核,以加入RTC 的驱动支持,依次选择如下菜单项:

Device Drivers --->

< *> Real Time Clock --->

可以看到这里缺省配置已经选择了RTC 相关的选项,这里特别要注意的是该配置菜单最下方的<*> Samsung S3C series SoC RTC 选项支持,因为这里才是内核中真正的2440 之RTC 驱动配置项。

3 测试RTC

退出内核配置菜单,执行:

#make zImage

把生成的arch/arm/boot/zImage 烧写到开发板,就可以在/dev 目录下看到/dev/rtc 设备驱动了。

要测试RTC,可以参考mini2440 的用户手册2.5.22 章节(因手册更新,有可能具体章节会变动,请按照实际章节查询即可),这里摘录如下:

Linux 中更改时间的方法一般使用date 命令,为了把S3C2440 内部带的时钟与linux 系统时钟同步,一般使用hwclock 命令,下面是它们的使用方法:

(1) date -s 042916352007 #设置时间为 2007-04-29 16:34

(2) hwclock -w #把刚刚设置的时间存入S3C2440 内部的RTC

(3).开机时使用 hwclock -s 命令可以恢复linux 系统时钟为RTC, 一般把该语句放入

/etc/init.d/rcS 文件自动执行。

启动后,就可以看到dev目录下的rtc设备的设备文件了,如下图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: