嵌入式系统复习题_第1页
嵌入式系统复习题_第2页
嵌入式系统复习题_第3页
嵌入式系统复习题_第4页
嵌入式系统复习题_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统复习题填空题(20) 选择题(20=10*2)是非题(16=8*2)简答题(24=4*6)综合题(20=2*10)1、什么是计算机操作系统(概念)P122、操作系统的功能P33、嵌入式系统的概念、三个基本要素P44、两个阶段(MCU、SOC)、两种模式(创新模式与那个打不出来的模式)P5倒数第三段第二行1、 嵌入式操作系统的主要特点P7倒数一行P85、实时系统的两个基本要求P82、 实时操作系统应满足的三个条件P93、 -ml(large模式)P189、编译(上课时有修改的:把”-I.”去掉)P2010、Tlink怎么写 P2111、命令集的命令行以tab开头、然后又说了一下make

2、加标号不知道是什么鬼,我没听清楚#¥& P23 然后分了一下神就不知道她说了什么就到了第三章了12、进程、线程、uC/OS-II的两种任务、最多64个任务 P5113、任务的五种状态 P5214、P53 只听到“临界段”三个字15、P56 听坐在隔壁的测控班的说老师说可能会出例3-316、向上堆栈、向下堆栈 P5817、表3-2 P6318、例3-5 以及其逆向 P6519、就绪表的三种操作 P6620、最高优先级就绪任务的查找 P666721、标题“调度器的主要工作”的第二段 22、调度器进行任务切换 图3-12 P7123、调用启动任务函数之前必须至少创建一个任务 P7524、挂起

3、任务、恢复任务的函数名 P8225、启动函数OSStart() 这里只听到这个,还是问隔壁的 P9726、P101 中断的定义 以及倒数最后一段27、P102 只听到OSIntNesting还有一个not什么鬼的不知是啥28、宏定义的三种方式 P10629、P108 的程序代码30、钩子函数存放在OS_cpu.c中31、各任务之间的制约关系 P12432、信号量、消息邮箱、队列 我只听到她讲这三个 P125126、P133 P13633、信号量的创建 、请求信号量 、发送信号量 P14314534、优先反转的本质 P154第三段35、先进后出、先进先出 P16936、例5-9 P17237、创

4、建信号量集 P18438、请求、发送信号量集 P18639、例6-1 P187 40、例6-3 P19241、内存分区与内存块的定义 P19742、P200第二段简答题: 第七章出一道、做过的实验中出一道综合题:1、 编程题:用信号量使Mytest、youtest轮流实现Fun() 第五章消息队列先进先出、后进先出、函数名、参数、堆栈的创建以及初始化 两个任务分别发送,第三个任务才能运行(6-1) 例6-3 P1922、 解释题:P73、P107 P143 P184第一章1、只由硬件构成的计算机叫做裸机。2、操作系统是方便用户管理和控制计算机软硬件资源的系统软件(或程序集合)。 操作系统的功能

5、:处理器的管理、存储的管理、设备的管理、文件的管理、网络和通信的管理、提供用户接口。3、嵌入式系统的定义:嵌入式系统是对对象进行自动控制而使其具有智能化并可嵌入对象体系中的专用计算机系统。嵌入式、专用性与计算机系统是嵌入式系统的三个基本要素。4、在探索单片机的发展道路时,有过两种模式:模式和创新模式。5、单片机形态的嵌入式系统硬件自20世纪70年代以来,大体上可分为MCU,SoC两个阶段。6、嵌入式操作系统与普通操作系统相比,具有以下特点:微型化、可裁剪性、实时性、可靠性高、易移植性。7、对实时系统有两个基本要求:第一,实时系统的计算必须产生正确的结果,称为逻辑或功能正确;第二,实时系统的计算

6、必须在预定的时间内完成,称为时间正确。8、实时操作系统应满足以下三个条件:·实时操作系统必须是多任务系统。·任务的切换时间应与系统中的任务数无关。·中断延迟的时间可预知并尽可能短。第二章1、内存模式-ml是large模式。2、编译:>bcc c ml Ic:bcinclude Lc:bclib pa.c2、命令集中的所有命令行必须以TAB键开头。3、make执行了makefile中的第一个段落,即标号为target1的那个段,而其余两个段均未被执行,make+标号,即执行该标号段落。4、makefile文件的命名,make f 文件名。第三章1、根据任务是否

