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文件提供。
➡️

继续阅读