关注分享主机优惠活动
国内外VPS云服务器

RTOS系列-嵌入式实时操作系统介绍

摘要:嵌入式实时操作系统是一种特殊的程序,通常称为内核,它可以创建、销毁和控制所有的任务。显示功能运行时,定时器中断,系统进入定时器中断程序,标记传感器位置。实时操作系统的子系统将不断更新。

什么是嵌入式实时操作系统?嵌入式实时操作系统是一个特殊的程序,是一个多任务运行环境。嵌入式操作系统最大的特点就是“实时”。如果需要执行某个任务,实时操作系统会立即执行该任务,不会再有延迟。典型的实时操作系统有uCOS、RT-Thread、FreeRTOS、VxWorks、WinCE等。嵌入式操作系统是一种特殊的程序(通常称为内核),它可以创建、销毁和控制所有的任务。除了内核,嵌入式操作系统还提供其他服务,如文件系统、协议栈、图形用户界面等。本文重点是了解嵌入式实时操作系统内核的工作原理和结构,所以本文所说的实时操作系统通常指的是操作系统内核。实时操作系统的内核通常会占用CPU运行时间的5%左右。另外,内核是软件代码,需要额外的ROM空间和RAM空间。

实时实时可以定义为:触发条件产生后系统的响应能力。通俗的描述就是“天下武功唯快不破”。要达到要求的“快”是实时性,在不同场合需要达到us级和ns级。实时系统不仅“快”,更重要的是实时系统需要在有限的时间内对触发事件做出响应。这个限定时间是根据实际需要确定的。比如自动驾驶控制系统,时间要求很短,需要在很短的时间内动作;一些农业温度控制系统需要较长的时间,这就要求温度控制平稳。实时响应时间越强,响应时间越短。响应时间是指从系统识别到开始响应的时间。举个简单的例子:一个工业控制设备有一个急停按钮开关。当用户想要按下急停开关时,系统会立即停止所有动作。假设用户在1.001秒按下急停开关,软件系统在1.011秒执行停止指令,工控装置相应的机械部分在1.211秒停止。此时,软件系统的响应时间为0.01秒,设备系统的响应时间为0.21秒,设备系统的响应时间为0.21秒。本文提到的响应时间是指软件系统的响应时间。再举个通俗的例子:你正在玩王者荣耀,突然发现对面打野,跑出草丛准备gank你。你可以从眼睛里看到,手指一点一闪,然后塔下的人物就闪了。这是响应时间。高端职业选手完成整个动作可能只需要100ms,而菜鸟选手完成整个动作可能需要1000ms。

普通嵌入式软件架构普通嵌入式软件系统通常设计为前台和后台结构,包括一个无限循环和若干个中断服务程序:一个应用程序是一个无限循环的代码块,在其中调用相应的函数完成相应的操作(后台),中断程序用于处理系统的异步事件(前台)。它被称为前台中断级和后台任务级。下面是典型的前后结构代码:上图中代码的执行流程如下:1。确定密钥标志位,如果标志位为1,则执行密钥处理操作。2.判断通信标志位,如果标志位为1,则执行通信处理操作。3.执行LCD显示操作4。判断传感器标志,如果标志为1,则执行传感器处理操作。这段代码中有三个中断函数:1 .GPIO外部中断。当按键时,产生一个中断。在中断功能中,键标在位置1。2.串行端口空闲中断。当串行总线空闲时,会产生一个中断,并且在中断功能中将通信标志置1。3.当定时器中断时,每隔500ms会周期性地产生一个中断,在中断功能中传感器会被标记在位置1。

代码执行如图:分析和操作图:1。程序判断按键标志位,标志位为0,不执行按键处理功能。2.程序判断通信标志位,标志位为0,不执行通信处理功能。3.该程序执行显示处理功能。此时用户按键,系统进入按键中断程序,将键位标记为1。中断完成后,返回显示处理函数继续运行。4.在显示处理功能运行期间,当串行端口接收到一个数据包时,会产生一个空闲中断。系统进入串行端口空闲中断程序,并将通信标志设置为1。中断完成后,返回显示处理函数继续运行。5.在显示处理功能运行期间,定时器产生一个中断,系统进入定时器中断程序,在位置1标记传感器。6.在执行显示处理功能之后,程序判断传感器标志位,并且标志位为1,并且执行通信处理功能。7.程序判断按键标志位,标志位为1,执行按键处理功能。8.程序判断通信标志位,标志位为1,并执行通信处理功能。9.无限循环…

从上面的例子可以看出,在键标志位和通信标志位准备好之后,程序还需要等待显示功能和传感器功能完成。即使键处理功能的紧急程度很高,也需要等待其他功能被执行。因此产生响应延迟,响应延迟时间是随机的、不确定的,有时几毫秒,有时几百毫秒甚至更长(比如传感器读数),所以需要提高系统的实时性。

实时操作系统实时操作系统可以随时剥夺正在运行的任务的CPU使用权,将CPU使用权让给处于就绪状态的优先级最高的任务。使用操作系统后运行图如下:分析运行图:1。当用户按键时,系统进入按键中断程序,向按键任务发送信号。此时关键任务进入就绪状态,当中断返回时,切换到关键处理任务运行。2.当关键处理任务运行时,串行端口接收数据包并产生一个空闲中断。系统进入串口空闲中断程序,向通信处理任务发送信号。当中断返回时,通信处理任务进入就绪状态并切换到通信处理任务。3.通信处理任务完成后,放弃CPU使用权,然后切换到关键处理任务。4.按键处理任务完成后,放弃CPU使用权,然后切换到显示处理任务。

可以看出,当触发器产生时,实时操作系统会立即中断当前任务,执行相应的任务。使用实时操作系统可以大大提高软件系统的实时性能。

实时操作系统的组成实时操作系统由以下三个子系统组成(uCOS和FreeRTOS作为参考对象):1 .任务调度子系统2、任务通信子系统3和存储器管理子系统。任务调度子系统主要维护两个链表:就绪表和等待表。切换任务时,从就绪列表中取出优先级最高的任务;当任务需要等待延迟时,内核将任务中就绪表移到等待表中;时钟节拍任务将定期更新等待列表,并将等待时间已完成的任务从等待列表移动到就绪列表。

任务通信子系统主要维护一个链表:pending list。当一个任务需要等待一个信号时,内核将该任务移动到挂起表中。当内核接收到信号时,内核将任务从挂起表移动到就绪表。

内存管理子系统,内核提供了几种动态申请内存的方式,防止内存碎片。

实时操作系统的子系统将不断更新。

希望朋友们喜欢,转发,评论,关注创作,并不容易。你的喜欢、转发、评论和关注将是我持续更新的动力。作者:李伟Github:liyinuoman2017

未经允许不得转载:主机频道 » RTOS系列-嵌入式实时操作系统介绍

评论 抢沙发

评论前必须登录!

 

登录

注册