嵌入式操作系统的发展.pdf

上传人:asd****56 文档编号:70322113 上传时间:2023-01-19 格式:PDF 页数:30 大小:625.81KB
返回 下载 相关 举报
嵌入式操作系统的发展.pdf_第1页
第1页 / 共30页
嵌入式操作系统的发展.pdf_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《嵌入式操作系统的发展.pdf》由会员分享,可在线阅读,更多相关《嵌入式操作系统的发展.pdf(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Operating System Operating System 的发展的发展I.I.I.I.人工操作:无人工操作:无人工操作:无人工操作:无osososos,资源独占,利用率低,效率低;,资源独占,利用率低,效率低;,资源独占,利用率低,效率低;,资源独占,利用率低,效率低;II.II.II.II.批处理(弹道和多道):批处理(弹道和多道):批处理(弹道和多道):批处理(弹道和多道):磁盘磁盘磁盘磁盘。作业周转长,无交互。作业周转长,无交互。作业周转长,无交互。作业周转长,无交互能力;能力;能力;能力;III.III.III.III.分时系统:分时系统:分时系统:分时系统:文件系统,前后台

2、文件系统,前后台文件系统,前后台文件系统,前后台。交互,共享。交互,共享。交互,共享。交互,共享。AT&TAT&TAT&TAT&T公司贝尔实验室的两个计算机迷公司贝尔实验室的两个计算机迷 Dennis Dennis Dennis Dennis Ritchie Ritchie Ritchie Ritchie 和和 Ken Thompson,Ken Thompson,Ken Thompson,Ken Thompson,首先在首先在 PDP-7 PDP-7 PDP-7 PDP-7 上实现上实现了了UNIXUNIXUNIXUNIX系统。系统。(这样他们可在一台无人使用的这样他们可在一台无人使用的 DE

3、C DEC DEC DEC PDP-7 PDP-7 PDP-7 PDP-7 小型计算机上玩星际探险游戏);小型计算机上玩星际探险游戏);IV.IV.IV.IV.实时系统实时系统实时系统实时系统:控制,信息处理,及时,可靠:控制,信息处理,及时,可靠:控制,信息处理,及时,可靠:控制,信息处理,及时,可靠;V.V.V.V.分布式操作系统:无主从关系,资源共享;分布式操作系统:无主从关系,资源共享;分布式操作系统:无主从关系,资源共享;分布式操作系统:无主从关系,资源共享;VI.VI.VI.VI.嵌入式操作系统嵌入式操作系统嵌入式操作系统嵌入式操作系统Embedded Operating Syst

4、emEmbedded Operating SystemEmbedded Operating SystemEmbedded Operating SystemLinuxLinuxLinuxLinux,WinCEWinCEWinCEWinCE,VxWorksVxWorksVxWorksVxWorks,OSEOSEOSEOSE,NucleusNucleusNucleusNucleus,uC/OS-IIuC/OS-IIuC/OS-IIuC/OS-II,eCoseCoseCoseCos,uTTRONuTTRONuTTRONuTTRON 80808080年代开始:年代开始:年代开始:年代开始:WinCE W

5、inCE WinCE WinCE Microsoft VxWorks VxWorks VxWorks VxWorks WindRiverWinCEWinCEWinCEWinCEWinCEWinCEWinCEWinCE1.1.1.1.支持针对小内存体积占用进行的优化支持针对小内存体积占用进行的优化支持针对小内存体积占用进行的优化支持针对小内存体积占用进行的优化 :200k200k2.2.2.2.“硬硬硬硬”实时内核实时内核实时内核实时内核 :由于支持由于支持由于支持由于支持256256256256个优先级别和嵌套中断个优先级别和嵌套中断个优先级别和嵌套中断个优先级别和嵌套中断 3.3.3.3.强

