目录
RTOS,是中文名叫做 实时操作系统 ,这个专栏的主要内容则是掌握 FreeRTOS 。接下来,我们来对比一下它和裸机系统的区别,以及了解RTOS的优势,让我们清晰地认识到为什么要学习RTOS。
RTOS,是中文名叫做 实时操作系统 ,这个专栏的主要内容则是掌握 FreeRTOS 。接下来,我们来对比一下它和裸机系统的区别,以及了解RTOS的优势,让我们清晰地认识到为什么要学习RTOS。
裸机系统
裸机系统,我们在main函数中的while循环里实现的功能,就是逻辑系统的实现方式。也就是安顺序执行每个功能并无限地循环下去。
像上述的那种执行方式,无限的循环执行固定的内容,也叫做轮询系统。
如果出现需要立刻响应的情况,我们可以通过中断来打断正在执行的任务,优先执行中断,然后再继续执行未完成的任务。当然,中断也会被优先级更高的中断打断。
RTOS(实时操作系统)
RTOS,是由操作系统的调度器判断执行哪个任务,每个任务都是无限循环,任务间按优先级执行,高优先级任务就绪,则放弃低优先级去执行高优先级。在此任务完成之后再执行低优先级任务,以此类推。通过这样的方式,可以在宏观上达到多个任务同时执行的效果。
而我们要学习的 FreeRTOS 包含以下特点;
1. FreeRTOS 是一款开源免费的RTOS,因为它免费且开源;
2. FreeRTOS 具有可裁剪的优点,这意味着我们可以根据需求来对 FreeRTOS 进行各种修剪以适应用户的使用要求;
3. FreeRTOS 作为一款轻量级的操作系统,其源代码量只有 9000+ 行,使其能够轻易部署在硬件要求低的产品上,进一步提升了 FreeRTOS 的可移植性。
4. FreeRTOS 本身对于任务的数量和优先级并没有做出限制,多个任务可以在同一优先级下;需要注意的是,FreeRTOS 系统本身对任务的数量和优先级内容没有限制,但如果使用硬件本身的优先级定义的话,则需要根据硬件的支持来定义这些内容。
5. FreeRTOS 支持抢占式、协程式(该方式目前已暂停支持)、时间片轮转等任务调度算法来管理任务的执行。
6. 所有任务都是死循环,由任务调度算法来管理每个任务的运行情况。
7. 在当前任务进入等待的情况下,CPU会被释放出来,使其可以执行其它低优先级任务。
举例分析
接下来,让我们模拟一个场景:早上,我们一边吃饭一边和朋友在手机上聊天,突然发现要迟到了,于是我们立刻起身离开家,坐车前往目的地。
上述过程我们可以分别用裸机系统和RTOS来模拟:
裸机系统
我们一直在执行吃饭的任务,朋友的消息就相当于中断,迟到就像标志位,当标志位置位的条件满足后,我们就出门打车,然后一直等待到达目的地,期间偶尔回一下朋友的消息。
RTOS
将吃饭定为一个任务,回朋友消息为一个任务,回消息的优先级更高,以求及时回信息;出门打车到达目的地也是一个任务,其优先级最高。在执行出门坐车的任务时,在等待到达目的地的时间里,我们规划了一下之后的行程。
对比
因为 RTOS 对任务的调度管理,使得CPU工作的效率变高,这点直接反映在坐车时可以做其他事情上。而裸机系统为了防止出现问题,中断中只能处理一些耗时很少的事情,只能一板一眼地做完一件事情之后才能做下一件事,顶多回个消息。
总的来说,RTOS 的优越之处在于对CPU的高效利用上,还有实时响应、多任务并行、资源管理优化等优点。
综上所述,裸机系统适用于逻辑简单的场景,而在一些大型、复杂的环境下,RTOS则是我们的不二之选。