LINUX驱动分析之RTC(一)

本文分析了Linux中针对三星S3C24XX系列的RTC驱动框架,探讨了从底层硬件交互的rtc-s3c.c到上层应用程序接口的层次结构。rtc-dev.c生成/dev/rtc供应用程序使用,interface.c提供统一接口,而alarm.c和alarm-dev.c涉及闹钟功能。class.c作为RTC子系统的粘合剂,hctosys.c负责更新系统时间。
摘要由CSDN通过智能技术生成

*****************************************************************************************************/
  声明:本博内容均由
http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!
/*****************************************************************************************************/

     这里我们针对三星的S3C24XX系列进行RTC驱动框架的分析,关于RTC(实时时钟)的功能和硬件原理我就不在这里啰嗦了,相信大家都十分清楚,不清楚的可以google或者百度一下,我想通过RTC驱动和大家探讨一下linux驱动的一般框架,为大家在linux驱动的学习路上起到一个抛砖引玉的作用。那有哥们就要问了,为什么选择RTC驱动呢?就是因为它简单明了,大家都容易明白的东西才是好东西,好啦,废话不多说,开始进入正题:

      Linux常见的驱动在driver目录下都有一个文件夹,当然我们的RTC也不例外,我们进入kernel主目录下的drivers/rtc,发现下面包含了许多开发平台的RTC驱动,我们这里是以S3C24xx为主,所以我们要寻找的是“rtc-s3c.c”这个美人儿,她是我们要分析的核心;其他几个相关联的文件分别是:alarm.c, alarm-dev.c,class.c, hctosys.c, interface.c, rtc-dev.c.这几个文件就是我们这部戏的主角儿。

    看戏大家都喜欢去研究人物之间的关系,A喜欢B,B喜欢C,C又喜欢D…….这里我们也来先理顺一下这几个主角之间微妙的关系: 

    首先,当然是我们主角中的战斗机rtc-s3c.c,她是最顶层的直接和硬件打交道的驱动文件,每个平台,高通,marvell,三星都有自己的这部分,一般被命名为类似的”rtc-msm.c,rtc-pxa.c,rtc-s3c.c”;就像每个国家每个部落,总有一批底层工作者,在默默的为上层的骄奢淫逸,荣华富贵贡献着自己的血汗;

     rtc-s3c.c上面的是interface.c,顾名思义就知道是接口文件,它主要是对rtc-s3c.c进行封装,给上层提供统一的接口,屏蔽底层差异化的东东。

 Interface.c再往上就到了rtc-dev.c.,rtc-dev.c最终生成了/dev/rtc,上层的应用程序就是通过操作此文件来进行RTC的相关的设置系统时间,设置闹钟,等等。

所有整个人物关系图如下:

上层应用层序

        |

        |

        V

rtc-dev.c

        |

        |

        V

interface.c

       |

       |

       V

rtc-s3c.c

 

    好像三个文件就已经把整个RTC从底层到上层所有的东东都讲完了,那么还剩下几个文件干嘛呢?

     Alarm.c和alarm-dev.c:这两个文件用来干什么呢?这里先留个悬念,后面和大家慢慢说明

 

     class.c:提供了RTC子系统一些的公共函数,让各个RTC驱动注册集成到我们的linux内核中,她实际上是一个粘合剂。

 

    hctosys.c:系统起来之后,会调用到这个文件中的rtc_hctosys()函数,主要功能是系统起来的时候,去读RTC硬件中的时间,然后更新我们的系统时间。

 

 

   好啦,到这里,相信我们已经对整个rtc驱动各个层都比较清楚了,小时候我语文老师叫我们写作文的时候就喜欢玩“总分”结构,先“总”对整个过程有个大概把握,再“分”起来就容易多了,感觉一切都逃出不我们的“五指山”。

 

后面的几个小节,开始我们的“分”,从细节去分析理解每个文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值