6、健的内存管理强健的内存管理强健的内存管理强健的内存管理 :虚拟地址空间从虚拟地址空间从虚拟地址空间从虚拟地址空间从3232MBMBMBMB扩展到当前的扩展到当前的扩展到当前的扩展到当前的6464MBMBMBMB。另。另。另。另外还支持内存映射文件。这些基于外还支持内存映射文件。这些基于外还支持内存映射文件。这些基于外还支持内存映射文件。这些基于 Win32Win32Win32Win32 的文件映射的文件映射的文件映射的文件映射APIAPIAPIAPI除了允除了允除了允除了允许数据文件映射到内存当中并建立类似于内存指针的引用之外,还许数据文件映射到内存当中并建立类似于内存指针的引用之外,还许数据

7、文件映射到内存当中并建立类似于内存指针的引用之外,还许数据文件映射到内存当中并建立类似于内存指针的引用之外,还可以用来分配能够在多个进程之间进行共享的内存。可以用来分配能够在多个进程之间进行共享的内存。可以用来分配能够在多个进程之间进行共享的内存。可以用来分配能够在多个进程之间进行共享的内存。4.4.4.4.开放的通信平台开放的通信平台开放的通信平台开放的通信平台:TCP/IP,IPv6 5.5.5.5.远程和系统管理远程和系统管理远程和系统管理远程和系统管理 6.6.6.6.对标准的支持对标准的支持对标准的支持对标准的支持7.7.7.7.广泛的存储和文件系统广泛的存储和文件系统广泛的存储和文

8、件系统广泛的存储和文件系统8.8.8.8.VxWorksVxWorksVxWorksVxWorksVxWorksVxWorksVxWorksVxWorksVxWorksVxWorksVxWorksVxWorks操作系统是美国操作系统是美国操作系统是美国操作系统是美国WindRiverWindRiverWindRiverWindRiver公司于公司于公司于公司于1983198319831983年设年设年设年设计开发的一种嵌入式实时操作系统(计开发的一种嵌入式实时操作系统(计开发的一种嵌入式实时操作系统(计开发的一种嵌入式实时操作系统(RTOSRTOSRTOSRTOS),是),是),是),是嵌入式

9、开发环境的关键组成部分。良好的持续发嵌入式开发环境的关键组成部分。良好的持续发嵌入式开发环境的关键组成部分。良好的持续发嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环展能力、高性能的内核以及友好的用户开发环展能力、高性能的内核以及友好的用户开发环展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。境,在嵌入式实时操作系统领域占据一席之地。境,在嵌入式实时操作系统领域占据一席之地。境,在嵌入式实时操作系统领域占据一席之地。它以其它以其它以其它以其良好的可靠性良好的可靠性良好的可靠性良好的可靠性和和和和卓越的实时性卓越的实时性卓越的

10、实时性卓越的实时性被广泛地应被广泛地应被广泛地应被广泛地应用在通信、军事、航空、航天等高精尖技术及实用在通信、军事、航空、航天等高精尖技术及实用在通信、军事、航空、航天等高精尖技术及实用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、时性要求极高的领域中,如卫星通讯、军事演习、时性要求极高的领域中,如卫星通讯、军事演习、时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的弹道制导、飞机导航等。在美国的弹道制导、飞机导航等。在美国的弹道制导、飞机导航等。在美国的 F-16F-16F-16F-16、FA-18 FA-18 FA-18 FA-

11、18 战斗机、战斗机、战斗机、战斗机、B-2 B-2 B-2 B-2 隐形轰炸机和爱国者导弹上,甚至隐形轰炸机和爱国者导弹上,甚至隐形轰炸机和爱国者导弹上,甚至隐形轰炸机和爱国者导弹上,甚至连连连连1997199719971997年年年年4 4 4 4月在火星表面登陆的火星探测器上也使月在火星表面登陆的火星探测器上也使月在火星表面登陆的火星探测器上也使月在火星表面登陆的火星探测器上也使用到了用到了用到了用到了VxWorksVxWorksVxWorksVxWorks。C/OSC/OSC/OSC/OS-是一种免费公开源代码、结构小巧、具有是一种免费公开源代码、结构小巧、具有是一种免费公开源代码、结

