首页 理论教育 Linux驱动:S3C6410XRTC实例

Linux驱动:S3C6410XRTC实例

时间:2023-10-19 理论教育 版权反馈
【摘要】:S3C6410X的RTC单元能够在系统掉电的情况下使用备用电池工作。RTC单元使用外部的32.768kHz的晶振,并可提供报警功能。RTC单元支持闰年,支持RTOS内核所需的毫秒级别的时钟中断。下面看看该文件中read_time函数的实现:如果要让S3C6410X的RTC驱动运行起来,还要定义相应的平台资源。例6.6 RTC测试实例本例演示如何设置与读取RTC时间。

Linux驱动:S3C6410XRTC实例

嵌入式系统一般有两个时间,一个是RTC时间,一个是Linux系统时间。RTC时间存储在RTC控制器中,系统断电后通过电池供电,保证系统下次重新上电时能读到正确的时间。通常在系统启动脚本中读取RTC时间,并将RTC时间设置为系统时间。Linux中的date命令是用来读取与设置系统时间的;而hwclock命令是用来读取与设置RTC时间的。

注册与注销RTC驱动:

struct rtc_device*devm_rtc_device_register(struct device*dev,const char*name, const struct rtc_class_ops*ops,struct module*owner);

RTC设备类的操作接口如下:

978-7-111-56706-6-Chapter06-64.jpg

978-7-111-56706-6-Chapter06-65.jpg

RTC驱动也包含一个通用的设备层,负责创建/dev/rtc设备,并向应用层提供统一的RTC操作接口。

978-7-111-56706-6-Chapter06-66.jpg

这里以内核中RTC_RD_TIME命令的实现为例说明RTC驱动的设计,代码如下:

978-7-111-56706-6-Chapter06-67.jpg

978-7-111-56706-6-Chapter06-68.jpg

可见Linux内核已经实现了RTC设备的文件操作层,具体的设备驱动层只需要实现RTC设备类的操作接口。

S3C6410X的RTC单元能够在系统掉电的情况下使用备用电池工作。RTC单元的时间数据包含秒、分、小时、日、月、年。RTC单元使用外部的32.768kHz的晶振,并可提供报警功能。RTC单元支持闰年,支持RTOS内核所需的毫秒级别的时钟中断。S3C6410X的RTC驱动在/drivers/rtc/rtc-s3c.c中。下面看看该文件中read_time函数的实现:

978-7-111-56706-6-Chapter06-69.jpg

978-7-111-56706-6-Chapter06-70.jpg

如果要让S3C6410X的RTC驱动运行起来,还要定义相应的平台资源。首先在linux/arch/arm/plat-samsung/devs.c中添加如下平台设备信息:

978-7-111-56706-6-Chapter06-71.jpg

修改/drivers/rtc/rtc-s3c.c:

978-7-111-56706-6-Chapter06-72.jpg

978-7-111-56706-6-Chapter06-73.jpg(www.xing528.com)

执行make menuconfig命令对内核进行配置,在【devices drivers】->【Real Time Clock】中配置RTC支持,如图6-8所示。

978-7-111-56706-6-Chapter06-74.jpg

图6-8 Real Time Clock支持

执行Make zImage生成内核,烧写完毕系统启动后可以看见/dev目录下包含rtc0节点。

例6.6 RTC测试实例

本例演示如何设置与读取RTC时间。代码见\samples\6hardsimple\6-3rtc。核心代码如下:

978-7-111-56706-6-Chapter06-75.jpg

978-7-111-56706-6-Chapter06-76.jpg

本例运行结果如下:

[root@urbetter/]#./test

opened '/dev/rtc0':fd=3

Get RTC Time

Current RTC date/time is 9-1-100,18:02:55

Set RTC Time

Set Current RTC date/time to 31-5-104,02:30:00

Get RTC time

Current RTC date/time is 31-5-104,02:30:00

RTC Tests done!!

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