新闻  |   论坛  |   博客  |   在线研讨会
迅为-iMX6开发板-驱动-实时时钟RTC以及Linux-c测试例程
daybydayi | 2018-07-20 09:59:12    阅读:386   发布文章

迅为-iMX6开发板-驱动-实时时钟RTC以及Linux-c测试例程

当Linux开发者谈论一个实时时钟,他们通常指的是某种能记录墙上时间,并且有备用电 池,以至于在系统关机的时候仍然可以工作的器件。

Linux 有两个系列广泛兼容的用户空间 RTC 设备节点:

/dev/rtc : PC 机及兼容机系统提供的 RTC 接口,这种接口对于非 x86 系统来说不是 很轻便。

/dev/rtc0,/dev/rtc1 :是各种系统上,被各种 RTC 芯片所支持的框架的一部分。

迅为-iMX6 开发板以上两种均支持,设备节点对应为“/dev/rtc”和“/dev/rtc0”。 iTOP-iMX6 开发板的内核镜像,默认支持实时时钟,另外还需要有纽扣电池,如下图所示。 如果用户购买的时候,指明需要顺丰空运,那么开发板上应该是不带有纽扣电池的,电池的型 号为 cr1220,用户可自行购买。

news2018072001.png


1 内核驱动

iTOP-iMX6 的实时时钟 RTC 驱动是内核目录下的“drivers/rtc/rtc-snvs.c”文件,如下 图所示。

news2018072002.png


进入内核源码目录,使用“export ARCH=arm”,然后使用“make menuconfig”命 令,如下图所示,选择“Device Drivers --->”,输入回车。

news2018072003.png


如下图,进入“Real Time Clock --->” 

news2018072004.png 

如下图,配置“Freescale SNVS Real Time Clock ”。

news2018072005.png


2 测试

压缩包中有“topeet_rtctest.tar.gz”,其中有源码和二进制文件。源码文件中包含获取 实时时钟和打印出实时时钟时间的代码。

假如用户需要在代码中设置时间,则需要使用 date 和 hwclock 等命令。如果需要在代码 中增加设置时间的命令,可以使用函数“settimeofday”,不过多数情况下,在代码中直接 调用 date 和 hwclock 命令即可。另外在程序中调用 linux 命令,可以参考“iTOP-开发板- MiniLinux-C 程序调用 shell 命令”和“iTOP-开发板-QtE-调用 shell 命令使用文档”文档。

2.1 命令行设置时间和测试

如下图所示,可以使用“date”命令可以直接查看系统时间,上电开机之后(断电,取下 纽扣电池,上电开机),时间是默认的时间“Thu Jan 1 08:02:30 CST 1970”。

   news2018072006.png


使用命令“date -s "2018-07-17 17:43:00"”设置系统时间,接着使用命令“date” 可以查到系统时间已经更新,接着使用命令“hwclock --systohc”将系统时间同步到 RTC 实 时时钟,如下图所示。

news2018072007.png


p>    安装上纽扣电池,断电再开机,使用命令“date”,如下图所示,时间仍然是 2018 年, 说明实时时钟起作用了。


news2018072008.png


2.2 测试程序读取时间测试

如下图所示,iTOP-iMX6 的实时时钟,设备节点和“/dev/rtc0”可以正常调用。

news2018072009.png


测试程序 topeet_rtctest 需要传递设备节点,如果不传递设备节点,默认使用的是 “/dev/rtc0”,所以默认也是可以正常运行,如下图所示,使用命令“./topeet_rtctest”运 行程序。

news20180720011.png


最后测试一下“/dev/rtc”节点,如下图所示,使用命令 “./topeet_rtctest /dev/rtc”,设备节点“/dev/rtc”也是可以正常运行。

news20180720011.png


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客