7、具有自己的私有运行空间,人们把任务也分别叫做了“进程”和“线程”。2、uC/OS-的任务有两种:用户任务和系统任务。3、目前,在在uC/OS-中,最多可以含有64个任务(包括用户任务和系统任务。)4、uC/OS-任务的5种状态:睡眠状态、就绪状态、运行状态、等待状态、中断服务状态。等待状态睡眠状态就绪状态运行状态中断服务状态 删除任务等待事件中断等待时间到时间挂起创建任务 抢占其他任务 删除任务 被抢占 中断返回删除任务5、处于两个宏之间的代码是不会被中断的,uC/OS-把这种受保护的代码段叫做临界段,所以OS_ENTER_CRITICAL()叫做进入临界段宏,而OS_EXIT_CRITICA

8、L()叫做推出临界段宏。6、当OS_STK_GROWTH=0时,堆栈增长方向向上;当OS_STK_GROWTH=1时,堆栈增长方向向下。7、系统对于就绪表主要有三个操作:登记、注销和从就绪表的就绪任务中得知具有最高优先级任务的标识(优先级prio)。8、uC/OS-有两个调度器:一种是任务级的调度器;另一种是中断级的调度器。9、uC/OS-有两个用来创建任务的函数;OSTaskCreate()和OSTaskCreateExt()。10、uC/OS-有一个规定:在调用启动任务函数OSStart()之前,必须已经创建了至少一个任务。11、uC/OS-不允许在中断服务程序中创建任务。12、挂起任务函

9、数OSTaskSuspend()的原型:INT8U OSTaskSuspend(INT8U prio);恢复任务函数OSTaskResume()的原型:INT8U OSTaskResume(INT8U prio)。13、变量OSRunning的值FALSE,类型为BOOLEAN,uC/OS-核是否正在运行的标志。第四章1、uC/OS-系统响应中断的过程是:系统接收到中断请求后,如果这时CPU处于中断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子程序;当中断服务子程序的运行结束后,系统就会根据情况返回到被中止的任务继续运行,或者转向运行另一个

10、具有更高优先级别的就绪任务。2、宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()的实现方法:(1)第一种方法最简单,即直接使用处理器的开中断和关中断指令来实现宏,这时需要令常数OS_CRITICAL_METHOD=1。(2)第二种方法稍微复杂一些,但可使CPU中断标志的状态在临界段前和临界段后不发生改变,这时需要令常数OS_CRITICAL_METHOD=2。(3)第三种方法的前提条件是,用户使用的C编译器具有扩展功能。用户可以获得程序状态字的值,这样就可把该值保存在C变量中,而不必压到堆栈中,这时需要令常数OS_CRITICAL_METHOD=3。3、钩子函数放

