CPU:RK3288

系统:Linux

IC:hym8563

在 Linux 系统中,指令 date 和 hwclock 都可以读写时间

date:读写系统时间,写时间需要管理员权限

hwclock:读写硬件时间,也就是 rtc 模块的时间,读写都必须有管理员权限

// 读取当前系统时间
$ date
Thu Oct :: UTC
// 普通用户设置时间失败
$ date 102411032019.00
date: cannot set date: Operation not permitted
Thu Oct :: UTC
// 超级用户设置时间成功,格式:月日时分年.秒
$ sudo date 102411032019.00
Thu Oct :: UTC
// 读取当前系统时间,确认时间设置成功
// 小时与设置的11点不同,这是由于时区造成的
$ date
Thu Oct :: UTC

设置时区的问题,请参考:[Linux] 通过指令修改时区 tzselect

$ date
Thu Oct :: CST
// 查看硬件时间
$ sudo hwclock
Thu Oct :: PM CST . seconds
// 查看硬件时间
$ sudo hwclock -r
Thu Oct :: PM CST . seconds
// 查看硬件时间
$ sudo hwclock -show
Thu Oct :: PM CST . seconds
// 修改硬件时间,与系统时间相同
$ sudo hwclock -w
// 修改系统时间,与硬件时间相同
$ sudo hwclock -w

rtc 测试 demo:

#include <stdio.h>
#include <stdlib.h>
#include <linux/rtc.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <time.h> int main(int argc, char *argv[])
{
int fd, retval;
struct rtc_time rtc_tm;
time_t timep;
struct tm *p; fd = open("/dev/rtc", O_RDONLY);
if (fd == -) {
fprintf(stderr, "open /dev/rtc error\n");
exit(errno);
} /* Read the RTC time/date */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -) {
perror("ioctl");
exit(errno);
} fprintf(stderr, "RTC date/time: %d/%d/%d %02d:%02d:%02d\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + , rtc_tm.tm_year + ,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
time(&timep);
p = gmtime(&timep);
fprintf(stderr, "OS date/time(UTC): %d/%d/%d %02d:%02d:%02d\n",
p->tm_mday, p->tm_mon + , p->tm_year + ,
p->tm_hour, p->tm_min, p->tm_sec);
p = localtime(&timep);
fprintf(stderr, "OS date/time(Local): %d/%d/%d %02d:%02d:%02d\n",
p->tm_mday, p->tm_mon + , p->tm_year + ,
p->tm_hour, p->tm_min, p->tm_sec); rtc_tm.tm_mday = ;
rtc_tm.tm_mon = ;
rtc_tm.tm_hour = ;
rtc_tm.tm_min = ;
retval = ioctl(fd, RTC_SET_TIME, &rtc_tm);
if (retval == -) {
perror("ioctl");
exit(errno);
} /* Write the RTC time/date */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -) {
perror("ioctl");
exit(errno);
} fprintf(stderr, "RTC date/time: %d/%d/%d %02d:%02d:%02d\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + , rtc_tm.tm_year + ,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
time(&timep);
p = gmtime(&timep);
fprintf(stderr, "OS date/time(UTC): %d/%d/%d %02d:%02d:%02d\n",
p->tm_mday, p->tm_mon + , p->tm_year + ,
p->tm_hour, p->tm_min, p->tm_sec);
p = localtime(&timep);
fprintf(stderr, "OS date/time(Local): %d/%d/%d %02d:%02d:%02d\n",
p->tm_mday, p->tm_mon + , p->tm_year + ,
p->tm_hour, p->tm_min, p->tm_sec); close(fd); return ;
}

参考:https://blog.csdn.net/u010703935/article/details/11728091

