单片机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

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

相关推荐
DIY机器人工房1 小时前
简单理解:什么是EMC 整改?
stm32·单片机·嵌入式硬件·面试题·emc·diy机器人工房
bai54593614 小时前
STM32 PWM驱动LED呼吸灯
stm32·单片机·嵌入式硬件
btzhy20 小时前
STM32单片机:基本定时器应用:单脉冲模式(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:单脉冲模式
文sir.21 小时前
温湿度采集系统(stm32+mqtt+Onenet云平台+esp8266)
stm32·单片机·嵌入式硬件·mqtt·onenet·云平台·esp8266
DIY机器人工房21 小时前
嵌入式面试题:你有没有用过直接基于TCP协议,不借助HTTP、MQTT这类上层协议的项目经历?
stm32·单片机·嵌入式硬件·面试题·diy机器人工房
zhmc1 天前
Cortex M0单片机指令执行周期
单片机·嵌入式硬件
NEU-UUN1 天前
5.1.STM32-EXTI外部中断——全程手敲板书
stm32·单片机·嵌入式硬件
TangDuoduo00051 天前
【常见传感器原理及应用】
单片机·嵌入式硬件
q***06472 天前
SocketTool、串口调试助手、MQTT中间件基础
单片机·嵌入式硬件·中间件