Tick驱动
系统时钟 Tick 提供时间基准,驱动整个调度系统。 Tick 中断定期触发,为任务调度提供时间精度保障。
HRTOS v2 的实时性建立在 Tick 驱动 + WAIT恢复机制之上, 任务在周期性 WAIT/READY 切换中形成可预测执行节奏。 通过 Tick 驱动和 WAIT 恢复机制,保证任务响应能力和执行节奏的稳定性。
系统运行一个实时任务,通过周期性的 WAIT/READY 切换展示 HRTOS v2 的实时调度机制。 任务在运行窗口和等待周期之间循环,体现可预测的执行节奏,验证 Tick + WAIT 恢复机制的有效性。
HRTOS v2 实时调度的核心定义
HRTOS v2 的实时性不依赖独立调度器,而是由 Tick 驱动和 WAIT 恢复机制共同保证执行节奏的稳定性。 通过这三个关键环节,实现可预测的实时任务调度。
系统时钟 Tick 提供时间基准,驱动整个调度系统。 Tick 中断定期触发,为任务调度提供时间精度保障。
任务通过 os_delay 进入 WAIT 状态,在阻塞队列中等待。 WAIT 状态下任务不占用 CPU,允许其他任务执行。
Tick 计数到期后,任务从 WAIT 恢复到 READY 状态, 进入就绪队列等待调度器选择执行。
通过周期性的 WAIT/READY 切换,任务形成稳定的执行节奏。 这种可预测性是实时系统的重要特征。
实时任务的完整执行周期
实时调度的完整实现
task_rt 任务函数,通过周期性的 WAIT/READY 切换展示实时调度特性
#include "hrtos.h"
sbit LED_RT = P1^0;
void task_rt(void)
{
while(1)
{
LED_RT = 1; // 运行窗口
os_delay(10); // 模拟实时执行窗口
LED_RT = 0; // 等待周期
os_delay(40);
}
}
hrtos_main 函数,创建实时任务并启动调度系统
void hrtos_main(void)
{
LED_RT = 0;
os_task_create((unsigned int)task_rt, 1, 2, 5);
}
实时调度在 HRTOS 中的重要作用
使用本示例时需要关注的关键点
系统 Tick 频率直接影响实时任务的精度。合理配置 Tick 频率对保证实时性至关重要, 过高会增加系统开销,过低会影响调度精度。
示例中使用 os_delay(10) 和 os_delay(40) 分别模拟运行窗口和等待周期。 实际应用中应根据任务需求调整延时参数,确保执行节奏满足实时性要求。
WAIT 状态下任务不占用 CPU,这是实现多任务并发的基础。 理解 WAIT 阻塞机制有助于优化任务设计和系统性能。
任务恢复到 READY 状态后,需要等待调度器选择才能执行。 READY 窗口的长度取决于系统负载和调度策略,需要合理规划。
深入学习的相关资源