12、构小巧、具有是一种免费公开源代码、结构小巧、具有可剥夺可剥夺可剥夺可剥夺实时内核实时内核实时内核实时内核的实时操作系统。其内核提供的实时操作系统。其内核提供的实时操作系统。其内核提供的实时操作系统。其内核提供任务调度与管理、任务调度与管理、任务调度与管理、任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务时间管理、任务间同步与通信、内存管理和中断服务时间管理、任务间同步与通信、内存管理和中断服务时间管理、任务间同步与通信、内存管理和中断服务等功等功等功等功能。能。能。能。适合小型控制系统,具有执行适合小型控制系统,具有执行适合小型控制系统,具有执行适合小型控制系统,具有执行效率高、

13、占用空间小、效率高、占用空间小、效率高、占用空间小、效率高、占用空间小、实时性能优良和可扩展性强实时性能优良和可扩展性强实时性能优良和可扩展性强实时性能优良和可扩展性强等特点,最小内核可编译至等特点,最小内核可编译至等特点,最小内核可编译至等特点,最小内核可编译至2 2KBKBKBKB。抢占式内核。抢占式内核。抢占式内核。抢占式内核。UClinuxUClinuxUClinuxUClinux则是继承标准则是继承标准则是继承标准则是继承标准LinuxLinuxLinuxLinux的优良特性,针对嵌入式处理的优良特性,针对嵌入式处理的优良特性,针对嵌入式处理的优良特性,针对嵌入式处理器的特点设计的一

14、种操作系统,具有内嵌器的特点设计的一种操作系统,具有内嵌器的特点设计的一种操作系统,具有内嵌器的特点设计的一种操作系统,具有内嵌网络协议网络协议网络协议网络协议、支持、支持、支持、支持多种文件系统多种文件系统多种文件系统多种文件系统,开发者可利用标准,开发者可利用标准,开发者可利用标准,开发者可利用标准LinuxLinuxLinuxLinux先验知识等优势。先验知识等优势。先验知识等优势。先验知识等优势。其编译后目标文件可控制在几百其编译后目标文件可控制在几百其编译后目标文件可控制在几百其编译后目标文件可控制在几百KBKBKBKB量级。无量级。无量级。无量级。无MMUMMUMMUMMU,采用时

15、,采用时,采用时,采用时间片轮番调度算法。间片轮番调度算法。间片轮番调度算法。间片轮番调度算法。RT_LinuxRT_LinuxRT_LinuxRT_LinuxC/OS-C/OS-C/OS-C/OS-和和和和 UClinuxUClinuxUClinuxUClinux免费且公开源码的E0SE0SE0SE0SC/OSC/OSC/OSC/OSC/OSC/OSC/OSC/OS-MicroC/OS-II is a highly portable,ROMable,scalable,preemptive real-time,multitasking kernel(RTOS)for microprocesso

16、rs and microcontrollers with performance comparable to-and in some cases exceeding-commercially available kernels.无操作系统无操作系统无操作系统无操作系统无操作系统无操作系统无操作系统无操作系统-有操作系统区别有操作系统区别有操作系统区别有操作系统区别有操作系统区别有操作系统区别有操作系统区别有操作系统区别?无操作系统无操作系统CPUCPUCPUCPUTaskTaskTaskTaskInterfaceInterfaceInterfaceInterface有操作系统有操作系统有操作系

17、统有操作系统有操作系统有操作系统有操作系统有操作系统 TaskTaskTaskTask1 1TaskTaskTaskTask0 0InterfaceInterfaceInterfaceInterfaceTaskTaskTaskTask0 0TaskTaskTaskTask1 1CPUCPUCPUCPU无操作系统无操作系统无操作系统无操作系统:1 1严格按所规定的顺序执行严格按所规定的顺序执行严格按所规定的顺序执行严格按所规定的顺序执行2 2程序执行的封闭性程序执行的封闭性程序执行的封闭性程序执行的封闭性3 3独占资源独占资源独占资源独占资源,执行过程和结果不受其它程序的影响执行过程和结果不受其

