RK3568平台(时间篇)RTC时间框架

一.RTC时间框架概述

RTC(Real Time Clock)是一种用于计时的模块,可以是再soc内部,也可以是外部模块。对于soc内部的RTC,只需要读取寄存器即可,对于外部模块的RTC,一般需要使用到I2C接口进行读取。至于如何供电,都是可以在主电源断开后使用纽扣电源辅助供电,达到设备断电仍然可以计时的效果。

对于soc内部的RTC,需要额外的晶振,而外部模块的RTC不需要。

在linux内核里,rtc是一个字符设备,内核实现了一个通用的字符设备层,提供给应用层系统调用,给底下的RTC硬件驱动层提供注册接口。每款RTC需要编写对应的硬件驱动,填写读取和设置时间的回调函数,并且注册进系统。从上到下分别是应用层、rtc通用字符设备层、rtc底层驱动层。

Linux 内核中,RTC 驱动的结构图如下所示, 可以分为三个层次:

接口层,负责向用户空间提供操作的结点以及相关接口。
• RTC Core, 为rtc 驱动提供了一套API, 完成设备和驱动的注册等。
• RTC 驱动层,负责具体的RTC 驱动实现,如设置时间、闹钟等设置寄存器的操作。

二.RTC设备驱动

申请rtc_device,RTC注册函数:

struct rtc_device *devm_rtc_device_regis
### RK3568 平台 Hym8563 RTC 芯片开关机功能测试方法 为了验证 Hym8563 RTC 芯片在 RK3568 平台上是否能够正常支持定时开关机功能,可以按照以下方式完成测试。 #### 1. DTS 配置检查 确保设备树文件中已正确配置 I2C 和 Hym8563 的节点信息。以下是典型的 DTS 配置示例: ```dts &i2c5 { status = "okay"; hym8563: hym8563@51 { status = "okay"; compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; rtc-irq-gpio = <&gpio0 RK_PD3 IRQ_TYPE_EDGE_FALLING>; clock-frequency = <32768>; }; }; ``` 上述配置需与实际硬件连接一致[^4]。如果未启用 `status` 或者 GPIO 中断配置错误,则可能导致 RTC 功能异常。 --- #### 2. 内核驱动加载确认 通过日志查看内核是否成功初始化 Hym8563 设备并注册为 RTC 模块: ``` [ 0.868178] enter ---hym85868222] hym8563: enter hym8563_init_device. [ 0.875254] rtc-e: registered hym8563 as rtc0 [ 0.876286] rtc-hym8563 3-0051 to 2022-02-09 08:08:42 UTC (1644394122) ``` 以上日志表明 Hym8563 已被识别为 `rtc0`[^5]。如果没有类似输出,请检查驱动程序路径 `/driver/rtc/rtc-hym8563.c` 是否编译到内核中。 --- #### 3. 定时开机设置 可以通过写入特定时间RTC 寄存器来实现定时开机功能。具体操作如下: ##### a) 设置目标唤醒时间 假设希望设备在当前时间基础上延迟 1 小时启动,可执行以下命令: ```bash date -s "$(date --date='next hour')" hwclock -w echo "+3600" > /sys/class/rtc/rtc0/wakealarm ``` 第一条命令将系统时间调整为目标唤醒时间;第二条同步硬件时钟;第三条设置相对秒数作为唤醒触发条件。 ##### b) 关闭电源前保存状态 进入低功耗模式之前需要调用相关接口通知 PMIC(电源管理芯片)。例如,在 Rockchip SoC 上可能涉及以下 API: ```c #include <linux/pm.h> pm_suspend(PM_SUSPEND_STANDBY); ``` 或者直接运行 shell 命令强制休眠: ```bash echo mem > /sys/power/state ``` --- #### 4. 验证结果 当设定的时间到达后观察设备是否会自动重启。可通过串口工具捕获上电瞬间的日志以判断是否由 RTC 引发唤醒事件。典型日志片段应包含类似内容: ``` PMU Wakeup Source: RTC Alarm ``` 若未能如期恢复工作,请排查以下几个方面: - **GPIO 连接**:确认中断信号线是否牢固绑定至指定管脚。 - **权限控制**:SELinux 政策可能会阻止某些进程访问敏感资源[^3]。 - **固件版本**:部分旧版 BIOS/PBL 可能缺乏对扩展 RTC 特性的全面支持[^1]。 --- #### 5. 注意事项 对于基于 Android 的开发环境而言,还需额外关注框架层如何处理后台服务以及电池优化策略的影响。必要情况下修改 SELinux 策略文件允许必要的例外行为发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式_笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值