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

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

相关推荐
悠哉悠哉愿意2 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11012 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
三佛科技-187366133972 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315202 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Alaso_shuang2 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
2501_918126912 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315202 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机
星马梦缘3 天前
驱动层开发——蜂鸣器驱动
stm32·单片机·嵌入式硬件·hal·驱动
小刘爱玩单片机3 天前
【stm32简单外设篇】- 测速传感器模块(光电)
c语言·stm32·单片机·嵌入式硬件
hateregiste3 天前
嵌入式软件开发中常见知识点问答集锦!
c语言·单片机·嵌入式软件