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. 一张图弄懂js原型和原型链

    前言 JavaScript的原型和原型链是面试的时候经常被问及到的问题,考察了我们对JavaScript的基础掌握情况,今天我们在这里用一张图来梳理下其中的知识点. 下面我来引入这张非常经典的图,我也 ...

  2. 【hbase】hbase的shell操作笔记

    HBase Shell $ ./bin/hbase shell # 进入交互界面 DDL操作: create:创建表(默认命名空间为default) # create '表名','列族1','列族2' ...

  3. Flask之flask-sqlalchemy

    接下来基于这个Flask项目,我们要加入Flask-SQLAlchemy让项目变得生动起来 1.加入Flask-SQLAlchemy第三方组件 from flask import Flask # 导入 ...

  4. Kubernetes系统基础

    Kubernetes系统基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.容器编排系统概述 1>.容器编排系统生态圈 Docker通过“镜像”机制极富创造性地解决了应用 ...

  5. 使用Cloudera Manager搭建HBase环境

    使用Cloudera Manager搭建HBase环境 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用CM安装HBase服务 1>.进入CM服务安装向导 2>. ...

  6. 运维开发笔记整理-URL配置

    运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...

  7. QT--初识

    一.组成QT的基本模块 二.创建一个简单工程 1.工程结构介绍 .pro 文件 QT += core gui # 包含的模块 greaterThan(QT_MAJOR_VERSION, ): QT + ...

  8. ISCC之RE_REV02

    打开IDA,跟着主函数转了一圈,无果,但是在下面翻到一串base64 base64解码,发现被坑了 this_is_not_the_flag_you_seek_keep_looking 继续翻,发现这 ...

  9. 使用Arduino开发板制作交流电压表

    在本文中,我们将使用Arduino开发板制作一个交流电压测量装置,测量我们家中交流电源的电压.我们将在Arduino IDE的串行监视器上打印输出该电压,并在万用表上显示出来. 制作数字电压表比模拟电 ...

  10. Immediate Decodability UVA-644(qsort排序 + 模拟)

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> us ...