Linux驱动: rtc子系统

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博客(原地址)迁移过来。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值