fl2440移植RTC驱动及hwclock命令使用
来源:互联网 发布:西方现代哲学史知乎 编辑:程序博客网 时间:2024/06/06 09:44
RTC实时时钟
RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器。当Linux内核启动时,它从RTC中读取时间与日期,作为基准值。在运行期间内核完全抛开RTC,以软件的形式维护系统的当前时间与日期,并在需要时将时间回写RTC芯片。另外如果RTC提供了IRQ中断并且可以定时,那么RTC还可以作为内核睡眠时唤醒内核的闹钟。应用程序可以用RTC提供的周期中断做一些周期的任务。
RTC驱动模型结构
与RTC核心有关的文件有:
/drivers/rtc/class.c 这个文件向linux设备模型核心注册了一个类RTC,然后向驱动程序提供了注册/注销接口
/drivers/rtc/rtc-dev.c 这个文件定义了基本的设备文件操作函数,如:open,read等
/drivers/rtc/interface.c 顾名思义,这个文件主要提供了用户程序与RTC驱动的接口函数,用户程序一般通过ioctl与RTC驱动交互,这里定义了每个ioctl命令需要调用的函数
/drivers/rtc/rtc-sysfs.c 与sysfs有关
/drivers/rtc/rtc-proc.c 与proc文件系统有关
/include/linux/rtc.h 定义了与RTC有关的数据结构
下面我们开始实际的移植过程,还是主要分为两个部分,一是在内核中添加对rtc驱动的支持,二是修改设备信息。
一、在内核中添加对rtc驱动的支持
Device Drivers --->[*] Real Time Clock --->
--- Real Time Clock
[*] Set system time from RTC on startup and resume
(rtc0) RTC used to set the system time
[ ] RTC debug support
*** RTC interfaces ***
[*] /sys/class/rtc/rtcN (sysfs)
[*] /proc/driver/rtc (procfs for rtc0)
[*] /dev/rtcN (character devices)
[*] RTC UIE emulation on dev interface
<*> Test driver/device
二、修改arch/arm/mach-s3c2410/mach-smdk2410.c
[fanmaolin@Centeros linux-3.0]$ make
编译内核后移植到开发板上,ok啦。
可以看到有添加RTC的信息。
在开发板上进行测试操作:
Linux命令之hwclock - 查询和设置硬件时钟
hwclock命令,与clock命令是同一个命令,hw clock, hardware clock,硬件(RTC)时钟,主要用来查询和设置硬件时钟。
Options:
-r Show hardware clock time
-s Set system time from hardware clock
-w Set hardware clock to system time
-u Hardware clock is in UTC
-l Hardware clock is in local time
-f FILE Use specified device (e.g. /dev/rtc2)
这里注意区分-s 和-w的使用区别,最常用的有三个:
-r, --show 读取并打印硬件时钟(read hardware clock and print result )
-s, --hctosys 将硬件时钟同步到系统时钟(set the system time from the hardware clock )
-w, --systohc 将系统时钟同步到硬件时钟(set the hardware clock to the current system time )
这里要说明的是 hwclock命令与clock命令是一个东西。仅介绍hwclock
Thu Jan 1 00:05:51 1970 0.000000 seconds
Thu Jan 1 00:06:51 1970 0.000000 seconds
Fri Apr 28 21:04:35 MDT 2017
rtc-test rtc-test.0: test_rtc_set_mmss, secs = 1493413496
>: hwclock -r //已经显示为系统时间
Sat Apr 29 03:05:04 2017 0.000000 seconds
Sat Apr 29 03:06:18 2017 0.000000 seconds
Sat Apr 29 03:07:07 2017 0.000000 seconds
硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟,对于嵌入式开发,对应开发板上有对应的rtc模块。
系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。
所有Linux相关指令与函数都是读取系统时钟的设定。系统时钟的设定就是我们常用的date命令。
而我们写的RTC驱动就是为硬件时钟服务的,它有属于自己的命令hwclock。
因此,可以简单理解为,date命令操作Linux的系统(软件)时钟,hwclock命令操作硬件时钟(rtc模块)。
所以,对应地,我们要验证rtc驱动是否工作正常,只需要hwclock,
但往往又会涉及Linux的系统时钟和硬件时钟之间的同步等操作,所以,一般都是将date和hwclock一起搭配使用。
# The time zone of the system is defined by the contents of /etc/localtime.
# This file is only for evaluation by system-config-date, do not rely on its
# contents elsewhere.
ZONE="Asia/Shanghai"
比较好的解决办法是
使用ntpdate命令从网络同步时间,再同步到硬件时钟。
- fl2440移植RTC驱动及hwclock命令使用
- RTC hwclock date 命令使用
- 基于FL2440的RTC驱动移植
- fl2440内核自带按键驱动移植及hexdump命令
- rtc hwclock 使用
- rtc hwclock 使用
- rtc hwclock 使用(转)
- linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- 【整理】linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- [应用] 【整理】linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- fl2440 uda1341声卡驱动移植及madplay播放器移植
- fl2440 usb驱动移植
- Arm9+linux fl2440 驱动移植之RTC(实时时钟)和USB host
- RTC驱动移植
- 每日一题 No.32 程序员的归宿问题
- iOS多线程初级
- redis 集群搭建及相关命令
- 07-S3C2440驱动学习(一)嵌入式linux字符设备驱动-LED字符设备驱动
- MVC属性过滤器
- fl2440移植RTC驱动及hwclock命令使用
- Java字符串数组初始化和赋值
- Java集合之List遍历找到匹配元素删除方法总结
- [BZOJ2303][Apio2011]方格染色(数学相关+加权并查集)
- 提高篇项目2-二分法解方程
- bzoj 2303: [Apio2011]方格染色 (并查集)
- Opencv error unspecified error incorrect element name operator <<
- G
- 极光推送步骤!!!