18、它程序的影响执行过程和结果不受其它程序的影响执行过程和结果不受其它程序的影响4 4 程序结果的可再现性程序结果的可再现性程序结果的可再现性程序结果的可再现性(结果的确定性结果的确定性结果的确定性结果的确定性)5 5只要初始状态相同只要初始状态相同只要初始状态相同只要初始状态相同,程序多次重复运行程序多次重复运行程序多次重复运行程序多次重复运行,其结果与程其结果与程其结果与程其结果与程 序执行速度无关序执行速度无关序执行速度无关序执行速度无关(连续或间断连续或间断连续或间断连续或间断),),),),结果都应相同。结果都应相同。结果都应相同。结果都应相同。有操作系统有操作系统有操作系统有操作系统:

19、多任务系统可以充分的利多任务系统可以充分的利多任务系统可以充分的利多任务系统可以充分的利用系统资源,在对用系统资源,在对用系统资源,在对用系统资源,在对InterfaceInterfaceInterfaceInterface进行操进行操进行操进行操作时,其他任务可以在作时,其他任务可以在作时,其他任务可以在作时,其他任务可以在CPUCPUCPUCPU中运行。中运行。中运行。中运行。特点特点特点特点:可靠性可靠性可靠性可靠性实时性实时性实时性实时性可裁减性可裁减性可裁减性可裁减性要求要求要求要求:多任务多任务多任务多任务抢占式调度抢占式调度抢占式调度抢占式调度任务的通讯与同步任务的通讯与同步任务

20、的通讯与同步任务的通讯与同步任务与中断之间的通讯任务与中断之间的通讯任务与中断之间的通讯任务与中断之间的通讯RTOSRTOSRTOSRTOSDormantDormantDormantDormantReadyReadyReadyReadyRunningRunningRunningRunningISRISRISRISRWaiting/SuspendWaiting/SuspendWaiting/SuspendWaiting/SuspendOSTaskCreate()OSTaskCreate()OSTaskCreate()OSTaskCreate()OSTaskCreateExt()OSTaskCre

21、ateExt()OSTaskCreateExt()OSTaskCreateExt()OsTaskDel()OsTaskDel()OsTaskDel()OsTaskDel()OSMBoxPost()OSMBoxPost()OSMBoxPost()OSMBoxPost()OSQPost()OSQPost()OSQPost()OSQPost()OSSemPost()OSSemPost()OSSemPost()OSSemPost()OSTaskResume()OSTaskResume()OSTaskResume()OSTaskResume()OSTimeDlyResume()OSTimeDlyResu

22、me()OSTimeDlyResume()OSTimeDlyResume()OSTimeTick()OSTimeTick()OSTimeTick()OSTimeTick()OSMBoxPend()OSMBoxPend()OSMBoxPend()OSMBoxPend()OSQPend()OSQPend()OSQPend()OSQPend()OSSemPend()OSSemPend()OSSemPend()OSSemPend()OSTaskSuspend()OSTaskSuspend()OSTaskSuspend()OSTaskSuspend()OSTimeDly()OSTimeDly()OSTi

23、meDly()OSTimeDly()OSTimeDlyHMSM()OSTimeDlyHMSM()OSTimeDlyHMSM()OSTimeDlyHMSM()OS_TASK_SW()OS_TASK_SW()OS_TASK_SW()OS_TASK_SW()OSIntExit()OSIntExit()OSIntExit()OSIntExit()OSTart()OSTart()OSTart()OSTart()Task is preemptedTask is preemptedTask is preemptedTask is preemptedOsTaskDel()OsTaskDel()OsTaskDe

24、l()OsTaskDel()OsTaskDel()OsTaskDel()OsTaskDel()OsTaskDel()InterruptInterruptInterruptInterruptOsIntExit()OsIntExit()OsIntExit()OsIntExit()OSSched()时钟节拍时钟节拍(Clock TickClock Tick)C/OSC/OSC/OSC/OS是是是是系统心脏的脉动,系统心脏的脉动,系统心脏的脉动,系统心脏的脉动,需要用户提供周期性信号源,需要用户提供周期性信号源,需要用户提供周期性信号源,需要用户提供周期性信号源,用于实现时间用于实现时间用于实现时间用