11、在OS_CPU.C中。4、延时函数:OSTimeDly()和OSTimeDlyHMSM()。第五章1、两个制约关系:直接制约关系和间接制约关系。2、uC/OS-使用信号量、消息邮箱和消息队列这些中间环节来实现任务之间的通信。3、使一个任务进入等待状态的函数:OS_EventTaskWait();使一个正在等待的任务进入就绪状态的函数:OS_EventTaskRdy();使一个等待超时的任务进入就绪状态的函数:OS_EventTO()。4、任务通过调用函数OSSemPend()请求信号量。void OSSemPend(OS_EVENT *pevent,/信号量的指针 INT16U timeout

12、,/等待时限 INT8U *err/错误信息参数pevent是被请求信号量的指针。5、使用信号量的任务是否能够运行是受任务的优先级别以及是否占用信号量两个条件约束的,而信号量的约束高于优先级别的约束。6、当事件控制块成员OSEventType值OS_EVENT_TYPE_Q时,该事件控制块代表一个消息队列。事件控制块成员OSEventPtr指向一个叫做队列控制块(OS_Q)的结构,该结构管理这一个数组MsgTb1 ,该数组的元素都是指向消息的指针。7、优先级反转的本质:是因为一个优先级别较低的任务在获得了信号量使用共享资源期间,被具有较高优先级别的任务所打断而不能释放信号量,从而使正在等待这个

13、信号量的更高级别的任务因得不到信号量而被迫处于等待状态,在这个等待期间,就让优先级别低于它而高于占据信号量的任务的任务运行了。显然,如果这种优先级别介于使用信号量的两个任务优先级别中间的中等优先级别任务较多,则会极大恶化高优先级别任务的运行环境,是实时系统所无法容忍的。8、两种方式指针数组插入消息:先进先出(FIFO)方式和后进先出(LIFO)方式。第六章和第七章1、uC/OS-信号量集可以对信号量进行“与(AND或ALL)”和“或(OR或ANY)”两种逻辑运算。2、请求信号量集,调用函数OSFlagPend();向信号量集发生信号,调用函数OSFlagPost()。3、nblks>1,

14、因为分区内存块至少有两块; Bkksize>=sizeof(*void),因为每个内存快的空间至少能存放一个指针,因为要在内存块中建立一个用于把分区的内存块链接为一个链表的指针。1操作系统用硬件定时器提供的一个周期性的信号源 叫ucos-II的系统时钟;2最小的时钟单位是 两次中断之间间隔的时间 ,这个最小时钟单位叫时钟节拍;3用来记录 任务堆栈指针 、 任务的当前状态 、 任务的优先级别 等一些与任务管理相关的属性的表叫 任务控制块链表 ;4在uC/OS-II中,使用 信号量 、 消息邮箱 和 消息队列 等这些被称作事件的中间环节来实现任务之间的通信。1.OS_ENTER_CRITIC

15、AL()和OS_EXIT_CRITICAL()的含义及作用? 答:OS_ENTER_CRITICAL():关中断; OS_EXIT_CRITICAL():开中断。 在OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏之间的代码是不会响应中断的,这种受保护的代码段叫做临界段。作用:使临界段中的代码不能被中断,以保护一些不能被中断的用户代码(要求不受干扰地连续运行),保证系统的正常工作。 2.简述一下任务优先级发转的原因?为了避免此类事件的发生,uC/OS-II采用什么办法来解决该问题? 答:在可剥夺型内核中,当任务以独占方式使用资源时,会出现低优先级任务先于高优先

16、级任务而被执行的现象,这种现象叫做任务优先级反转。 是因为一个优先级别较低的任务在获得了信号量使用共享资源期间,被具有较高优先级别的任务所打断而不能释放信号量,从而使正在等待这个信号量的更高级别的任务因得不到信号量而被迫处于等待状态,在这个等待期间,就让优先级别低于它而高于占据信号量的任务的任务运行了。显然,如果这种优先级别介于使用信号量的两个任务优先级别中间的中等优先级别任务较多,则会极大恶化高优先级别任务的运行环境,是实时系统所无法容忍的。 解决办法:使获得信号量任务的优先级别在使用共享资源期间暂时提升到所有任务最高优先级的高一个级别上,以使该任务不被其他任务所打断,从而能尽快地使用完共享

17、资源并释放信号量;然后再释放信号量之后,再恢复该任务原来的优先级别 3信号量的典型应用包括哪些?对信号量有哪些操作? 答:信号量(Semaphores)是一种约定机制,在多任务内核中的典型应用包括:(1)控制共享资源的使用权(满足互斥条件);(2)标志某事件的发生;(3)使两个任务的行为同步;一般来说对信号量可以实施如下操作:(1)初始化(INITIALIZE),也可称为建立(CREATE);(2)等信号(WAIT),也可称为挂起(PEND);(3)给信号或发信号(POST);(4)删除信号量(DEL); (5)查询信号状态(QUERY)4描述建立任务OSTaskCreate()的函数原型 答

18、:函数原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio) 其调用者:任务或者是初始化代码。作用是建立一个新任务,任务的建立可以在多个任务环境启动之前,也可以在正在运行的任务中建立,但中断处理程序中不能建立任务,一个任务必须为无限循环结构,且不能有返回点。无论用户程序中是否产生中断,在初始化任务堆栈时,堆栈的结构必须与处理器中断后寄存器入栈的顺序结构相同。该函数返回一个8位的整形数,调用该函数需要四个参数: 第一个参数:task是一个指向任务代码的指针,也就是用户代码的首地址,平常使用中我们把自己

