RTOS学习记录

RTOS

RTOS全称为: Real Time Os,就是实时操作系统,强调的是:实时性。

实时操作系统又分为硬实时和软实时。

硬实时要求在规定的时间内必须完成操作,实时系统不允许超时,在实时里面处理过程超时的后果就没有那么严格
在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。
RTOS操作系统: Ucos,FreeRTOS,RTX,RT-Thread,DJYOS等。
RTOS操作系统的核心内容在于:实时内核

可剥夺型内核

RTOS的内核负责管理所有的任务,内核决定了运行哪个任务,何时停止当前任务切换到其他任务,这个是内核的多任务管理能力。多任务管理给人的感觉就好像芯片有多个CPU,多任务管理实现了CPU资源的最大化利用,多任务管理有助于实现程序的模块化开发,能够实现复杂的实时应用。

可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行“就绪任务”中的“优先级最高”的那个任务

时间管理函数(延时函数),阻塞等待函数(信号量),可以让出CPU。

UCOS学习方法:

1、多练
不要只看书,或者只看资料,只“看”是没有任何用的!一定要实际动手写代码练习,多在开发板上练习。
2、遇到不懂的怎么办?
UCOS还是有一定难度的,在学习的过程中难免会遇到看不懂的东西,如果遇到不懂的就先不要管,先学会怎么调用UCOS的API函数。等以后有时间了在回过头来重新学习一下。
3、对C语言的要求
需要了解指针、结构体、数据结构中的链表等。
4.学完可以学一下FreeRTOS

嵌入式操作系统定义

当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。
注:在工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。我们常常说的嵌入式操作系统都是嵌入式实时操作系统。比如uCOS-样l , eCOS和Linux、HOPENOS。故对嵌入式实时操作系统的理解应该建立在对嵌入式系统的理解之上加入对响应时间的要求。

在设置堆栈大小的时候,留出一部分栈的空间用于内存溢出检测.

优先级跳转

1.任务块优先级不同
在这里插入图片描述

任务1执行一次,睡眠1s,由任务2获取CPU主导权进行执行任务,由于没有阻塞函数,任务2一直执行,直到1s时间到了,优先级比他高的任务一进行抢占,再执行一次。即高优先级打断低优先级。

2.还有一种情况是:两个任务优先级相同,任务块里都没有阻塞函数。在这里插入图片描述

那么,谁先创建谁运行,只执行一个,任务2不能打断任务1。
如果任务2先创建,此种情况下,那么只执行任务2。

3.给任务块的睡眠时间太短
在这里插入图片描述
在这里插入图片描述

任务1能够进行完整的串口数据的打印,而任务2打印串口数据的时候,经常会出现断断续续的情况。
在这里插入图片描述

4.资源保护的问题,经常会出现在两个任务共享资源〈函数,全局变量)。
可以使用临界区保护,达到禁止任务调度的效果。
使用信号量来处理也是可以的。
在这里插入图片描述

5.使用亳秒级别函数,不能小于当前UCOS的时钟节拍
在这里插入图片描述
即delat_ms(6)是有效的,delay)ms(4)是无效的。
如果想使用低于5ms的延时,譬如说延时1ms,有两种方法:
1)调整OS_CFG_TICK_RATE_HZ为1000
2)使用delay_us函数,delay_us(1000)

猜你喜欢

转载自blog.csdn.net/ABCisCOOL/article/details/115037241
今日推荐