Platform: msm8x26
Overview
Linux中可以注册多个RTC,因此kernel部分的code分成了框架和实现两部分。框架对多个RTC进行了封装,类似于framebuffer的功能一样。
上层(android)似乎很少使用rtc device接口(/dev/rtc)来设置时间,而使用通过alarm接
口。
kernel
由于alarm基于rtc实现, 可以看到如下架构:
当系统断电时,主板上的rtc芯片将继续维持系统的时间,这样保证再次开机后系统的时间不会错误。当系统开始时,内核从 RTC 中读取时间来初始化系统时间。Android 中的Alarm在设备处于睡眠模式时仍保持活跃,它可以设置来唤醒设备。
MSM8260用到的RTC driver file为 rtc-pm8058.c@android\kernel\drivers\rtc, 也就是图中具体RTC芯片驱动部分。
每个专有RTC device都可以按照下面的流程来注册,然后被框架部分来调用。让我们从代码来看如何实现的。
先添加一个driver: