二嵌入式实时操作系统分析ppt课件教案.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《二嵌入式实时操作系统分析ppt课件教案.ppt》由会员分享,可在线阅读,更多相关《二嵌入式实时操作系统分析ppt课件教案.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1二嵌入式实时操作系统分析ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望2本章给出本章给出C/OS-的主要结构概貌的主要结构概貌ll lC/OS是怎样处理临界段代码的是怎样处理临界段代码的;ll l什么是任务,怎样把用户的任务交给什么是任务,怎样把用户的任务交给C/OS;ll l任务是怎样调度的任务是怎样调度的;ll l应应用用程程序序CPU的的利利用用率率是是多多少少,C/OS是是怎怎样样知知道道的的;ll l怎样写中断服务子程序怎样写中断服务子程序
2、;ll l什么是时钟节拍,什么是时钟节拍,C/OS是怎样处理时钟节拍的是怎样处理时钟节拍的;ll lC/OS是怎样初始化的,以及是怎样初始化的,以及怎样启动多任务怎样启动多任务;3临界段临界段(Critical Sections)l和其它内核一样,和其它内核一样,C/OS-为了处理临界段代码需要关中断,处理完毕后再为了处理临界段代码需要关中断,处理完毕后再开中断。这使得开中断。这使得C/OS-能够避免同时有其它任务或中断服务进入临界段代能够避免同时有其它任务或中断服务进入临界段代码。关中断的时间是实时内核开发商应提供的最重要的指标之一,因为这个指码。关中断的时间是实时内核开发商应提供的最重要的
3、指标之一,因为这个指标影响用户系统对实时事件的响应性。标影响用户系统对实时事件的响应性。C/OS-努力使关中断时间降至最短,努力使关中断时间降至最短,但就使用但就使用C/OS-而言,关中断的时间很大程度上取决于微处理器的架构以而言,关中断的时间很大程度上取决于微处理器的架构以及编译器所生成的代码质量。及编译器所生成的代码质量。l微处理器一般都有关中断微处理器一般都有关中断/开中断指令,用户使用的开中断指令,用户使用的C语言编译器必须有某种机语言编译器必须有某种机制能够在制能够在C中直接实现关中断中直接实现关中断/开中断地操作。某些开中断地操作。某些C编译器允许在用户的编译器允许在用户的C源源代
4、码中插入汇编语言的语句。这使得插入微处理器指令来关中断代码中插入汇编语言的语句。这使得插入微处理器指令来关中断/开中断很容开中断很容易实现。而有的编译器把从易实现。而有的编译器把从C语言中关中断语言中关中断/开中断放在语言的扩展部分。开中断放在语言的扩展部分。C/OS-定义两个宏定义两个宏(macros)来关中断和开中断,以便避开不同来关中断和开中断,以便避开不同C编译器厂商编译器厂商选择不同的方法来处理关中断和开中断。选择不同的方法来处理关中断和开中断。C/OS-中的这两个宏调用分别是:中的这两个宏调用分别是:OS_ENTER_CRITICAL()和和OS_EXIT_CRITICAL()。因
5、为这两个宏的定义取决于所用的微处理器,故。因为这两个宏的定义取决于所用的微处理器,故在文件在文件OS_CPU.H中可以找到相应宏定义。每种微处理器都有自己的中可以找到相应宏定义。每种微处理器都有自己的OS_CPU.H文件。文件。4任务任务 l一一个个任任务务通通常常是是一一个个无无限限的的循循环环,如如程程序序清清单单所所示示。一一个个任任务务看看起起来来像像其其它它C的的函函数数一一样样,有有函函数数返返回回类类型型,有有形形式式参参数数变变量量,但但是是任任务务是是绝绝不不会会返返回回的的。故故返返回回参参数数必必须定义成须定义成void。l void YourTask(void*pdat
6、a)(1)l l for(;)(2)l /*用户代码用户代码*/调用调用uC/OS-II的某种系统服务的某种系统服务:l OSMboxPend();l OSQPend();l OSSemPend();l OSTaskDel(OS_PRIO_SELF);l OSTaskSuspend(OS_PRIO_SELF);l OSTimeDly();l OSTimeDlyHMSM();l /*用户代码用户代码*/l l 5l当当任任务务完完成成以以后后,任任务务可可以以自自我我删删除除,注注意意任任务务代代码码并并非非真真的的删删除除了了,C/OS-C/OS-只只是是简简单单地地不不再再理理会会这这个个任
7、任务务了了,这这个个任任务务的的代代码码也也不不会会再再运运行行,如如果果任任务务调调用用了了OSTaskDel()OSTaskDel(),这这个个任任务务绝绝不不会会返返回回什什么么。任任务务完完成成后自我删除后自我删除l void YourTask(void*pdata)l l /*用户代码用户代码*/l OSTaskDel(OS_PRIO_SELF);l l形式参数变量是由用户代码在第一次执行的时候带入的。请注意,该变量形式参数变量是由用户代码在第一次执行的时候带入的。请注意,该变量的类型是一个指向的类型是一个指向voidvoid的指针。这是为了允许用户应用程序传递任何类型的指针。这是为
8、了允许用户应用程序传递任何类型的数据给任务。这个指针好比一辆万能的车子,如果需要的话,可以运载的数据给任务。这个指针好比一辆万能的车子,如果需要的话,可以运载一个变量的地址,或一个结构,甚至是一个函数的地址。也可以建立许多一个变量的地址,或一个结构,甚至是一个函数的地址。也可以建立许多相同的任务,所有任务都使用同一个函数(或者说是同一个任务代码程序)相同的任务,所有任务都使用同一个函数(或者说是同一个任务代码程序)。例如,用户可以将四个串行口安排成每个串行口都是一个单独的任务。例如,用户可以将四个串行口安排成每个串行口都是一个单独的任务,而每个任务的代码实际上是相同的。并不需要将代码复制四次,
9、用户可以而每个任务的代码实际上是相同的。并不需要将代码复制四次,用户可以建立一个任务,向这个任务传入一个指向某数据结构的指针变量,这个数建立一个任务,向这个任务传入一个指向某数据结构的指针变量,这个数据结构定义串行口的参数(波特率、据结构定义串行口的参数(波特率、I/OI/O口地址、中断向量号等)。口地址、中断向量号等)。6任务状态任务状态 l睡睡眠眠态态(DORMANTDORMANT)指指任任务务驻驻留留在在程程序序空空间间之之中中,还还没没有有交交给给C/OS-C/OS-管管理理,把把任任务务交交给给C/OS-C/OS-是是通通过过调调用用下下述述两两个个函函数数之之一一:OSTaskCr
10、eate()OSTaskCreate()或或OSTaskCreateExt()OSTaskCreateExt()。当当任任务务一一旦旦建建立立,这这个个任任务务就就进进入入就就绪绪态态准准备备运运行行。任任务务的的建建立立可可以以是是在在多多任任务务运运行行开开始始之之前前,也也可可以以是是动动态态地地被被一一个个运运行行着着的的任任务务建建立立。如如果果一一个个任任务务是是被被另另一一个个任任务务建建立立的的,而而这这个个任任务务的的优优先先级级高高于于建建立立它它的的那那个个任任务务,则则这这个个刚刚刚刚建建立立的的任任务务将将立立即即得得到到CPUCPU的的控控制制权权。一一个个任任务务
11、可可以以通通过过调调用用OSTaskDel()OSTaskDel()返返回回到到睡睡眠眠态态,或或通通过过调调用用该该函函数让另一个任务进入睡眠态。数让另一个任务进入睡眠态。l调调用用OSStart()OSStart()可可以以启启动动多多任任务务。OSStart()OSStart()函函数数运运行行进进入入就就绪绪态态的的优优先先级级最最高高的的任任务务。就就绪绪的的任任务务只只有有当当所所有有优优先先级级高高于于这这个个任务的任务转为等待状态,或者是被删除了,才能进入运行态。任务的任务转为等待状态,或者是被删除了,才能进入运行态。l正在运行的任务可以通过调用两个函数之一将自身延迟一段时间,
12、正在运行的任务可以通过调用两个函数之一将自身延迟一段时间,这两个函数是这两个函数是OSTimeDly()OSTimeDly()或或OSTimeDlyHMSM()OSTimeDlyHMSM()。这个任务于是进。这个任务于是进入等待状态,等待这段时间过去,下一个优先级最高的、并进入入等待状态,等待这段时间过去,下一个优先级最高的、并进入了就绪态的任务立刻被赋予了了就绪态的任务立刻被赋予了CPUCPU的控制权。等待的时间过去以后,的控制权。等待的时间过去以后,系统服务函数系统服务函数OSTimeTick()OSTimeTick()使延迟了的任务进入就绪态使延迟了的任务进入就绪态l正正在在运运行行的的
13、任任务务期期待待某某一一事事件件的的发发生生时时也也要要等等待待,手手段段是是调调用用以以下下3 3个个函函数数之之一一:OSSemPend()OSSemPend(),OSMboxPend()OSMboxPend(),或或OSQPend()OSQPend()。调调用用后后任任务务进进入入了了等等待待状状态态(WAITINGWAITING)。当当任任务务因因等等待待事事件件被被挂挂起起(PendPend),下下一一个个优优先先级级最最高高的的任任务务立立即即得得到到了了CPUCPU的的控控制制权权。当当事事件件发发生生了了,被被挂挂起起的的任任务务进进入入就就绪绪态态。事事件件发发生生的的报报告
14、告可可能能来来自自另另一一个个任任务务,也也可能来自中断服务子程序。可能来自中断服务子程序。l正正在在运运行行的的任任务务是是可可以以被被中中断断的的,除除非非该该任任务务将将中中断断关关了了,或或者者C/OS-C/OS-将将中中断断关关了了。被被中中断断了了的的任任务务就就进进入入了了中中断断服服务务态态(ISRISR)。响响应应中中断断时时,正正在在执执行行的的任任务务被被挂挂起起,中中断断服服务务子子程程序序控控制制了了CPUCPU的的使使用用权权。中中断断服服务务子子程程序序可可能能会会报报告告一一个个或或多多个个事事件件的的发发生生,而而使使一一个个或或多多个个任任务务进进入入就就绪
15、绪态态。在在这这种种情情况况下下,从从中中断断服服务务子子程程序序返返回回之之前前,C/OS-C/OS-要要判判定定,被被中中断断的的任任务务是是否否还还是是就就绪绪态态任任务务中中优优先先级级最最高高的的。如如果果中中断断服服务务子子程程序序使使一一个个优优先先级级更更高高的的任任务务进进入入了了就就绪绪态态,则则新新进进入入就就绪绪态态的的这这个个优优先先级级更更高高的的任任务务将将得得以以运运行行,否否则则原原来来被被中中断了的任务才能继续运行。断了的任务才能继续运行。l当所有的任务都在等待事件发生或等待延迟时间结束,当所有的任务都在等待事件发生或等待延迟时间结束,C/OS-C/OS-执
16、行空闲任务(执行空闲任务(idle taskidle task),执行),执行OSTaskIdle()OSTaskIdle()函数。函数。9任务控制块任务控制块 l一旦任务建立了,任务控制块一旦任务建立了,任务控制块OSOS_TCBs_TCBs将被赋值。任务控制块是一个数据结将被赋值。任务控制块是一个数据结构,当任务的构,当任务的CPUCPU使用权被剥夺时,使用权被剥夺时,C/OS-C/OS-用它来保存该任务的状态。当任用它来保存该任务的状态。当任务重新得到务重新得到CPUCPU使用权时,任务控制块能确保任务从当时被中断的那一点丝毫使用权时,任务控制块能确保任务从当时被中断的那一点丝毫不差地继
17、续执行。不差地继续执行。OSOS_TCBs_TCBs全部驻留在全部驻留在RAMRAM中。任务建立的时候,中。任务建立的时候,OSOS_TCBs_TCBs就被初始化了就被初始化了 所有的任务控制块分为两条链表,空闲链表和使用链表所有的任务控制块分为两条链表,空闲链表和使用链表。任务控制块结构任务控制块结构lStruct os_tcb OS_STK *OSTCBStkPtr;struct os_tcb*OSTCBNext;struct os_tcb*OSTCBprev;OS_EVENT *OSTCBEventPtr;void *OSTCBMsg;INT16U OSTCBDly;当需要把任务延时若干
18、时钟节拍时要用到这个当需要把任务延时若干时钟节拍时要用到这个变量变量 INT8U OSTCBStat;INT8U OSTCBPrio;任务优先级。任务优先级。INT8U OSTCBX,OSTCBY,OSTCBBitX,OSTCBBitY;OS_TCB加速任务进入就绪态的过程事件控制块的指针任务的状态字11空任务列表空任务列表系统初始化时,所有任务控制块被链接成空任务控制块的单向链表系统初始化时,所有任务控制块被链接成空任务控制块的单向链表12l为为确确定定下下次次该该哪哪个个优优先先级级的的任任务务运运行行了了,内内核核调调度度器器总总是是将将OS_LOWEST_PR1OOS_LOWEST_P
19、R1O在在就就绪绪表表中中相相应应字字节节的的相相应应位位置置1 1。是是按按以以下下规规则则给出的:给出的:l当当OSRdyTbl0OSRdyTbl0中的任何一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第0 0位置位置1 1,l 当当OSRdyTbl1OSRdyTbl1中的任何一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第1 1位置位置1 1,l当当OSRdyTbl2OSRdyTbl2中的任何一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第2 2位置位置1 1,l当当OSRdyTbl3OSRdyTbl3中的任何
20、一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第3 3位置位置1 1,l当当OSRdyTbl4OSRdyTbl4中的任何一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第4 4位置位置1 1,l 当当OSRdyTbl5OSRdyTbl5中的任何一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第5 5位置位置1 1,l当当OSRdyTbl6OSRdyTbl6中的任何一位是中的任何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第6 6位置位置1 1,l 当当OSRdyTbl7OSRdyTbl7中的任何一位是中的任
21、何一位是1 1时,时,OSRdyGrpOSRdyGrp的第的第7 7位置位置1 1 13就绪表就绪表 l每每个个任任务务被被赋赋予予不不同同的的优优先先级级等等级级,从从0 0级级到到最最低低优优先先级级OS_LOWEST_PR1OOS_LOWEST_PR1O,包包括括0 0和和OS_LOWEST_PR1OOS_LOWEST_PR1O在在内内(见见文文件件OS_CFG.HOS_CFG.H)。当当C/OS-C/OS-初初始始化化的的时时候候,最最低低优优先先级级OS_LOWEST_PR1OOS_LOWEST_PR1O总总是是被被赋赋给给空空闲闲任任务务idle idle tasktask。注注意
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 实时 操作系统 分析 ppt 课件 教案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内