- Android系统级深入开发
- 韩超 梁泉
- 216字
- 2020-08-26 21:43:42
4.4.3 实时时钟的驱动程序
GoldFish虚拟处理器的实时时钟(RTC)部分的驱动程序,相关文件如下所示:
drivers/rtc/rtc-goldfish.c
GoldFish的实时时钟驱动程序在sys文件系统的driver路径为:
# ls /sys/bus/platform/drivers/goldfish_rtc goldfish_rtc uevent unbind bind
这是一个标准注册的rtc设备,由于是系统中唯一的RTC设备,其在用户空间的设备节点为/dev/rtc0。RTC驱动的主要内容是读取时间,如下所示:
static int goldfish_rtc_read_time(struct device *dev, struct rtc_time *tm) { int64_t time; struct goldfish_rtc *qrtc = platform_get_drvdata(to_platform_device(dev)); time = readl(qrtc->base + TIMER_TIME_LOW); time |= (int64_t)readl(qrtc->base + TIMER_TIME_HIGH) << 32; do_div(time, NSEC_PER_SEC); rtc_time_to_tm(time, tm); return 0; }
GoldFish的实时时钟驱动由仿真器的虚拟环境触发中断,并填充相关的寄存器,在驱动程序中取得信息。