- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章 RTC实时时钟驱动 RTC实时时钟为操作系统提供一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,一直运行下去。在计算机系统中,经常会用到RTC实时时钟。例如,手机在关机模式下,仍然能够保证时间的正确性,就是因为RTC实时时钟可以在很小的耗电量下工作。在嵌入式系统中,RTC设备是一种常用的设备,所以学会写RTC实时时钟驱动程序是一件非常重要的工作。 12.1 RTC实时时钟硬件原理 在编写驱动程序之前,需要首先了解一下RTC实时时钟的概念和硬件原理。熟悉RTC实时时钟的概念和硬件原理对驱动程序的编写又非常大的好处。首先来看看什么是RTC实时时钟。 12.1.1 RTC实时时钟 RTC的英文全称是Real-Time Clock,一般称为RTC实时时钟。实时时钟(RTC)单元可以在系统电源关半闭的情况下依靠备用电池工作,一般主板上都有一个纽扣电池作为实时时钟的电源。RTC可以通过使用STRB/LDDRB这两个ARM指令向CPU传递8位数据(BCD码)。数据包括秒、分、小时、日期、天、月、和年。RTC实时时钟依靠一个外部的32.768kHZ的石晶体,产生周期性的脉冲信号。每一个脉冲信号到来时,计数器就加1,通过这种方式,完成计时功能。 12.1.2 RTC实时时钟的功能 XTIrtc和XTOrtc产生脉冲信号。传给215的一个时钟分频器,得到一个128Hz的频率,这个频率用来产生滴答计数。当TICNT计数为0时,产生一个TIME TICK中断信号。RTCCON寄存器用来控制RTC实时时钟的功能。RTCRST是重置寄存器,用来重置SEC和MIN寄存器。Leap Year Generator是一个闰年发生器,用来产生闰年逻辑。RTCALM用来控制是否产生报警信号。 13.1.2 RTC实时时钟的工作原理 RTC实时时钟的工作由多个寄存器来控制。RTCCON寄存器用来控制RTC实时时钟的整体功能。 12.1 RTC实时时钟架构 本节对RTC实时时钟的整体架构进行了简要的分析。主要包括驱动程序的加载卸载函数、探测函数、使能函数、频率设置函数等。从这些函数的分析中,读者可以了解到整个驱动程序的架构,也能对RTC实时时钟的工作原理更为了解。 12.2.1 加载卸载函数 RTC实时时钟的驱动程序包含在/drivers/rtc/Rtc-s3c.c文件中。RTC实时时钟的驱动模块逻辑比较简单,首先注册一个平台设备驱动,然后由平台设备驱动负责完成对RTC实时时钟的驱动工作。RTC模块的加载函数是s3c_rtc_init(),卸载函数是s3c_rtc_exit()。 12.2.2 RTC实时时钟的平台驱动 在文件/drivers/rtc/Rtc-s3c.c中定义了RTC实时时钟的平台设备驱动。其中平台设备驱动的一些函数没有用处,所以没有定义。 12.2.3 RTC驱动探测函数 当调用platform_driver_register()函数注册驱动之后,会触发平台设备和驱动的匹配函数platform_match()。匹配成功,则会调用平台设备驱动中的probe()函数,RTC实时时钟驱动中对应的函数就是s3c_rtc_probe()。 12.2.5 RTC实时时钟设置频率函数s3c_rtc_setfreq() 时钟脉冲1秒钟产生128次时钟滴答。可以给TICNT寄存器的低7位赋值,取值范围为0到127,用n来表示。 12.2.6 RTC设备注册函数 rtc_device_register() RTC实时时钟设备必须注册到内核中才可以使用。在注册设备的过程中,将设备提供的应用程序的接口ops也指定到设备上。这样,当应用成员读取设备的数据时,就可以调用这些底层的驱动函数。注册RTC设备的函数是rtc_device_register()。 12.3 RTC文件系统接口 和字符设备一样,RTC实时时钟驱动程序也定义了一个与flie_operation对应的rtc_class_ops结构体。这个结构体中的函数定义了文件系统中的对应函数。本节将对这些函数进行简要的分析,以使读者对驱动程序的读写有详细的了解。 12.3.1 文件系统接口rtc_class_ops rtc_class_ops是一个对设备进行操作的抽象结构体。内核允许为设备建立一个设备文件,对设备文件的所有操作,就相当于对设备的操作。这样的好处是,用户程序可以使用访问普通文件的方法,来访问设备文件,进而访问设备。这样的方法,极大地减轻了程序员的编程负担,程序员不必要去熟悉新的驱动接口,就能够访问设备。 12.3.2 RTC实时时钟打开函数s3c_rtc_open() RTC设备的打开函数由s3c_rtc_open()来实现。用户空间调用open(
您可能关注的文档
最近下载
- 压力检测及仪表.ppt
- DGTJ08-202-2020钻孔灌注桩施工规程 上海市.pptx VIP
- 光伏发电站场内及并网安全技术白皮书.pdf
- API SPEC 4F 钻井和修井井架、底座规范1995.doc VIP
- 2023年09月浙江温州市平阳县部分事业单位面向高校毕业生退役士兵公开招聘6人笔试历年难易错点考题荟萃附带答案详解_1.docx VIP
- 《中华人民共和国安全生产法》培训解读课件.pptx VIP
- 《中华人民共和国安全生产法》解读与培训.pptx VIP
- 电子商务专业课程体系构建与实践教学方案.docx VIP
- 《中华人民共和国矿山安全法实施条例》深度解读课件.pptx VIP
- 【温州】2024年浙江温州平阳县部分事业单位面向高校毕业生退役士兵招聘工作人员6人笔试历年典型考题及考点剖析附带答案详解.docx VIP
文档评论(0)