19、创建的任务的名字作为这个参数即可。 第二个参数:pdata指向一个数据结构,该结构用来在建立任务时向任务传递参数。 第三个参数:ptos是指向任务堆栈栈顶的指针,一般把创建的任务的堆栈数组首地址赋给它。第四个参数:prio是任务的优先级5.简述一下C/OS-控制下的任务状态类型?描述任务状态转换过程图?答:在任一给定的时刻,任务的状态一定是在这五种状态之一。 睡眠状态:任务在没有被配备任务控制块或被剥夺了任务控制块的时的状态。 就绪状态:为任务配备了控制块且在任务就绪表中进行了就绪登记 运行状态:经调度器获得了cpu的使用权 等待状态:正在运行的任务需要等待一段时间或需要等待一个事件发生时,该

20、任务会把cpu的使用权交给其他任务而进入等待状态。 中断服务状态: 一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序。6.uC/OS主要有哪几类任务同步方法,请每类至少举出一个系统函数名。 答:信号量:OS_EVENT *OSSemCreate(INT16U cnt);OS_EVENT_TYPE_SEM创建一个类型的事件块;OSSemDel() 删除一个信号量。 互斥性信号量:OS_EVENT *OSMutexCreate(INT8U prio, INT8U *err); OSMutexDel()。 消息邮箱:OSMboxCreate创建邮箱;OSMboxPend请求邮箱;O

21、SMboxDel删除邮箱综合题:1、 编译题:(1)用信号量使Mytest、yourtest轮流实现Fun()(2)第五章消息队列先进先出、后进后出、函数名、参数、堆栈的创建以及初始化(3)两个任务分别发送,第三个任务才能运行(6-1)(4)例6-3 P192例6-1#include "includes.h"#define TASK_STK_SIZE 512/任务堆栈长度OS_STK StartTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK MyTaskStkTASK_STK_SIZE;OS_STK YouTaskStkTASK_STK_SIZE;O

