TencentOS Tiny与FreeRTOS的任务切换时间测试
2025-10-03 11:33:38
  • 0
  • 0
  • 0

仅仅限于ARM Cortex-m4上面运行的部分场景,MCU我用的是STM32L431,4MHz MSI作为时钟。测试方法是在两个任务里面翻转GPIO,用示波器观察分析任务的执行状态,根据信号跳变时间估算任务切换的时间。

  • Tick中断的开销(会暂停任务的执行):TOS 约 69 微秒,FreeRTOS 约 27 微秒
  • 同优先级任务轮巡:TOS 约 104 微秒,FreeRTOS 约 53 微秒
  • 主动yield切换:TOS 约 70 微秒,FreeRTOS 约 30 微秒
  • 主动delay挂起:TOS 约 89 微秒,FreeRTOS 约 94 微秒
  • delay结束抢占:TOS 约 127 微秒,FreeRTOS 约 80 微秒
  • 等待信号量挂起:TOS 约 108 微秒,FreeRTOS 约 206 微秒
  • 获得信号量抢占:TOS 约 94 微秒,FreeRTOS 约 117 微秒
  • 释放互斥锁:TOS 约 166 微秒,FreeRTOS 约 157 微秒

在基础的任务切换功能上FreeRTOS的实现效率看来要高一些,但是涉及到任务间通信的部分可能要落后于TOS. 以上做的测试还不完备,还有事件、消息队列等功能没有包括,也没有包含ISR引发任务切换的情况。

这两个都是开源的RTOS,如果有时间是值得分别学习它们的代码实现的,就可以找到任务切换时间消耗在哪里了。

 
最新文章
相关阅读