25、于实现时间延时延时延时延时和确认和确认和确认和确认超时超时超时超时。节拍率应在每秒。节拍率应在每秒。节拍率应在每秒。节拍率应在每秒10101010次到次到次到次到100100100100次之间,或者说次之间,或者说次之间,或者说次之间,或者说10101010到到到到100100HzHzHzHz。时钟节拍率越高,系统的。时钟节拍率越高,系统的。时钟节拍率越高,系统的。时钟节拍率越高,系统的额外负荷就越重。时钟节拍的实际频率取决于用户应用程额外负荷就越重。时钟节拍的实际频率取决于用户应用程额外负荷就越重。时钟节拍的实际频率取决于用户应用程额外负荷就越重。时钟节拍的实际频率取决于用户应用程序的精度。

26、时钟节拍源可以是专门的硬件定时器,也可以序的精度。时钟节拍源可以是专门的硬件定时器,也可以序的精度。时钟节拍源可以是专门的硬件定时器,也可以序的精度。时钟节拍源可以是专门的硬件定时器,也可以是来自是来自是来自是来自50/60Hz50/60Hz50/60Hz50/60Hz交流电源的信号。交流电源的信号。交流电源的信号。交流电源的信号。用户必须在多任务系统启动以后再开启时钟节拍器用户必须在多任务系统启动以后再开启时钟节拍器用户必须在多任务系统启动以后再开启时钟节拍器用户必须在多任务系统启动以后再开启时钟节拍器 OS_TICK_PER_SEC OS_TICK_PER_SEC OS_TICK_PER_

27、SEC OS_TICK_PER_SEC 设定时钟节拍设定时钟节拍设定时钟节拍设定时钟节拍 OSTimeISR()OSTimeISR()OSTimeISR()OSTimeISR()在每一个时钟节拍时发生中断。在每一个时钟节拍时发生中断。在每一个时钟节拍时发生中断。在每一个时钟节拍时发生中断。OSTimeTick()OSTimeTick()OSTimeTick()OSTimeTick()void OSTimeTick(void)#if OS_CRITICAL_METHOD=3 /*Allocate storage for CPU status register*/OS_CPU_SR cpu_sr;

28、#endif OS_TCB *ptcb;OSTimeTickHook();/*Call user definable hook */#if OS_TIME_GET_SET_EN 0 OS_ENTER_CRITICAL();/*Update the 32-bit tick counter */OSTime+;OS_EXIT_CRITICAL();#endif if(OSRunning=TRUE)ptcb=OSTCBList;/*Point at first TCB in TCB list */while(ptcb-OSTCBPrio!=OS_IDLE_PRIO)/*Go through all

29、TCBs in TCB list */OS_ENTER_CRITICAL();if(ptcb-OSTCBDly!=0)/*Delayed or waiting for event with TO */if(-ptcb-OSTCBDly=0)/*Decrement nbr of ticks to end of delay */if(ptcb-OSTCBStat&OS_STAT_SUSPEND)=OS_STAT_RDY)/*Is task suspended?*/OSRdyGrp|=ptcb-OSTCBBitY;/*No,Make task R-to-R(timed out)*/OSRdyTblp

30、tcb-OSTCBY|=ptcb-OSTCBBitX;else /*Yes,Leave 1 tick to prevent.*/ptcb-OSTCBDly=1;/*.loosing the task when the.*/*.suspension is removed.*/ptcb=ptcb-OSTCBNext;/*Point at next TCB in TCB list */OS_EXIT_CRITICAL();void main(void).OSInit();/*初始化uC/OS-II*/./*应用程序初始化代码.OSTaskCreate(TaskStart,(void*)0,&Task

31、Start_StkStk_size-1,4);允许时钟节拍(TICKER)中断;/*千万不要在这里允许时钟节拍中断千万不要在这里允许时钟节拍中断!*/.OSStart();/*开始多任务调度 */Void TaskCreate(void*pdata)pdata=pdata;TargetInit();TargetInit();TargetInit();TargetInit();OSInit()OSInit()OSInit()OSInit()OSInit()OSInit()OSInit()OSInit()void OSInit(void)#if OS_VERSION=204 OSInitHookB

32、egin();/*Call port specific initialization code */#endif OS_InitMisc();/*Initialize miscellaneous variables */OS_InitRdyList();/*Initialize the Ready List */OS_InitTCBList();/*Initialize the free list of OS_TCBs */OS_InitEventList();/*Initialize the free list of OS_EVENTs */#if(OS_VERSION=251)&(OS_F

