news 2026/7/3 23:31:10

瑞芯微RV1126B开发板(EASY-EAI-PI2) RTC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
瑞芯微RV1126B开发板(EASY-EAI-PI2) RTC

1.RTC介绍

RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片。实时时钟芯片通过引脚对外提供时间读写接口,通常使用独立电池供电,以保证在外部系统关电时,芯片电路正常工作,时间正常运行。

不同的时钟芯片内部机制不一样,但在Linux系统中驱动封装了不同时钟芯片的操作细节,为应用程序提供了统一的时间操作接口。

1.1开发板的RTC资源

EASY EAI PI2【默认不带】RTC电路。若想底板支持RTC功能,可通过使用我司的RTC模块进行【扩展】

扩展RTC的具体操作:【首先】要把底板【断电】,然后再把模块【正面朝上】地插入到底板的40PIN接口上,如下图所示。

插稳后,再进行【上电】操作。

通过ls命令,可查看RTC芯片是否有被系统识别

ls /dev/rtc*

确认驱动成功加载后,可通过下方命令访问驱动,读出RTC芯片的所有信息。

cat /proc/driver/rtc

1.2RTC时间的读写

这里涉及2个时钟,RTC芯片时钟以及系统时钟。手动管理RTC时钟操作的本质就是:同步时钟(要么把系统时钟同步到RTC芯片时钟上,要么把RTC芯片时钟同步到系统时钟)。

系统时钟:系统时钟本质是一个64位的整数,这个整数代表当前与Epoch Time的时间差(以秒为单位),我们称之为时间戳。这个时钟由CPU主芯片定时器维护,CPU掉电后,时钟信息就会丢失。操作系统时钟的命令为date。

date #查询系统时间 date -s "2023-09-20 11:18:00" #修改系统时间

注:

* Epoch Time:是指一个特定的时间。1970年1月1日0时0分0秒。假设现在距离1970年1月1日0时0分0秒走了N秒,在Linux系统里,时间数值就是N。

RTC芯片时钟:RTC芯片内部所维护的时间。在系统掉电后由电池进行供电。因此系统电源掉电后RTC时间仍然能够正常运行,RTC芯片时钟的作用是在Linux不运行时,依然可以保持时间信息。

芯片时钟同步到系统时钟。

sudo hwclock --hctosys

系统时钟同步到芯片时钟(或者是sudo hwclock -w)。

sudo hwclock --systohc

如果只想查询RTC芯片时钟,但不同步到系统时钟,可以采用以下命令。

sudo hwclock -r

1.3系统时钟的读写

本文着重介绍的是【RTC时钟】,关于【系统时钟】的详细介绍和操作,可以通过阅读《EASY-EAI-Toolkit/通用组件/系统操作-时间参数》一文进行了解。

1.4时区和校时服务

时区:【RTC时钟】和【系统时钟】用的都是UTC时间,不同地区所使用的时间,还需要考虑上时区的影响。

校时服务:【RTC时钟】除了可以被手动操作,校时服务也会影响RTC时钟。

关于【时区设置】和【校时服务】,EASY-EAI-Nano-TB可以参考《应用笔记/自动校时与时区设置》一文进行操作。更详细的交互作用机制,可参考《系统时间管理介绍》

2.快速上手

2.1开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh 2204

2.2源码下载以及例程编译

首先,在虚拟机后台终端,执行以下命令,创建外设单例源码管理目录:

cd /opt mkdir -p EASY-EAI-PI2/demo

首先,到【百度网盘】上下载相关的单例程序:

链接:https://pan.baidu.com/s/1ORJrMeW-bOJ6g_lPiNG6mw?pwd=1234

提取码:1234

比如把单例程序下载到:此电脑\D:\BaiduNetdisk (无规定,用户可自主选择),如下图所示。

再将下载好的单例复制进入虚拟机的文件系统,过程如下图所示。

最后,进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-PI2/demo/12_RTC ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

编译成功后,会生成一个test-rtc的可执行程序在Release目录下,并会自动部署到开发板的/userdata/目录中。

2.3例程运行

通过串口调试ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata

执行例程命令,如下所示。

sudo ./test-rtc

执行效果如下所示。

3.C语言使用案例

RTC的C语言使用案例,代码地址为12_RTC/test-rtc/main.c,供用户编码参考。以下代码展示了对RTC时钟的读写操作流程:

