FreeRtos-总结(1)
/* 最近安定下来,继续加油学习了!奋斗 */
/* 时间:2017年10月18日20:41:10 */
/* 地点:星空小蜗牛的地盘 */
/* 主题:RTOS基本知识和流程讲解 */
/* 目的:对RTOS有一个整体认识
什么叫整体认识?
当你想到RTOS时,会知道什么时候用,
优点是什么?流程是怎样的? */
目录流程
1:程序的演进
2:freeRTOS的优点
3:freeRTOS的任务切换
4:freeRTOS的可重入性
5:freeRTOS的信号量
6:freeRTOS的消息队列,时钟,状态
正文开始
1:程序的演进
从最初接触的while(1)大循环,之后加上中断。组成一个前后台的运行机制,再把前后台分离开,后台+状态机+前台处理,基本可以处理大部分的任务了
但是有一类任务,这样的方式就不可取了,要求及时响应的。如果用如上的方式处理
它会有C,D的运行时间,不能响应,可能还会出现一些意外的情况.
那么,理想的运行状态是怎样的呢?
因为有优先级和任务调试的原因,及时响应了程序,从而解决以上问题。
FreeRtos就是这样的运行状态,实时响应。
这就是FreeRtos的优点了。
2:freeRTOS的优点
freeRTOS的整个功能大体是这样先有个概念
第一大优点上述已讲,实时响应。
优点讲完,接下来就是freeRTOS的核心的地方。怎么进行的实时响应,任务调度。那任务调试的核心是什么?任务切换,freeRTOS的任务切换可以说是MCU上寄存器的保存和载入。也叫上下文切换—存储和恢复MCU的过程
具体的过程,请搜各大APP
要让任务按照顺序执行,跟大循环相似的就是调度器了,根据任务的优先级来调度。
任务调度,有非抢占式任务,有抢占式任务。如上图
对于抢占式任务,引申出这样一个问题–>程序的可重入性
4:freeRTOS的可重入性
什么叫做可重入性?
如:taskA任务和A1程序加中断来说
在A任务执行A1时,中断发生,B任务也执行A1程序,若B任务返回后,A任务中的A1不受影响叫可重入,有影响叫不可重入。
若不理解:请查各大APP,暂停观看,以免影响阅读。
但如果把程序影响了呢?有什么解决的办法呢?
有一种方法为进入程序A关中断,完成后开中断。
另一种方法为信号量。
5:freeRTOS的信号量
信号量具体定义请。。。。,自身理解,像唯一的一把钥匙,有任务拿走,第二个任务就不能运行了。适应用的场合就是多个任务共享同一个资源的时候,保证资源能用。
信号量有二值信号量,加法信号量,互斥信号量。
二值信号量,就如上定义所讲,如:两人共同用一台电脑,A用的时候,B在等待。A用完之后,B才可能用。
但是这样又出现了一个问题,有个C过来了,他不想排队。所以,当A用完之后,C强行插队使用电脑了,所以B只有等C 用完之后才可以用。这个不好。
所以加一个叫优先级继承的东西,当A在用的时候,B过来了,B的优先级高,但A没用完,所以把A的优先级提升到B。当C过来,看到两个是一队的,就不说了。A用完–B—C 这样就OK。
6:freeRTOS的消息队列,时钟,状态
之后哪,把正确的消息加到队列中,根据时钟节拍,运行出去。再根据具体的任务状态,运行任务。好了
本章已结。