33、LAG_EN 0)&(OS_MAX_FLAGS 0)OS_FlagInit();/*Initialize the event flag structures */#endif#if(OS_MEM_EN 0)&(OS_MAX_MEM_PART 0)OS_MemInit();/*Initialize the memory manager */#endif#if(OS_Q_EN 0)&(OS_MAX_QS 0)OS_QInit();/*Initialize the message queue structures */#endif OS_InitTaskIdle();/*Create the Idl

34、e Task */#if OS_TASK_STAT_EN 0 OS_InitTaskStat();/*Create the Statistic Task */#endif#if OS_VERSION=204 OSInitHookEnd();/*Call port specific init.code */#endifTask Control BlocksTask Control BlocksTask Control BlocksTask Control Blockstypedef struct os_tcb OS_STK *OSTCBStkPtr;/*Pointer to current to

35、p of stack */#if OS_TASK_CREATE_EXT_EN 0 void *OSTCBExtPtr;/*Pointer to user definable data for TCB extension */OS_STK *OSTCBStkBottom;/*Pointer to bottom of stack */INT32U OSTCBStkSize;/*Size of task stack(in number of stack elements)*/INT16U OSTCBOpt;/*Task options as passed by OSTaskCreateExt()*/

36、INT16U OSTCBId;/*Task ID(0.65535)*/#endif struct os_tcb*OSTCBNext;/*Pointer to next TCB in the TCB list */struct os_tcb*OSTCBPrev;/*Pointer to previous TCB in the TCB list */.INT16U OSTCBDly;/*Nbr ticks to delay task or,timeout waiting for event */INT8U OSTCBStat;/*Task status */INT8U OSTCBPrio;/*Ta

37、sk priority(0=highest,63=lowest)*/INT8U OSTCBX;/*Bit position in group corresponding to task priority(0.7)*/INT8U OSTCBY;/*Index into ready table corresponding to task priority */INT8U OSTCBBitX;/*Bit mask to access bit position in ready table */INT8U OSTCBBitY;/*Bit mask to access bit position in r

38、eady group */#if OS_TASK_DEL_EN 0 BOOLEAN OSTCBDelReq;/*Indicates whether a task needs to delete itself */#endif OS_TCB;INT8U OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8U prio)#if OS_CRITICAL_METHOD=3 /*Allocate storage for CPU status register */OS_CPU_SR cpu_sr;#endif OS_STK *psp;

39、INT8U err;#if OS_ARG_CHK_EN 0 if(prio OS_LOWEST_PRIO)/*Make sure priority is within allowable range */return(OS_PRIO_INVALID);#endif OS_ENTER_CRITICAL();if(OSTCBPrioTblprio=(OS_TCB*)0)/*Make sure task doesnt already exist at this priority */OSTCBPrioTblprio=(OS_TCB*)1;/*Reserve the priority to preve

40、nt others from doing.*/*.the same thing until task is created.*/OS_EXIT_CRITICAL();psp=(OS_STK*)OSTaskStkInit(task,pdata,ptos,0);/*Initialize the tasks stack */err=OS_TCBInit(prio,psp,(OS_STK*)0,0,0,(void*)0,0);if(err=OS_NO_ERR)OS_ENTER_CRITICAL();OSTaskCtr+;/*Increment the#tasks counter */OS_EXIT_C

41、RITICAL();if(OSRunning=TRUE)/*Find highest priority task if multitasking has started*/OS_Sched();else OS_ENTER_CRITICAL();OSTCBPrioTblprio=(OS_TCB*)0;/*Make this priority available to others */OS_EXIT_CRITICAL();return(err);OS_EXIT_CRITICAL();return(OS_PRIO_EXIST);#endifOSStart()OSStart()OSStart()OS