int main(int argc, char const *argv[]) { const char *strDateTime = "2023-09-21 15:22:37"; // 将字符串转换为tm结构体类型的时间信息 struct tm tm = {0}; strptime(strDateTime, "%Y-%m-%d %H:%M:%S", &tm); // 打开RTC设备 int rtc_fd = open("/dev/rtc0", O_RDWR); if (rtc_fd < 0) { perror("open RTC device /dev/rtc0 faild."); close(rtc_fd); return -1; } printf("---设置参数前日期时间---\n"); system("date"); /*** 1.关闭网络校时服务 ***/ system("systemctl stop ntp.service"); /*** 2.将预设好的时间写入【RTC时钟】 ***/ struct rtc_time rtc_tm; rtc_tm.tm_sec = tm.tm_sec; rtc_tm.tm_min = tm.tm_min; rtc_tm.tm_hour = tm.tm_hour; rtc_tm.tm_mday = tm.tm_mday; rtc_tm.tm_mon = tm.tm_mon; rtc_tm.tm_year = tm.tm_year; if (ioctl(rtc_fd, RTC_SET_TIME, &rtc_tm) < 0) { perror("set data time to rtc0"); perror("RTC时间设置失败"); close(rtc_fd); return -1; } /*** 3.将【RTC时钟】同步回【系统时钟】 ***/ // 读出刚才写入的RTC时钟参数 if (ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm) < 0) { perror("RTC时间读取失败"); close(rtc_fd); return -1; } close(rtc_fd); tm.tm_sec = rtc_tm.tm_sec; tm.tm_min = rtc_tm.tm_min; tm.tm_hour = rtc_tm.tm_hour; tm.tm_mday = rtc_tm.tm_mday; tm.tm_mon = rtc_tm.tm_mon; tm.tm_year = rtc_tm.tm_year; struct timeval tv; tv.tv_sec = mktime(&tm); tv.tv_usec = 0; // 同步时间到系统时钟 if(0 != settimeofday(&tv, (struct timezone *)0)){ perror("系统时间设置失败"); } printf("---设置参数后日期时间---\n"); system("date"); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 5:05:15

28V,1.5A,XU1619,升压LED恒流驱动芯片

概述 这是一款恒频电流模式升压转换器&#xff0c;适用于小型、低功耗应用。内部软启动功能可以减少涌入电流。1.2MHz的固定开关频率运行&#xff0c;可以使用小型外部组件。可以在5V电源输入下产生100mA的28V电压。有欠压保护、限流、热过载保护。特点 ●输入电压范围&#xf…

作者头像 李华
网站建设 2026/6/27 5:00:32

没有公证的协议有法律效力吗?协议公证怎么办理?

很多人在签订各类民事、商事协议后&#xff0c;都会纠结要不要专门跑一趟公证处做公证&#xff0c;甚至默认没经过公证的协议就完全不具备法律效力。其实这种认知存在明显误区&#xff0c;正常情况下&#xff0c;只要协议满足双方自愿签署、内容不违反法律规定、签署人具备相应…

作者头像 李华
网站建设 2026/6/27 4:55:58

存储芯片短缺致苹果全球提价,国产手机厂商面临“生死缝”考验

苹果全球提价&#xff1a;存储芯片短缺下的无奈之举2026年6月25日&#xff0c;苹果对Mac、iPad等多款硬件启动全球提价&#xff0c;最高涨幅达300美元&#xff0c;这是近年规模最大的全球性调价。三天前&#xff0c;CEO蒂姆库克就已表明&#xff0c;受存储芯片短缺拖累&#xf…

作者头像 李华
网站建设 2026/6/27 4:38:06

XEOS Tables 发布:让对象存储原生长出 Iceberg 表语义,数据湖从“存得下”到“用得好”

随着企业数据规模迈入 EB 级时代&#xff0c;对象存储凭借海量容量和低成本优势成为数据湖的事实底座&#xff0c;但单纯的对象存储只能完成文件存放&#xff0c;很难匹配大模型训练、RAG 知识库构建、多模态数据分析等 AI 业务对标准化数据集的使用要求。不少企业选择自行搭建…

作者头像 李华
网站建设 2026/6/27 4:37:56

国外品牌在国内生产,算国产还是进口?

品牌是国外的&#xff0c;在国内生产&#xff0c;投标时&#xff0c;《关于符合本国产品标准的声明函》应该怎么填写呢&#xff1f;这个问题的答案直接关系到你能不能投、能得多少分。很多人想当然觉得&#xff1a;品牌是外国的&#xff0c;那就算进口。但政府采购的认定标准&a…

作者头像 李华