Clock Time 子系统
clock_time 子系统为 RT-Thread 提供统一的时间基准与事件调度能力。它将
“计时”(单调计数器)与“定时事件”(可编程定时器中断)解耦,允许不同硬件
组合,同时保证内核行为一致。
设计原则
- 单调时间: 时间读数不回退。
- 角色分离: 时钟源负责计数,时钟事件负责触发超时。
- 缩放整数换算: 通过分辨率缩放因子把计数转换为纳秒,避免浮点计算。
- 可降级运行: 缺少硬件事件时由软件定时器维持基本功能。
组成部分
- 时钟源: 提供稳定计数器与频率信息。
- 时钟事件: 可编程下一次超时。
- 时钟定时器适配层: 将通用定时器外设包装为时钟源或事件设备。
- 高精度定时器: 软件调度层,排序超时并驱动下一次事件。
- 启动时间辅助: 将单调计数转换为常见时间格式,供上层使用。
时间流转
- 读取路径: 计数 -> 缩放分辨率 -> 纳秒。
- 超时路径: hrtimer 队列 -> 下一到期 -> 设置事件 -> 中断 -> 回调分发。
BSP 集成要点
- 提供稳定计数器或可编程定时器,一个设备可兼任两种角色。
- 选择默认的时钟源与事件设备,以获得准确计时与高效调度。
- 中断服务保持简短,换算与调度交由核心完成。
- POSIX 时间接口建立在该子系统之上,复用其单调时间基准。