RTC驱动的应用

Linux常见的驱动在driver目录下都有一个文件夹,进入kernel主目录下的drivers/rtc,发现下面包含了许多芯片的RTC驱动,我们这里是以pcf8563为主,她是我们要分析的核心。其他几个相关联的文件分别是:alarm.c、alarm-dev.c、class.c、hctosys.c、interface.c和rtc-dev.c。
     class.c:向linux设备模型核心注册了一个类RTC,提供了RTC子系统的一些公共函数,让各个RTC驱动注册集成到我们的linux内核中,向驱动程序提供了注册/注销接口。
        rtc-dev.c:定义了基本的设备文件操作函数,用户程序与RTC驱动的接口函数,这里定义了每个ioctl命令需要调用的函数,还有open,read等。
        interface.c:提供了ioctl各个命令需要调用的函数。
        rtc-sysfs.c:与sysfs有关,提供通过sys文件系统操作pcf8563。
        rtc-proc.c:与proc文件系统有关,提供通过proc文件系统操作pcf8563。
        hctosys.c:系统起来之后会调用到这个文件中的rtc_hctosys()函数,主要功能是系统起来的时候去读RTC硬件中的时间,然后更新我们的系统时间。
        rtc.h:定义了与RTC有关的数据结构。
        pcf8563.c是最底层的直接和硬件打交道的驱动文件,pcf8563.c上面一层为interface.c,为接口文件,它主要是对pcf8563.c进行封装,给上层提供统一的接口,屏蔽底层差异化。Interface.c再往上就到了rtc-dev.c.,rtc-dev.c最终生成了/dev/rtc设备节点,上层的应用程序就是通过操作此文件来进行RTC相关的设置系统时间和闹钟等操作的。
        文件关系图如下:

            (1)处理一个idr结构,idr在linux内核中指的就是整数ID管理机制,从本质上来说,idr是一种将整数ID号和特定指针关联在一起的机制。这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁。现在在内核的很多地方都可以找到idr的身影。这里从内核中获取一个idr结构,并与id相关联。
        (2)分配了一个rtc_device的结构–rtc,并且初始化了相关的成员:id, rtc_class_ops等等。
        (3)首先调用rtc_dev_prepare(在rtc-dev.c中定义)。因为RTC设备本质来讲还是字符设备,所以这里初始化了字符设备相关的结构:设备号以及文件操作。然后调用device_register将设备注册到linux设备模型核心。这样在模块加载的时候,udev daemon就会自动为我们创建设备文件rtc(n)。
        (4)先后调用rtc_dev_add_device,rtc_sysfs_add_device,rtc_proc_add_device三个函数。 rtc_dev_add_device注册字符设备,rtc_sysfs_add_device只是为设备添加了一个闹钟属性,rtc_proc_add_device 创建proc文件系统接口。
        rtc_init 首先调用class_create创建了一个类–rtc。我们知道类是一个设备的高层视图,他抽象出了底层的实现细节。类的作用就是向用户空间提供设备 的信息,驱动程序不需要直接处理类。然后初始化类结构的相应成员,rtc_suspend,rtc_resume这两个函数也是在class.c中实现 的。接下来调用rtc_dev_init(),这个函数为RTC设备动态分配设备号,保存在rtc_devt中。最后调用 rtc_sysfs_init,初始化rtc_class的性。

Cat/proc/devices 发现rtc已经注册到内核中,打印如下信息 :254 rtc

通过 dmesg |grep rtc,(打印一下rtc驱动加载相关信息.)打印如下信息
[ 4.234402] rtc-ds1307: probe of 2-0068 failed with error -5
[ 4.508771] drivers/rtc/hcto open rtc device (rtc0)

打电话给飞凌开发板厂家,RTC芯片由ds1337更换为xxxx,提供了补丁文件。
手动打上补丁,内核中将ds1307的驱动去掉,编译后上电 rtc-rx8010 2-0032: setting system clock to 2016-07-07 18:05:14 UTC (1467914714)。
说明rtc驱动正常加载,dev目录下有了rtc0

date命令操作Linux的系统(软件)时钟,hwclock命令操作硬件时钟(rtc模块),我们要验证rtc驱动是否工作正常,只需要hwclock,
将Linux系统时间设置到硬件rtc中hwclock -w ,hwclock -s把rtc时间写到Linux系统时间里面去
设置的格式,上面提示的很清楚了,MM是月份,DD是日期,hh是小时,mm是分钟,年份可以写2位的YY或者4位的YYYY,秒可以用.ss表示

