单片机RTOS“实时响应时间”的定义与测量方法

单片机RTOS"实时响应时间"的定义与测量方法
(1)众所周知对于单片机RTOS的最重要指标是对事件发生的" 实时响应时间 ",但是什么是RTOS的" 实时响应时间",业界有各种说法。笔者先用逻辑排除两个可能:
首先不可能是正在运行的用户任务对事件的响应时间,比如用循环语句不断地检测某个条件(来判断事件是否发生)成立进而做出相应的处理。因为用户任务是用户自己编写的程序,其响应时间长短不属于RTOS系统本身。
其次不可能是"中断响应时间"。当一个事件发生后,对应的中断是否能够发生,依赖于很多硬件和软件条件,比如事件中断的优先级高低和用户是否关闭了中断,这些也不属于RTOS系统本身。
(2)因此笔者任务单片机RTOS对事件发生的" 实时响应时间 " 指的是将"休眠的任务"唤醒到执行状态的时间
唤醒任务分为两种情况:一种情况是中断内唤醒,比如事件发生导致对应的中断发生,在ISR内利用"中断唤醒"功能将高优先级的正在等待的休眠任务唤醒。比如异步通信(CAN...)接收到一帧数据产生中断需要唤醒相应的任务来处理。
另一种情况是中断外由当前正在执行的任务唤醒。比如要调用异步通信(CAN...)发送程序来发送控制信息。
(3)下面是测量被中断唤醒任务所需要的时间的RTOS程序:

任务A休眠等待在第24行程序处。P01是中断唤醒测量端口标志,任务A被唤醒后的第一行程序(26行)将其清零。
下图是中断内唤醒任务的ISR程序:

其中第71行设置P01=1,第72和73行是调用"OSTaskResume(2)"函数来唤醒任务A,第76行是调用"uCx51_IntSched()"函数来进行中断内任务切换,实现唤醒任务A的功能。测试P01端口的正脉冲宽度就可以得到" 单片机RTOS的中断实时响应时间"
(4)下面是测量 非中断唤醒任务所需要的时间的RTOS程序:

其中任务B休眠等待在第45行程序处。P03是非中断唤醒测量端口标志,任务B被唤醒后的第一行程序(47行)将其清零。
(5)在任务C中第71行设置P03=1,第72是调用"OSTaskResume(3)"函数来实现唤醒任务B的功能,由于任务B的优先级3高于任务C的优先级4,所以任务就被RTOS任务调度程序调度到任务B开始继续执行。因此测试P03端口的正脉冲宽度就可以得到" 单片机RTOS的任务切换实时响应时间"

(6)下面是对微山x51 uC/OS-II 进行实测的波形:

对第1和第3通道的正脉冲进行测量得到:主频为33.1776MHz
中断实时响应时间为10.125微秒。

任务切换实时响应时间为10.125微秒。
单片机RTOS实时响应时间排行榜重大宣布:STC32G12K128单片机 全面碾压 STM32F103C

https://www.stcaimcu.com/thread-7724-1-1.html

(出处: 国芯人工智能技术交流网站)

相关推荐
VBsemi-专注于MOSFET研发定制31 分钟前
奶茶制作机器人功率MOSFET选型方案——高效、精准与可靠驱动系统设计指南
单片机·嵌入式硬件
水云桐程序员2 小时前
单片机项目从入门到精通
单片机·嵌入式硬件
Wave8452 小时前
STM32 裸机中断与 FreeRTOS 中断管理的四大核心差异
单片机·嵌入式硬件
若忘即安3 小时前
【硬件电路设计18】WIFI+BlueTooth
单片机·嵌入式硬件
时空自由民.3 小时前
ESP32 JEPEG作用
单片机
森利威尔电子-3 小时前
森利威尔SL3150H替代MRDC88-1 10V-150V宽压输入、5V固定输出 SOP7封装
单片机·嵌入式硬件·物联网
恒森宇电子有限公司4 小时前
南麟LN1173 低压差LDO线性稳压器芯片
单片机·嵌入式硬件
charlie1145141914 小时前
嵌入式现代C++工程实践——第10篇:HAL_GPIO_Init —— 把引脚配置告诉芯片的仪式
开发语言·c++·stm32·单片机·c
AzusaFighting5 小时前
STM32F103R HAL CAN 通信实战 with Copilot
stm32·单片机·嵌入式硬件
拾-光6 小时前
【无标题】
单片机