RTC 学习


2013-01-22 11:53:04|  分类: 默认分类|举报|字号 订阅

linux 2.6驱动采用了分层的设计思想。核心层实现了RTC设备的共同操作,而针对不同设备特定的操作放到下层来实现。

针对linux-kernel-2.6.25.8内核版本,ARM-s3c2440。

/drivers/rtc

class.c  rtc-dev.c  rtc-s3c.c rtc-sysfs.c

对于上述4个文件:

rtc-dev.c实现了RTC的设备核心层,填充了结构体:

static const struct file_operations rtc_dev_fops

并实现了以下5个函数:

void rtc_dev_prepare(struct rtc_device *rtc)

void rtc_dev_add_device(struct rtc_device *rtc)

void rtc_dev_del_device(struct rtc_device *rtc)

void __init rtc_dev_init(void)

void __exit rtc_dev_exit(void)

 

rtc-s3c.c实现了RTC的具体设备对应的函数,填充了结构体:

static const struct rtc_class_ops s3c_rtcops(此结构体在下面这个结构体里面所引用)

static struct platform_driver s3c2410_rtcdrv

注册了S3C的RTC的 platform_driver 驱动程序。

 

 

上述红色部分函数及结构体和rtc-sysfs.c里面实现的文件都在class.c里面的下面2个函数所调用。

static int __init rtc_init(void)

static void __exit rtc_exit(void)

 

subsys_initcall(rtc_init);
module_exit(rtc_exit);

上面2个函数实现了RTC子系统的内核调用。

 

而class.c也实现了下面2个函数:

struct rtc_device *rtc_device_register(const char *name, struct device *dev,const struct rtc_class_ops *ops,struct module *owner)

void rtc_device_unregister(struct rtc_device *rtc)

这2个函数在rtc-s3c.c里面调用用于注册rtc设备。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值