date 110313172009.05

Tue Nov 3 13:17:05 MST 2009

hwclock -w

hwclock 

Tue Nov 3 13:18:33 2009 0.000000 seconds

hwclock 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bl5372 rtc i2c 驱动是指一种用于控制实时时钟的设备驱动程序。BL5372是实时时钟芯片的型号,它使用i2c总线进行通信。 i2c(Inter-Integrated Circuit)是一种用于芯片间通信的串行总线协议,能够在多个设备之间传输数据。通过i2c总线,实时时钟芯片可以与主控制器进行通信,实现时间数据的读取和修改。 bl5372 rtc i2c 驱动的作用是提供一组API接口,使得主控制器可以方便地调用这些接口来读取和设置实时时钟的时间信息。驱动程序会负责与实时时钟芯片进行通信,将读取到的时间数据返回给主控制器,或者将主控制器传递过来的时间信息写入实时时钟芯片。 bl5372 rtc i2c 驱动通常需要在嵌入式系统或其他使用实时时钟芯片的场景中使用。主控制器可以通过i2c总线与实时时钟芯片进行通信,并利用驱动程序提供的接口来操作实时时钟。 总的来说,bl5372 rtc i2c 驱动在嵌入式系统中起到了关键的作用,它简化了主控制器与实时时钟芯片的通信过程,提供了方便的接口供主控制器进行时间数据的读写操作。 ### 回答2: BL5372是一种I2C总线RTC(Real-Time Clock)驱动芯片。RTC芯片是一种在电脑或嵌入式系统中用来提供实时时间和日期功能的芯片。 BL5372 RTC I2C驱动允许主机通过I2C总线与BL5372芯片进行通信。I2C总线是一种串行通信协议,它允许多个设备共享同一条总线,在同一时刻进行数据通信。通过I2C总线,主机可以向BL5372芯片发送命令和读取返回的数据。 BL5372芯片内置了一个实时时钟电路,它可以独立工作且不会受到主机系统时间的影响。它可以提供精准的时间和日期信息,在电源断电时也可以继续工作。主机可以使用BL5372 RTC I2C驱动通过I2C总线与BL5372芯片通信,设置或读取当前时间和日期,以及其他相关功能。 BL5372 RTC I2C驱动通常由硬件和软件两部分组成。硬件部分包括I2C总线和BL5372芯片的连接,主机通过I2C总线与芯片进行数据交换。软件部分则是主机系统中的设备驱动程序,它提供了访问BL5372芯片的接口和命令集,允许主机通过I2C总线与芯片进行通信。 BL5372 RTC I2C驱动的使用可以广泛应用于各种需要实时时钟功能的设备,比如计算机、嵌入式系统、物联网设备等。它可以方便主机通过I2C总线与BL5372芯片进行通信,实现精准的时间和日期功能,为各种应用提供准确的时间戳和时间同步功能。 ### 回答3: bl5372 rtc i2c 驱动是针对BL5372芯片使用I2C通信协议进行实时时钟驱动的软件程序。BL5372是一款集成了RTC(实时时钟)功能的芯片,可以用于记录时间和日期。 I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,适用于短距离、低速率的通信。它使用两根线路:SDA(数据线)和SCL(时钟线)。 bl5372 rtc i2c驱动程序的主要功能是通过I2C总线和BL5372芯片进行通信,以读取和写入实时时钟相关的信息。它可以用来设置和读取当前的日期和时间,包括年份、月份、日期、小时、分钟和秒数。同时,它还可以设置闹钟功能,使得芯片能够根据预设的时间触发相应的动作。 通过bl5372 rtc i2c驱动,用户可以方便地控制BL5372芯片的实时时钟功能,实现各种时间相关的应用,比如日历、时钟、计时器等。例如,用户可以使用该驱动来设置一个闹钟,当到达预设的时间时,芯片会触发一个中断信号,从而实现提醒功能。 总之,bl5372 rtc i2c驱动程序是为了方便用户对BL5372芯片的实时时钟功能进行控制而设计的,通过使用I2C通信协议,用户可以设置和读取时间信息,实现各种时间相关的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值