[Linux] RTC 读写指令及测试程序的更多相关文章

  1. linux rtc 接口【转】

    转自:http://blog.csdn.net/goldfighter/article/details/6126178 Linux操作系统内核对RTC的编程详解 转自: http://xenyinze ...

  2. linux驱动基础系列--linux rtc子系统

    前言 linux驱动子系统太多了,连时钟也搞了个子系统,这导致一般的时钟芯片的驱动也会涉及到至少2个子系统,一个是时钟芯片接口子系统(比如I2c接口的时钟芯片),一个是内核给所有时钟芯片提供的rtc子 ...

  3. (转)Linux最常用指令及快捷键 Linux学习笔记

    Linux最常用指令及快捷键 Linux学习笔记 原文:http://blog.csdn.net/yanghongche/article/details/50827478 [摘自 鸟叔的私房菜]--转 ...

  4. linux的一些指令

    linux的一些指令 █查看指令參數man 指令,如:man ls ,按q鍵退出 █查看文件列表ls -lht 按時間排序ll 列表ls 列表 目錄cd 目錄名稱 進入路徑cd .. 返回上層路徑 █ ...

  5. Linux文件常用指令

    目录 Linux文件常用指令 1.pwd 显示当前目录 2.cd 切换目录 3.mkdir 创建目录 4.touch 修改或创建文件 5.ls 显示目录下的内容 6.cat 查看文件信息 7.echo ...

  6. Linux入门50指令

    1, mkdir创建目录 make directory 可以带着路径,在什么位置创建什么目录 如:mkdir /etc/date  在目录etc下创建date目录 重要参数 –p 递归创建,mkdir ...

  7. linux常用操作指令

    Linux常用操作指令: 常用指令 ls        显示文件或目录 -l           列出文件详细信息l(list) -a          列出当前目录下所有文件及目录,包括隐藏的a(a ...

  8. linux RTC 驱动模型分析【转】

    转自:http://blog.csdn.net/yaozhenguo2006/article/details/6824970 RTC(real time clock)实时时钟,主要作用是给Linux系 ...

  9. Linux日常使用指令大全

    Linux日常使用指令大全 Java代码 www.ahlinux.com 001.日常维护常用查询命令 #top    显示系统进程 #clear  清理屏幕信息 #cat /etc/redhat-r ...

随机推荐

  1. Qt 添加程序图标和系统托盘图标

    添加程序图标 第一种方法: 1.创建程序的时候,选择添加默认图标 2.替换程序目录下的ico文件,编译生成即可. 第二种方法: 比较适合一开始没有添加程序图标的情况 1.项目右键-->添加--& ...

  2. 笔谈FFmpeg(二)

    经过前面的学习对FFmpeg的基本流程已经很熟悉了,现在到了掌握其中细节的时候了,用FFmpeg做播放器解码操作中,涉及到了一些结构体,这些结构之间到底有什么关系,它们是怎样协同工作的呢.文章 FFM ...

  3. [破解版]Unity3d引擎最新稳定版本4.5.5下载(官方最新稳定版本)

    来源:http://www.unitymanual.com/thread-28912-1-1.html unity4.5.5 Mac版下载地址:http://pan.baidu.com/s/1hqzi ...

  4. II、Vue的项目目录结构 一些语法

    Vue目录结构 这是某闭源项目的web端目录结构: 目录解析: -目录/文件 - build 项目构建(webpack)相关代码 config 配置目录.端口号:也有默认的 node_modules ...

  5. Linux主机之间传输文件的几种方法对比

    1.scp传输 scp -r /data/file root@ip:/data/ scp -C /data/sda.img root@ip:/data/img/#-r: 支持目录#-C: 启用压缩传送 ...

  6. 转载-企业环境下MySQL5.5调优

    转载-企业环境下MySQL5.5调优 参照 腾讯云 和ucloud my.cnf 以及网上找的资料 整理出来的 my.cnf , 以后修改任何参数都会继续更新,目前是在测试阶段; 物理机 : ubun ...

  7. Java判断对象类型是否为数组

    判断对象是否为数组: public static void main(String[] args) { String[] a = ["1","2"]; if(a ...

  8. python爬有道翻译

    在有道翻译页面中打开开发者工具,在Headers板块找到Request URL以及相应的data. import urllib.request import urllib.parse import j ...

  9. Can you answer these queries? (线段树

    题目 题意: 初始给你n个数,通过m个操作,  操作0是使区间范围内的每一个a[i]都变成 根号a[i] ,操作1是查询区间范围内数字的和. 思路: 如果一个节点sum[rt]是1的话,根号1还是1, ...

  10. linux系统编程之进程(四)

    今天继续研究进程相关的东东,话不多说,进入正题: SIGCHLD: 关于它,之前章节的学习中已经用到了,具体可以参考博文:http://www.cnblogs.com/webor2006/p/3500 ...