GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>系统教程 > 如何快速调试RTC?你知道吗?

如何快速调试RTC?你知道吗?

来源:Ghost系统之家浏览:时间:2023-08-18 09:13:08

如何快速调试RTC?你知道吗?

作者:软通动力HOS 2023-01-13 17:02:10系统 OpenHarmony 本文介绍了OpenHarmony中外置RTC调试和使用方法,以及RTC在操作系统中的作用,为后续NTP时间同步提供支持。

​​想了解更多关于开源的内容,请访问:​​

​​51CTO开源基础软件社区​​

​​https://ost.51cto.com​​

1、RTC介绍

RTC是Real Time Clock的简称,它在硬件电路上单独供电,当系统关机时,CPU和其他外部硬件设备全部掉电,但是RTC仍然继续工作。这样就可以继续给设备提供精准的时钟,并提供报警功能和计时器功能。

2、如何查询系统时间和硬件时间

(1)查询系统时间.

# dateSat Aug5 09:15:26 UTC 2017

(2)查看RTC硬件时间:hwclock -r 显示RTC时间(读取RTC时间显示)。

# hwclockSat Aug5 09:13:36 20170.000000 seconds

(3) 设置系统时间,硬件时间hwclock -r 显示RTC时间(读取RTC时间显示)hwclock -w 设置RTC时间(将系统时间传递给RTC驱动,设置RTC的驱动时间)hwclock -s 设置系统时间(将RTC时间读取出来设置给系统时间).

3、如何查看RTC设备节点及文件

(1)RTC设备节点。

# pwd/dev# ls rtc*rtcrtc0rtc12)sys/class/rtc# pwd/sys/class/rtc# lsrtc0rtc1# pwd/sys/class/rtc/rtc0# lsalarmtimer.3.autodevice name subsystemwakealarmdate hctosyspowertimedevmax_user_freqsince_epochuevent

(2)proc/driver/rtc:获取RTC的相关信息。

# cat proc/driver/rtcrtc_time: 09:12:46rtc_date: 2017-08-05alrm_time : 00:00:00alrm_date : 1999-12-16alarm_IRQ : noalrm_pending: noupdate IRQ enabled: noperiodic IRQ enabled: noperiodic IRQ frequency: 1max user IRQ frequency: 6424hr: yes

4、内核中如何开启RTC,并设置时间同步

在linux系统上,从用户空间正确管理RTC需要关注两个内核选项:CONFIG_RTC_HCTOSYSCONFIG_RTC_HCTOSYS_DEVICE要使用CONFIG_RTC_HCTOSYS应在内核构建过程中包含代码文件drivers/rtc/hctosys.c,它在启动和恢复时从RTC设置系统时间。一旦启用此选项,就将使用从指定RTC设备读取的值设置系统时间。RTC设备应该在CONFIG_RTC_HCTOSYS_DEVICE中指定:

CONFIG_RTC_HCTOSYS=yCONFIG_RTC_HCTOSYS_DEVICE="rtc0"

5、RTC关键结构体说明

rtc_time 结构体说明:struct rtc_time {inttm_sec; inttm_min; inttm_hour; inttm_mday; inttm_mon; inttm_year; inttm_wday; inttm_yday; inttm_isdst; };rtc_wkalrm 结构体说明:struct rtc_wkalrm {unsignedchar enabled; unsignedchar pending; structrtc_time time; };

6、RTC框图

如何快速调试RTC?-开源基础软件社区

7、RTC适配问题总结

问题1:/dev/rtc未生成,无法获取硬件时间。

# hwclockhwclock: /dev/misc/rtc: No such file or directory

问题分析:启动日志报错no valid clock/calendar values available[ 1.179936] rk808-rtc rk808-rtc: registered as rtc0[ 1.186459] rtc-hym8563 5-0051: no valid clock/calendar values available[ 1.186675] rtc-hym8563 5-0051: registered as rtc1[ 1.187698] rtc-hym8563 5-0051: no valid clock/calendar values available[ 1.187723] rtc-hym8563 5-0051: hctosys: unable to read the hardware clock从log分析,rtc1时钟值无效,可能为人为写入了无效值,或者初始化时写入了无效值;解决方案:(1)在dts中添加init_date项,当hym8563_probe的时候,检测到系统如果未设置时间,则给时钟芯片一个默认值(init_date 设置的值);