22、S_STK HerTaskStkTASK_STK_SIZE;INT16S key;/用于退出uCOS_II的键char *s1="MyTask is running"char *s2="YouTask is running"char *s3="HerTask is running"INT8U err;INT8U x=0,y=0;/字符显示位置OS_FLAG_GRP *WFlag;/*事件标志组指针*/void StartTask(void *data);void MyTask(void *data);void YouTask(void

23、 *data);void HerTask(void *data);void Quitkey(void);/*主函数*/void main (void) OSInit();/初始化uCOS_II PC_DOSSaveReturn();/保存Dos环境 PC_VectSet(uCOS, OSCtxSw);/安装uCOS_II中断WFlag=OSFlagCreate(0,&err);/*创建事件标志组*/if(err=OS_NO_ERR)/*检测是否创建成功*/PC_DispStr(0,23,"No error",DISP_BGND_BLACK+DISP_FGND_WHI

24、TE); OSTaskCreate(StartTask,0,&StartTaskStkTASK_STK_SIZE - 1,5); OSStart();/*StartTask*void StartTask(void *pdata) pdata=pdata; OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR); PC_SetTickRate(OS_TICKS_PER_SEC); OS_EXIT_CRITICAL();/ OSStatInit(); OSTaskCreate(MyTask,0,&MyTaskStkTASK_STK_SIZE

25、 - 1,6); OSTaskCreate(YouTask,0,&YouTaskStkTASK_STK_SIZE - 1,7); OSTaskCreate(HerTask,0,&HerTaskStkTASK_STK_SIZE - 1,8);OSTaskSuspend(OS_PRIO_SELF);/*MyTask*void MyTask (void *pdata) pdata = pdata; for (;) OSFlagPend(WFlag,(OS_FLAGS)3,OS_FLAG_WAIT_SET_ALL,0,&err);PC_DispStr(10,+y,s1,DISP

26、_BGND_BLACK+DISP_FGND_WHITE); Quitkey();OSTimeDlyHMSM(0,0,2,0); /*YouTask*void YouTask (void *pdata) pdata = pdata; for (;) PC_DispStr(10,+y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE);OSTimeDlyHMSM(0,0,8,0);OSFlagPost(WFlag,(OS_FLAGS)2,OS_FLAG_SET,&err);Quitkey();OSTimeDlyHMSM(0,0,2,0); /*HerTask*void

27、HerTask (void *pdata) pdata = pdata; for (;) PC_DispStr(10,+y,s3,DISP_BGND_BLACK+DISP_FGND_WHITE);OSFlagPost(WFlag,(OS_FLAGS)1,OS_FLAG_SET,&err);Quitkey();OSTimeDlyHMSM(0,0,1,0); /*Quitkey()*void Quitkey(void)if(PC_GetKey(&key)=TRUE)if(key=0x1B)PC_DOSReturn();例6-3#include "includes.h&qu

28、ot;#define TASK_STK_SIZE 512/任务堆栈长度OS_STK StartTaskStkTASK_STK_SIZE;/定义任务堆栈区OS_STK MyTaskStkTASK_STK_SIZE;1OS_STK YouTaskStkTASK_STK_SIZE;OS_STK HerTaskStkTASK_STK_SIZE;INT16S key;/用于退出uCOS_II的键char *s1="MyTask is running"char *s2="YouTask is running"char *s3="HerTask is run

29、ning"INT8U err;INT8U x=0,y=0;/字符显示位置OS_FLAG_GRP *WFlag;2OS_FLAGS Flags;void StartTask(void *data);void MyTask(void *data);void YouTask(void *data);void HerTask(void *data);void Quitkey(void);void DispCtrl(void);/*主函数*/void main (void)OSInit();/初始化uCOS_IIPC_DOSSaveReturn();/保存Dos环境PC_VectSet(uCO

30、S, OSCtxSw);/安装uCOS_II中断WFlag=OSFlagCreate(0,&err);3if(err=OS_NO_ERR)PC_DispStr(30,24,"Create No error",DISP_BGND_BLACK+DISP_FGND_WHITE);OSTaskCreate(StartTask,0,&StartTaskStkTASK_STK_SIZE - 1,5);OSStart();/*StartTask*void StartTask(void *pdata)pdata=pdata;OS_ENTER_CRITICAL();PC_Ve

31、ctSet(0x08, OSTickISR);PC_SetTickRate(OS_TICKS_PER_SEC);OS_EXIT_CRITICAL();/ OSStatInit();OSTaskCreate(MyTask,0,&MyTaskStkTASK_STK_SIZE - 1,6);4OSTaskCreate(YouTask,0,&YouTaskStkTASK_STK_SIZE - 1,7);5OSTaskCreate(HerTask,0,&HerTaskStkTASK_STK_SIZE - 1,8);6OSTaskSuspend(OS_PRIO_SELF);/*My

32、Task*/MyTask query the WFlag every 2 secends and clear the Flags/if any bits of the Flags is avaliable it will display/else nothing will displayvoid MyTask (void *pdata)pdata = pdata;for (;)Flags=OSFlagQuery(WFlag,&err);7/*查询信号量集*/if(err!=OS_NO_ERR)PC_DispStr(30,24,"Query error",DISP_B

33、GND_BLACK+DISP_FGND_WHITE);switch(Flags)case 1:DispCtrl();PC_DispStr(x,+y,"bit 0 is avaliable",DISP_BGND_BLACK+DISP_FGND_YELLOW);break;case 2:DispCtrl();PC_DispStr(x,+y,"bit 1 is avaliable",DISP_BGND_BLACK+DISP_FGND_YELLOW);break;case 3:DispCtrl();PC_DispStr(x,+y,"bit 0&

34、1 is avaliable",DISP_BGND_BLACK+DISP_FGND_YELLOW);break;OSFlagPost(WFlag,(OS_FLAGS)3,OS_FLAG_CLR,&err);8if(err=OS_NO_ERR)PC_DispStr(30,24,"MyTask post no error",DISP_BGND_BLACK+DISP_FGND_WHITE);Quitkey();OSTimeDlyHMSM(0,0,2,0);/*YouTask*void YouTask (void *pdata)pdata = pdata;for

35、(;)DispCtrl();PC_DispStr(x,+y,s2,DISP_BGND_BLACK+DISP_FGND_WHITE);OSTimeDlyHMSM(0,0,4,0);OSFlagPost(WFlag,(OS_FLAGS)2,OS_FLAG_SET,&err); 9Quitkey();OSTimeDlyHMSM(0,0,2,0);/*HerTask*void HerTask (void *pdata)pdata = pdata;for (;)DispCtrl();PC_DispStr(x,+y,s3,DISP_BGND_BLACK+DISP_FGND_WHITE);if(y&

36、lt;14)OSFlagPost(WFlag,(OS_FLAGS)1,OS_FLAG_SET,&err); 10Quitkey();OSTimeDlyHMSM(0,0,1,0);/*Quitkey()*void Quitkey(void)if(PC_GetKey(&key)=TRUE)if(key=0x1B)PC_DOSReturn();/*Quitkey()*/用于改变显示的列值,将dos窗口平均分成了四列void DispCtrl(void)if (y=23)y=0;switch(x)case 0:x=20;break;case 20:x=40;break;case 40:

37、x=60;break;case 60:x=0;break;解释题:P73、P107、P143、P184P73INT8U OSTaskCreate (void (*task)(void *pd), /指向任务的指针void *pdata, /传递给任务的参数OS_STK *ptos, /指向任务堆栈栈顶的指针INT8U prio)/任务的优先级 # if OS_CRITICAL_METHOD=3/如果开关中断宏选择方式3,为CPU状态寄存器OS_CPU_SR cpu_sr ;分配存储器#endif void *psp; /传递给任务的参数 INT8U err; /存放错误类型 if (prio

38、> OS_LOWEST_PRIO) /检测任务的优先级是否合法 return (OS_PRIO_INVALID); OS_ENTER_CRITICAL(); /进入临界区操作if (OSTCBPrioTblprio = (OS_TCB *)0) /确认优先级未被使用 OSTCBPrioTblprio = (OS_TCB *)1; /保留优先级 OS_EXIT_CRITICAL(); /退出临界区操作 psp = (void *)OSTaskStkInit(task, pdata, ptos, 0); /初始化任务堆栈 err = OSTCBInit(prio, psp, (void *)

39、0, 0, 0, (void *)0, 0); /获得并初始化任务控制块 if (err = OS_NO_ERR)/如果消息被正确的接收 OS_ENTER_CRITICAL(); /进入临界区操作 OSTaskCtr+; /任务计数器加1 OS_EXIT_CRITICAL(); /退出临界区操作 if (OSRunning) /如果内核正在运行 OSSched(); /进行任务调度 else OS_ENTER_CRITICAL(); /进入临界区操作 OSTCBPrioTblprio = (OS_TCB *)0; /让占有的优先级释放,即放弃任务 OS_EXIT_CRITICAL(); /退出

