嵌入式系统及应 2

嵌入式系统及应 2

ID:27439337

大小:1.41 MB

页数:152页

时间:2018-12-02

嵌入式系统及应 2_第1页
嵌入式系统及应 2_第2页
嵌入式系统及应 2_第3页
嵌入式系统及应 2_第4页
嵌入式系统及应 2_第5页
资源描述:

《嵌入式系统及应 2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式系统及应用第五章任务管理与调度1主要内容任务简介任务控制块任务管理任务调度优先级反转2第一节 任务任务的定义及其主要特性任务的内容任务的分类任务参数3在嵌入式实时系统中任务是操作系统内核调度的基本单位。任务主要包含以下内容:代码:一段可执行的程序数据:程序所需要的相关数据(变量、工作空间、缓冲区等)堆栈程序执行的上下文环境4voidYourTask(void*pdata){for(;;){/*用户代码;调用uC/OS-II的某些功能函数*/:OSFlagPend();OSMboxPend();OSMutexPend();OSQ

2、Pend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();/*用户代码*/}}任务的代码通常是一个无限循环,如下面代码所示:任务代码的定义需注意两点:返回参数必须定义成void。当任务开始执行时,可传递一个任何类型的参数。(参数类型是void指针)5voidYourTask(void*pdata){/*用户代码;OSTaskDel(OS_PRIO_SELF);}当任务完成后,任务可以自我删除,如下

3、面代码。需注意:任务代码不是真的删除了,只是内核简单地不会再这个任务,这个任务的代码也不会再运行了。6intmain(void){//初始化uCOS内核.OSInit();//在开始多任务之前必须先建立一个任务OSTaskCreate(TestTask1,(void*)11,&TestTaskStk1[TASK_STK_SIZE],11);//第1个参数是指向该任务运行代码的指针,第2个参数是一个指向任务初始化数据的指针,//第3个参数是任务的堆栈起始地址(高地址向低地址增长),//第4个参数是任务的优先级,数值越小,优先级越高。//

4、开始多任务,控制权交给内核OSStart();}voidTestTask1(void*pdata){printf("%4u:*****TestTask1Firstcall*****",OSTime);//创建其他任务OSTaskCreate(TestTask2,(void*)22,&TestTaskStk2[TASK_STK_SIZE],22);while(1){printf("%4u:*****TestTask11*****",OSTime);OSTimeDly(1);}}uC/OS的任务实例7voidTestTask2(v

5、oid*pdata){while(1){printf("%4u:*****TestTask22*****",OSTime);OSTimeDly(1);}}注:堆栈大小有上限,对于X86处理器,OS_STK变量类型是16位变量,所以堆栈大小是1024B;2.内核允许建立多达63个用户任务,必须给这些任务分配一个独一无二的介于0-62的优先级。0是最高优先级。3.OSStart()函数并不返回main函数。8任务的主要特性任务具有以下特性:动态性:任务状态是不断变化的。一般分为就绪态、运行态和等待态。在多任务系统中,任务的状态将随着系

6、统的需要不断进行变化。并发性(并行性?):系统中同时存在多个任务,这些任务在宏观上是同时运行的。异步独立性:每个任务各自按相互独立的不可预知的速度运行,走走停停。9任务与程序的区别:任务能真实地体现工作内容的并发性,而程序不能;程序是任务的组成部分除程序外,任务还包括数据、堆栈及其上下文环境等内容;程序是静态的,任务是动态的;任务有生命周期,有诞生、有消亡,是短暂的;而程序是相对长久的;一个程序可对应多个任务,反之亦然;任务具有创建其他任务的功能,而程序没有。10采用多任务的好处:任务的规模较小每个任务更容易编码和调试,其质量也更容易

7、得到保证不少应用本身就是由多个任务构成的如一个应用可能需要进行以下任务的处理:计算、从网络获取数据和刷新显示屏幕采用多任务的处理方式是应用问题的一个非常自然的解决方式任务之间具有较高的独立性,耦合性小通过增加新的任务就能方便的扩充系统功能实时性强保证紧急事件得到优先处理成为可能11任务1任务2任务3内核内核代码内核数据栈数据任务控制块代码栈数据任务控制块代码栈数据任务控制块代码任务1任务2任务3多任务系统示意图12实时系统中任务的分类按照到达情况的可预测性,任务可以划分为:周期任务(periodictask)非周期任务按照重要程度,可

8、分为:关键任务(criticaltask)非关键任务(noncriticaltask)13实时系统中任务的分类周期任务与非周期任务周期任务每隔一个固定的时间间隔就会执行一次。举例:飞行器可能需要每隔100ms获得一次关于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。