&i2c_AO { status = "okay"; pinctrl-names="default"; pinctrl-0=; clock-frequency = ; hym8563: hym8563@51 { compatible = "haoyu,hym8563"; reg = ; init_date = "2021/07/28";#clock-cells = ; };};

(2)通过命令设置硬件时钟;hwclock -w。验证结果:通过日志查看显示.

[1.413453] rk808-rtc rk808-rtc: registered as rtc0[1.423286] rtc-hym8563 5-0051: registered as rtc1[1.424348] rtc-hym8563 5-0051: setting system clock to 2021-11-13T21:10:55 UTC (1636837855)

问题2:将rtc1设置为硬件时钟后,连接网络进行NTP时间同步,查看rtc1时钟未同步,实际同步的是rtc0硬件时钟

# dateFri Nov 18 15:53:21 UTC 2022# hwclockSun Nov 14 20:18:58 20210.000000 seconds

问题分析:怀疑连接网络后,网络时间同步模块在将同步后的系统时间写入硬件时钟时,写入到了/dev/rtc0,而非实际使用的/dev/rtc1;经排查网络时间同步后设置硬件时钟代码所在位置为:/base/miscservices/time/services/time_manager/src/time_service.cpp加入LOG打印信息如下,证实问题所在就是写入到了/dev/rtc0,而非实际使用的/dev/rtc1;

# hilog | grep RTC11-18 15:46:28.906 464 464 E 01c02/TimeService: [time_service.cpp] set_rtc_time# RTC rtc_id : 0:11-18 15:46:28.906 464 464 E 01c02/TimeService: [time_service.cpp] set_rtc_time# RTC rtc_dev : /dev/rtc0:

解决方案:修改代码set_rtc_time函数中,设备节点由/dev/rtc0修改为/dev/rtc,此时/dev/rtc软连接的是实际使用的硬件时钟/dev/rtc1,而非固定为/dev/rtc0。

vi base/miscservices/time/services/time_manager/src/time_service.cpp +351@@ -348,13 +356,15 @@ int TimeService::set_rtc_time(time_t sec)return -1;}std::stringstream strs;-strs << "/dev/rtc" << rtc_id;+strs << "/dev/rtc";

修改后发现NTP时钟同步仍然失败,加log打印后发现,set_rtc_time中open设备节点失败。

11-18 17:10:41.495 533 533 E 01c02/TimeService: [time_service.cpp] set_rtc_time# RTC rtc_dev : /dev/rtc:11-18 17:10:41.495 533 533 E 01c02/TimeService: [time_service.cpp] set_rtc_time# RTC open failed /dev/rtc: Permission denied

查看设备节点发现,新增的rtc1用户组为root,因此用户程序无权限打开,需将用户组修改为system。

# ls -al rtc*lrwxrwxrwx 1 root system4 2021-11-14 21:15 rtc -> rtc1crw-r----- 1 system system 250, 0 2021-11-14 21:15 rtc0crw-r----- 1 root root 250, 1 2021-11-14 21:15 rtc1

在设备初始化代码中增加修改rtc1用户组:

index 766f404..0530a20 100755--- a/rk3568/build/rootfs/init.rk3568.cfg+++ b/rk3568/build/rootfs/init.rk3568.cfg@@ -5,7 +5,8 @@ "jobs" : [{ "name" : "pre-init", "cmds" : [-"write /proc/sys/vm/min_free_kbytes 10240"+"write /proc/sys/vm/min_free_kbytes 10240",+"chown system system /dev/rtc1" ] }, { "name" : "init",

修改后查看rtc1用户组:

# cd dev/# ls -al rtc*lrwxrwxrwx 1 root system4 2022-11-18 18:24 rtc -> rtc1crw-r----- 1 system system 250, 0 2022-11-18 18:24 rtc0crw-rw---- 1 system system 250, 1 2022-11-18 18:24 rtc1

用户程序可正常打开:

11-18 18:00:36.159 533 533 E 01c02/TimeService: [time_service.cpp] set_rtc_time# RTC rtc_dev : /dev/rtc:11-18 18:00:36.161 533 533 E 01c02/TimeService: [time_service.cpp] set_rtc_time# RTC set_rtc_time success!!!!!!

验证结果:结果符合预期,连接网络后系统时间,硬件时钟均自动同步为网络时间。//设置系统和硬件时间为非当前时间。

# dateFri Jan1 00:02:40 UTC 2021# hwclockFri Jan1 00:02:46 20210.000000 seconds//

连接网络后,同步网络时间,系统时间和硬件时钟均自动同步。

# dateMon Nov 21 15:19:28 UTC 2022# hwclockMon Nov 21 15:19:32 20220.000000 seconds

总结:本文介绍了OpenHarmony中外置RTC调试和使用方法,以及RTC在操作系统中的作用,为后续NTP时间同步提供支持。

​​想了解更多关于开源的内容,请访问:​​

​​51CTO开源基础软件社区​​

​​https://ost.51cto.com​​

责任编辑:jianghua 来源:51CTO 开源基础软件社区 操作系统鸿蒙

推荐系统

  • 电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载

    电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载

    语言:中文版系统大小:2.98GB系统类型:Win8

    电脑公司Ghost Win8.1x32位纯净版V2022年7月版本集成了自2022流行的各种硬件驱动,首次进入系统即全部硬件已安装完毕。电脑公司Ghost Win8.1x32位纯净版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,精心挑选的系统维护工具,加上绿茶独有

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户