40、临界区操作 return (err); /返回错误类型 else OS_EXIT_CRITICAL(); /退出临界区操作 return (OS_PRIO_EXIST); /返回优先级存在 在时钟中断服务程序中调用OSTimeTickP107void OSTimeTick(void) #if OS_CRITICAL_MEHOD=3/如果开关中断宏选择方式3OS_CPU_SR cpu_sr;/为CPU状态寄存器分配存储 #endifOS_TCB *ptcb;OSTimeTickHook();#if OS_TIME_GET_SET_EN>0OS_ENTER_CRITICAL();OSTime

41、+;/记录节拍数OS_EXIT_CRITICAL();#endifIf(OSRunning=TRUE)/内核正在运行的标志ptcb=OSTCBList;while(ptcb->OSTCBPrio!=OS_IDLE_PRIO)OS_ENTER_CRITICAL();if(ptcb->OSTCBDly!=0) /如果任务等待时间不等于0If(-ptcb->OSTCBDly=0)/任务的延时时间减1If(ptcb->OSTCBtat&OS_STAT_SUSPEND)=OS_STAT_RDY)/如果是就绪任务OSRdyGrp|=ptcb->OSTCBBity;OSRdyTb1ptcb->OSTCBY|=ptcb->OSTCBBitx;else/如果是挂起任务Ptcb->OSTCBDly=1;/延时时间加1ptcb=ptcb->OSTCBNext;/指针下移OS-EXIT_CRITICAL();创建信号量OSSemCreate的源代码P143OS_EVE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论