一、测试背景
在实时操作系统中,除了常规调度机制,内核还可以提供指定后续运行任务的接口,以满足特定场景下的任务调度需求。
HRTOS 4.0 提供了 os_task_set_next() 接口,用于指定后续运行的任务。本次测试针对该接口,在 8051 硬件平台上分别测量高速任务指定普通任务运行,以及普通任务指定普通任务运行时的切换耗时。
测试使用 GPIO 输出标记任务执行状态,并通过逻辑分析仪记录实际时间。
本次实测结果:
-
高速任务指定普通任务:205.917 μs
-
普通任务指定普通任务:253 μs
二、测试环境
| 项目 | 配置 |
|---|---|
| 操作系统 | HRTOS 4.0 |
| 处理器架构 | 8051 |
| 晶振频率 | 11.0592 MHz |
| 测试接口 | os_task_set_next(1) |
| 测试仪器 | 逻辑分析仪 |
| 测试方式 | GPIO 电平变化与时间间隔测量 |
三、测试原理
本次测试创建两个任务:
-
task_a:反复将 P1.0 输出为高电平。 -
task_b:反复将 P1.0 输出为低电平,并调用os_task_set_next(1)指定任务 ID 为 1 的任务后续运行。
通过两个任务交替执行时产生的 GPIO 电平变化,测量指定任务运行路径对应的时间间隔。
测试分别使用不同的任务配置,以比较两种任务切换路径的实际测量结果。
四、测试一:高速任务指定普通任务
4.1 测试配置
高速任务调用 os_task_set_next(1),指定普通任务 ID 1 后续运行。
图 1:高速任务指定普通任务的逻辑分析仪截图

实测结果:
205.917 μs
该结果反映了本次测试配置下,高速任务执行指定任务操作后,转入普通任务运行所对应的测量时间。
五、测试二:普通任务指定普通任务
5.1 测试配置
第二组测试将调用 os_task_set_next(1) 的任务配置为普通任务,再观察其指定普通任务 ID 1 后的切换过程。
图 2:普通任务指定普通任务的逻辑分析仪截图

实测结果:
253 μs
该结果反映了普通任务执行指定任务操作后,转入另一个普通任务运行所对应的测量时间。
六、实测数据汇总
| 测试项目 | 实测时间 |
|---|---|
| 高速任务指定普通任务 | 205.917 μs |
| 普通任务指定普通任务 | 253 μs |
| 两组测量值之差 | 47.083 μs |
两组测试结果存在约 47.083 μs 的时间差。在本次测试条件下,高速任务指定普通任务的测量值更短。
需要注意,以上数据是具体测试路径的测量结果,不应仅凭两组数据就认定所有高速任务切换都比普通任务切换更快。任务上下文、调度状态、测试代码和测量起止点等因素,都可能影响最终结果。
七、结果分析
1. 指定任务运行的调度路径
os_task_set_next(1) 用于指定后续运行的任务。与仅观察常规任务调度相比,这项测试能够进一步了解内核在指定任务运行场景下的实际执行开销。
2. 不同任务类型的测量差异
高速任务指定普通任务的实测值为 205.917 μs,普通任务指定普通任务的实测值为 253 μs。
在本次测试中,两组测量结果存在一定差异。这为进一步分析 HRTOS 4.0 不同任务类型之间的调度路径提供了参考。
3. 硬件实测的价值
通过 GPIO 电平变化与逻辑分析仪测量,可以观察目标硬件上的实际运行时间,而不仅仅依赖源代码分析。
不过,GPIO 翻转之间的间隔不一定等于纯粹的上下文切换时间。若要严格比较内核切换开销,需要统一测量起止点,并明确是否包含 GPIO 操作、指定任务接口执行及其他指令开销。
八、总结
本次对 HRTOS 4.0 的 os_task_set_next(1) 指定任务运行机制进行了两组硬件测试:
-
高速任务指定普通任务:205.917 μs
-
普通任务指定普通任务:253 μs
两组结果展示了不同任务配置下指定任务运行路径的实测表现,为进一步研究 HRTOS 4.0 的调度机制和任务切换开销提供了数据参考。
通过持续开展硬件实测,可以逐步完善 HRTOS 4.0 的性能数据体系,使内核调度行为更加直观、可测量、可分析。