各位看官好,欢迎大家进入新的专栏学习,从今天开始,正式进入FreeRTOS的学习,这是专门应用于嵌入式领域的一款实时操作系统,相比裸机,它有很大的优势,实际开发中应用广泛,为此,我们应该首先掌握最基本的内容,理解实时操作系统的实时性是通过哪些机制实现的?相比裸机开发,它的优势在哪里?这样更加有利于我们运用好FreeRTOS来解决生活中问题。
目录
一、RTOS入门
1.0 裸机与RTOS的举例对比
为了初步感知裸机与实时操作系统的区别与优势,我们这里简单的举个例子,通过例子来理解二者。

正如上面图片所示,有一个人正在打游戏,这时候有人给他发消息,两件事的优先级相同,对于裸机系统而言,它必须等打完游戏才能去回复消息,每个任务是按照程序编写的顺序执行的。
裸机处理方式:打游戏和回复信息,需要打完游戏才可回复信息,或者回复完信息才可打游戏

而对于RTOS它又是怎么处理的呢?它会将每件事独立构成一个任务(这个任务函数是无返回值并且是死循环),然后以系统滴答定时器的时钟作为一个时间片即1ms, 每隔1ms去做另一个任务,在这两个任务之间切换,微观上看,我们的两个任务是按照顺序依次执行的,但是,由于1ms时间非常短,宏观上看,我们人眼根本分辨不出来,因此这两个任务其实就是并发运行的(一个时间片只有一个任务在执行),这样就不存在等待。

RTOS处理方式:打游戏和回复信息,不需要等某一件事做完,可每间隔1ms(一个时间片时钟节拍),然后交替做这两件事,因为速度很快,从宏观的意义上来看,类似同步执行!
同样的场景,假设此时小明肚子疼了,要去医院,即这时出现了更高优先级的任务,此时裸机与RTOS又会怎么做呢?

回忆Stm32裸机开发,我们其实是利用中断处理的,设立一个标志位,中断条件触发,标志位改变,判断标志位,然后去执行中断处理服务函数,在这里也是这样,肚子疼就相当于一个中断,一旦发生,就要立马去医院,但是它存在一个问题:首先,中断只能处理简单的短时间的任务,不能在中断里停留较长的时间,其次,如上图所示,去医院必须要等打游戏和回复信息,两件事完成,才会去判断,而这两件事又是需要一定的时间的,缺乏一种实时性的处理能力!

如上图RTOS的处理方式,它将去医院看病这件事设置成更高的优先级,前面两件事优先级相同,当去医院这件事发生后,首先就去执行它,前面两件事不进行处理,并且,实现试想生活中,去医院途中要打车,坐车,...各种事消耗时间,在程序里面就是延时,在裸机开发中,延时的时候CPU什么也不做,处于一种空转的状态,而在RTOS中,它并不是这样,延时的时候,CPU会去做低优先级的任务,即前面两件事,等这段时间过去后,到了医院门口,回来接着去看病,这样的优势在于它充分的利用了CPU的资源,不让CPU停下来,一直在不同的任务之间进行切换。
1.1 裸机与RTOS介绍
1.1.1 裸机
1.1.1.1概念
裸机:直接对硬件资源的编程,所有功能函数放在主循环中,同⼀时间只能单⼀任务运行。裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序。
1.1.1.2特点

可以看出来:裸机系统是轮流执行的,因此必须等一个任务完成才能完成下一件任务,这带来的后果就是:实时性差,当处于延时的时候,CPU处于一种空转的状态,这样会浪费CPU的资源 ,此外,所有实现的功能都放在死循环里面,如果任务非常多,将导致结构非常臃肿!
1.1.1.3 图示

1.1.2 RTOS
1.1.2.1 RTOS的概念
RTOS 全称是 Real Time Operating System,中文名就是实时操作系统,强调的是:实时性。
1.1.2.2 RTOS的特点

RTOS实现功能划分为多个任务,并且在延时的时候,不会空等待,会让出CPU的使用权给其他任务,即任务调度,这是操作系统内部自己实现的调度算法,高优先级任务抢占低优先级任务,同一优先级任务按照时间片轮转的方式执行,为了保证高优先级任务执行完后,低优先级不用再重新开始执行,每个任务都有自己的栈空间,用于保存局部变量以及任务的上下文信息。
1.1.2.3 图示

可以看出:每个任务都是一个死循环,这是为了保证能够高优先级执行完后,能够继续执行低的优先级任务,如果低优先级任务执行到一半,被高优先级任务打断,低优先级任务不是死循环,那就执行不了低优先级的任务了。
注意两点:
1、任务可以是同等优先级的;
2、中断可以打断任意任务;
思考:如果高优先级的任务一直在运行,会怎么样?
如果高任务的优先级里面没有延时函数,那么,它就不会让出CPU的使用权,并且高优先级任务是死循环的,它将会一直执行下去,使得低优先级任务无法运行!!!
1.2 FreeRTOS简介
RTOS是指一类系统,如 FreeRTOS,uC/OS,RTX,RT-Thread 等,都是 RTOS 类操作系统。FreeRTOS 是一个免费的嵌入式实时操作系统,其开源、轻量级、可移植的特点使其成为许多嵌入式开发者的首选。在近几年的使用排名上位居前列。

FreeRTOS的特点:

学习资料:
FreeRTOS官网:https://www.f

最低0.47元/天 解锁文章
4874

被折叠的 条评论
为什么被折叠?



