FreeRTOS是一个实时操作系统(real-time operation system),那么什么是实时呢?
实时,【释义】[real time] 事物发生过程中的实际时间;在某事发生、发展过程中的同一时间:进行~报道|~传递股市行情|~测量,实时计算。
但在IT行业里面它有它自己的含义:
实时(real time)是一个计算机响应的水平,用户感觉足够及时或者是计算机与外部过程(例如,当天气不断变化时,可以清楚地把天气表现出来)保持同步。实时是一个关于实时运转得的计算机或者程序的形容词。实时描述的是一个人而不是机器对时间的感觉。
我们知道,由于产品变得越来越复杂,在单片机上运行的任务数量就越来越多,但大部分单片机都是单核的,同一时间只能运行一个任务,那么当一个任务在运行时,另一个任务只能在等待执行,这就导致任务的滞后,影响产品的使用。
比如说我有三个任务:
1、按键检测任务,要一直检测用户按键的输入状态;
2、电机运行任务,要控制电机的转速;
3、显示任务,要一直显示当前电机的状态和按键的状态。
如果单纯的用一个while(1)来循环执行这些任务,不做其他任务调度的处理,这些任务依次执行,那么就会出现显示检测不到按键,或者电机转一下又停下来,或者显示卡顿。
所以,必须加上任务调度的算法去管理这些任务。关于任务调度的算法,我将来会继续讲到,不完全理解没关系,先有个概念。
FreeRTOS所干的活就是完成系统中所有任务的任务调度。
实时操作系统又分为软实时和硬实时。那么什么是软实时,什么是硬实时。
官方提供的《Mastering the FreeRTOS™ Real Time Kernel》书中举了两个例子,并给出了答案:
软实时:是那些规定了一个时间期限内完成的任务——但是超过这个期限并不会使系统变得无用。例如,对键盘按下按键反应太慢可能会使系统看起来反应迟钝,令人恼火,但还是可以使用。
硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统无法使用。汽车的安全气囊触发机制就是一个硬实时功能的例子。安全气囊在撞击发生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到伤害,而这原本是可以避免的。
FreeRTOS是一个实时内核(或实时调度程序),可以在它上面构建嵌入式应用程序来满足其硬实时需求。
网友评论