待机而举是良谋,成竹在胸方可求。
默默无闻积实力,时成奋起定春秋。
夕楚庄王初登位,三载不发号令休。
不鸣则已鸣即震,一举伐齐胜徐州。
一、Linux 内核 RTC 驱动简介
STM32 内部有一个 RTC 外设模块,这个模块需要一个32.768KHz 的晶振,对这个 RTC 模块进行初始化就可以得到一个实时时钟。 I.MX6U 内部也有个 RTC 模块,但是不叫作“ RTC”,而是叫做“ SNVS”。SNVS 直译过来就是安全的非易性存储, SNVS 里面主要是一些低功耗的外设,包括一个安全的实时计数器(RTC)、一个单调计数器(monotonic counter)和一些通用的寄存器。
首先需要说明的是,I.MX6U 的 RTC 驱动我们不用自己编写,因为 NXP 已经写好了。其实对于大多数的 SOC 来讲,内部 RTC 驱动都不需要我们去编写,半导体厂商会编写好。我们先学会怎么使用,再来探究具体原理!
Linux 内核将 RTC 设备抽象为 rtc_device 结构体,因此 RTC 设备驱动就是申请并初始化rtc_device,最后将 rtc_device 注册到 Linux 内核里面,这样 Linux 内核就有一个 RTC 设备的。 Linux 内核中 RTC 驱动调用流程如下图所示:

当 rtc_class_ops 准备好以后需要将其注册 到 Linux 内核中,这里我们可以使 用rtc_device_register函数完成注册工作。此函数会申请一个 rtc_devi
本文介绍了Linux内核RTC驱动的基本概念,以STM32和I.MX6U为例,讲解了RTC驱动的初始化、时间查看与设置。在STM32中,RTC模块需要32.768KHz晶振;I.MX6U的RTC称为SNVS。Linux内核通过rtc_device结构体抽象RTC设备,注册和注销通过rtc_device_register和rtc_device_unregister函数完成。RTC时间查看使用date命令,设置则需结合hwclock命令将时间写入RTC。
订阅专栏 解锁全文
1656

被折叠的 条评论
为什么被折叠?



