概述
Tick System由硬件定时器驱动,是RTOS时间体系的最底层来源。
在HRTOS中,系统时间并非“自然流动”,而是由固定周期Tick驱动推进, 所有延时、调度、定时器均依赖该机制。
Tick频率决定系统时间精度与中断开销之间的平衡,是实时系统核心参数之一。
工作原理
每次硬件定时器中断触发,系统进入Tick ISR进行时间推进。
ISR执行流程:递增系统tick → 更新延时队列 → 更新时间片 → 检查调度条件。
延时队列与时间片共享同一Tick基准,实现统一时间驱动模型。
Tick计数器可为16/32/64位,用于不同系统规模与运行周期需求。
关键接口 / 硬件层
os_tick_config(slice_count, tick_value):配置系统Tick周期与时间片。 slice_count表示时间片数量,tick_value为硬件计数周期。
其内部实现会重置计数器并配置定时器: 将tick_value转换为定时器重装值(65535 - tick_value + 1), 并写入T0寄存器。
os_tick_get()用于读取当前系统tick(高低字节)。
os_uptime_ms()返回系统启动后的运行时间。
os_ms_to_tick / os_sec_to_tick用于时间单位转换。
运行流程
Timer Interrupt → Tick ISR → Tick++ → Delay Check → Timeslice Update → Scheduler Trigger
当Tick到达时,系统检查延时队列是否有任务到期, 同时更新当前任务时间片。
若时间片耗尽或高优先级任务就绪,则触发调度切换。
实现说明(核心逻辑)
Tick配置函数用于初始化硬件定时器与时间片系统, 是整个时间系统启动的关键入口。
错误条件包括tick_value为0或过小,避免中断频率异常。