Linux驱动: rtc子系统

news/2024/7/2 23:11:22

1. 前言

限于作者能力水平,本文可能存在的谬误,因此而给读者带来的损失,作者不做任何承诺。

2. 背景

本文分析代码基于Linux 3.10内核,硬件平台为嵌入式ARM32平台.

3. rtc子系统

3.1 相关代码文件列表

drivers/rtc/class.c
drivers/rtc/interface.c
drivers/rtc/rtc-core.h
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-lib.c
drivers/rtc/rtc-proc.c
drivers/rtc/rtc-sysfs.c
drivers/rtc/hctosys.c
drivers/rtc/rtc-xxx.c

对上面文件的说明:

class.c    : 管理rtc sys class;
interface.c: 主要作用是间接rtc驱动接口;
rtc-dev.c  : rtc设备用户接口;
rtc-lib.c  : rtc辅助函数,主要用于rtc时间转换,计算;
rtc-proc   : rtc proc fs(用户)接口;
rtc-sysfs  : rtc sys fs(用户)接口;
hctosys.c  : 用于在系统启动时从rtc读取时间,并设置为系统时间;
rtc-xxx.c  : rtc硬件芯片驱动,如rtc-wm8350.c,rtc-hym8563.c等.

3.2 rtc子系统框图

在这里插入图片描述
上图是基于新的rtc子系统框架,该框架能更好的适应嵌入式开发环境,嵌入式环境可能带多个rtc芯片。
老的rtc驱动就是一个简单的字符设备驱动,是适应于PC平台的,对应有一个/dev/rtc设备文件。
在新的rtc子系统框架下,应用程序通过/dev/rtc[0-N]设备来完成对rtc芯片的访问。这些访问通过rtc-dev.c提供的接口间接访问rtc-xxx.c提供的rtc芯片驱动。常见的操作有读取/设置时间的操作,这个每个rtc芯片都必须支持的操作。
当然,访问/dev/rtc[0-N]设备文件不是访问rtc芯片的唯一途径,还可以通过rtc提供的proc fs,sys fs接口来访问rtc。

3.3 指定系统时间来源rtc设备

 Device Drivers --->
       [*] Real Time Clock --->
           (rtc0) RTC used to set system time
           ...
           *** RTC interfaces ***
           ...
           *** I2C RTC drivers ***
           ...
           *** SPI RTC drivers ***
           ...
           *** on-CPU RTC drivers ***
           ...

上面的内核配置(rtc0) RTC used to set system time,指定rtc0作为系统时间来源的rtc设备。

4. 后记

本篇从个人51CTO博客(原地址)迁移过来。


http://lihuaxi.xjx100.cn/news/235619.html

相关文章

cnblogs不愧为cnblogs

在cnblogs落脚3天了,写了一些很实践的文章,很有成就感,为什么?我第一次为是否发表这篇文章而作出思考,以前在别的地方,总是转别人的文章居多,到了cnblogs,感受到了原创的精神——即使…

NSHelper.showAlertTitle的两种用法 swift

var model : CarCity CarCity() if (NSString.isNullOrEmpty(locationLabel.text)) { NSHelper.showAlertTitle(nil, message: "暂无法定位,请检查网络。", cancel: "确定") return } if (NSString.isNullOrEmpty(plateTextFild.text)) { NSHe…

怎么使用CAD编辑器来打开图纸中的所有图层

在CAD绘图中,建筑设计师们不仅要对CAD图纸进行编辑,还要对CAD图纸进行查看,一张图纸中是有许多图层的,那在查看的过程中有的时候把其他的图层进行隐藏了,那如果想要把隐藏的CAD图层进行打开要怎么操作?如何…

sql server中的hash应用优化

sql server很多地方用到hash,计划缓存查找,hash连接,hash聚合等。 hash查找mssql很多设计中都应用了,不过我们能在开发设计中,也可以利用这个特性。 将如果有需求对大文本进行完全匹配,比如查找产品型号&am…

研究人员测试27个黑客服务 结果仅三个完成任务

现代电子邮件帐户不仅是一个电子邮件地址,它还是人们在网络上的身份的基础,可用于申请各种网络服务或重置服务密码,以便持有电子邮件的黑客服务帐户很受欢迎,为了了解这些服务的功能,谷歌和加州大学圣地亚哥分校的研究…

Swift 中的内存管理详解

这篇文章是在阅读《The Swift Programming Language》Automatic Reference Counting(ARC,自动引用计数)一章时做的一些笔记,同时参考了其他的一些资料。 在早期的 iOS 开发中,内存管理是由开发者手动来完成的。因为传统…

POJ 1185 炮兵阵地 (状压DP)

炮兵阵地Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 14869 Accepted: 5575Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示)…

Swift2.x编写NavigationController动态缩放titleView

这两天看到一篇文章iOS 关于navigationBar的一些..中的动态缩放比较有意思,看了一下源码,然后用Swift写了一下,使用storyboard实现. 效果图: 部分代码: 设置滑动代理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26/**设置滑动代理- parameter scrollV…