Linux驱动 | Linux内核 RTC时间架构
💡
原文中文,约12900字,阅读约需31分钟。
📝
内容提要
本文深入解析了Linux内核时间子系统及驱动移植,包括系统时间和RTC时间的区别,获取系统时间和RTC时间的方法,RTC时间框架的结构和驱动注册过程,硬件抽象层interface.c的实现,RTC在sysfs文件系统和proc文件系统中的呈现,瑞芯微对RTC时间的同步和文件权限的控制。
🎯
关键要点
- Linux系统有两种时间类型:系统墙钟时间和硬件时钟时间。
- 系统时间由Linux操作系统管理,可以通过date命令查看和设置。
- RTC时间来自设备上的RTC芯片,通过hwclock命令读取。
- RTC时间框架包括硬件、驱动、class.c、interface.c、rtc-lib.c和rtc-dev.c等文件。
- rtc_class_ops结构体描述RTC芯片的所有操作方式,驱动需要填充该结构体。
- class.c文件负责RTC驱动的注册和设备号的动态申请。
- 硬件抽象层interface.c提供统一的RTC访问接口,屏蔽硬件细节。
- RTC在sysfs文件系统中以符号链接的形式呈现,设备属性可通过/sys/class/rtc访问。
- RTC在proc文件系统中呈现,提供实时信息如时间、日期和闹钟状态。
- WT时间通过RTC时间同步,系统启动后从RTC读取时间并设置到WT。
- 瑞芯微系统通过/sys/class/rtc/rtc0下的文件节点实现时间管理功能。
- 瑞芯微对文件权限的控制由特定的sepolicy文件提供。
➡️