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

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

相关推荐
少司府5 分钟前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
Zwawa3 小时前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
c语言·单片机·嵌入式
简单电磁炮4 小时前
FWD八位单片机调试问题
单片机·嵌入式硬件
菥蓂寻生16 小时前
STM32移植到GD32中以105为例
stm32·单片机·嵌入式硬件
橘为己有4411 天前
51单片机:定时/计数器
单片机·51单片机
杯子不吃紫菜1 天前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
单片机·嵌入式硬件·设计模式
Risehuxyc1 天前
STM32程序逻辑---入口函数逻辑和NVIC嵌套向量中断控制器初始化
stm32·单片机·嵌入式硬件
【 STM32开发 】1 天前
CubeMX+STM32】SD卡U盘实现__USB+FATFS (F103 篇)
stm32·单片机·嵌入式硬件
jianqiang.xue1 天前
3倍向量算力:Arm给最小MCU装上本地AI
arm开发·人工智能·单片机
无敌最俊朗-2 天前
【电感专题2:电感的感抗、电路的阻抗、电流的滞后】
单片机·嵌入式硬件·元器件·电感