42、Start()OSStart()OSStart()OSStart()OSStart()void OSStart(void)void OSStart(void)void OSStart(void)void OSStart(void)INT8U y;INT8U y;INT8U y;INT8U y;INT8U x;INT8U x;INT8U x;INT8U x;if(OSRunning=FALSE)if(OSRunning=FALSE)if(OSRunning=FALSE)if(OSRunning=FALSE)y =OSUnMapTblOSRdyGrp;/y =OSUnMapTblOSRdyGrp;

43、/y =OSUnMapTblOSRdyGrp;/y =OSUnMapTblOSRdyGrp;/*Find highest prioritys Find highest prioritys Find highest prioritys Find highest prioritys task priority number task priority number task priority number task priority number */x =OSUnMapTblOSRdyTbly;x =OSUnMapTblOSRdyTbly;x =OSUnMapTblOSRdyTbly;x =OS

44、UnMapTblOSRdyTbly;OSPrioHighRdy=(INT8U)(y 3)+x);OSPrioHighRdy=(INT8U)(y 3)+x);OSPrioHighRdy=(INT8U)(y 3)+x);OSPrioHighRdy=(INT8U)(y 3)+x);OSPrioCur =OSPrioHighRdy;OSPrioCur =OSPrioHighRdy;OSPrioCur =OSPrioHighRdy;OSPrioCur =OSPrioHighRdy;OSTCBHighRdy =OSTCBPrioTblOSPrioHighRdy;/OSTCBHighRdy =OSTCBPr

45、ioTblOSPrioHighRdy;/OSTCBHighRdy =OSTCBPrioTblOSPrioHighRdy;/OSTCBHighRdy =OSTCBPrioTblOSPrioHighRdy;/*Point to Point to Point to Point to highest priority task ready to run highest priority task ready to run highest priority task ready to run highest priority task ready to run */OSTCBCur =OSTCBHigh

46、Rdy;OSTCBCur =OSTCBHighRdy;OSTCBCur =OSTCBHighRdy;OSTCBCur =OSTCBHighRdy;OSStartHighRdy();/OSStartHighRdy();/OSStartHighRdy();/OSStartHighRdy();/*Execute target specific code Execute target specific code Execute target specific code Execute target specific code to start task to start task to start t

47、ask to start task */Event Control BlocksEvent Control BlocksEvent Control BlocksEvent Control BlocksEvent Control BlocksEvent Control BlocksEvent Control BlocksEvent Control Blocks在多任务通讯的时候,主要管理共享的资源,解决资源的冲突,互斥等在多任务通讯的时候,主要管理共享的资源,解决资源的冲突,互斥等在多任务通讯的时候,主要管理共享的资源,解决资源的冲突,互斥等在多任务通讯的时候,主要管理共享的资源,解决资源的冲突

48、,互斥等问题,它可以让资源得到充分的利用。问题,它可以让资源得到充分的利用。问题,它可以让资源得到充分的利用。问题,它可以让资源得到充分的利用。它可以减少它可以减少它可以减少它可以减少RAMRAMRAMRAM碎片,节省资源碎片,节省资源碎片,节省资源碎片,节省资源.它跟它跟它跟它跟TCBTCBTCBTCB很相似,但是很相似,但是很相似,但是很相似,但是 ECBECBECBECB存在与等待状态存在与等待状态存在与等待状态存在与等待状态 TCBTCBTCBTCB存在于就绪状态存在于就绪状态存在于就绪状态存在于就绪状态typedef struct void *OSEventPtr;/*指向消息或者消

49、息队列的指针 */INT8U OSEventTblOS_EVENT_TBL_SIZE;/*等待任务列表 */INT16U OSEventCnt;/*计数器(当事件是信号量时)*/INT8U OSEventType;/*时间类型 */INT8U OSEventGrp;/*等待任务所在的组 */OS_EVENT;任务之间的通讯任务之间的通讯SemaphoreSemaphoreSemaphoreSemaphoreMail BoxMail BoxMail BoxMail BoxMessage QueueMessage QueueMessage QueueMessage QueueSemaphoreSemaphoreSemaphoreSemaphoreMail BoxMail BoxMail BoxMail BoxMail BoxMail BoxMail BoxMail BoxMessage QueueMessage QueueMessage QueueMessage QueueMessage QueueMessage QueueMessage QueueMessage Queue

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com