您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 嵌入式实时操作系统复习纲要
嵌入式实时操作系统复习纲要第一章嵌入式系统:嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,叫做嵌入式计算机系统,简称嵌入式系统。嵌入式操作系统:嵌入到特定设备的专用的可裁剪的计算机系统嵌入式操作系统分为实时操作系统和分时操作系统。嵌入式系统的三个要素:嵌入性、专用性和计算机系统嵌入式系统的特点:专用性强、可裁剪性好、实时性与可靠性好、功耗低内核类型:可剥夺型和不可剥夺型几种常见的嵌入式操作系统:VxWorks、pSOS、WindowsCE、QNXOS;手持设备的有:Plam、WinCE、EPOC;互联网方面的有:uCLinux、uC/OS-II.(记住其中五种)第二章任务:任务是一种程序实体,实质上时一个线程。uC/OS-II的任务组成:任务程序代码(任务的执行部分)、任务推栈(保存任务工作环境)、任务控制块(保存任务属性)uC/OS-II的任务有两种:用户任务和系统任务;其中系统任务有分为:空闲任务和统计任务,空闲任务是用户应用程序必须使用的,统计任务是应用程序可以根据实际需要来选择使用的。任务的5种状态:睡眠状态、就绪状态、运行状态、等待状态、中断服务状态。要重点看一下P17页的图2-2。在这些状态中睡眠状态只能直接进入就绪状态,就绪状态和中断服务状态可以直接进入运行状态,就绪状态可以直接进入睡眠状态和运行状态,中断服务状态只能直接进入运行状态,等待状态可以直接进入除了中断服务状态外的其他三种状态。运行状态可以进入其他四种状态。等待状态有:延时等待、请求等待和任务挂起等。临界段:为了有效地对中断进行控制,在任务的代码里可使用uC/OS-II定义的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来控制任务何时响应中断,何时屏蔽中断。在运行这两个宏之间的代码时是不会响应中断的,这种受保护的代码段叫做临界段。作用:使临界段中的代码不能被中断,以保护一些不能被中断的用户代码(要求不受干扰地连续运行),保证系统的正常工作。说明在临界段中不能调用uC/OS-II提供的系统函数,否则可能引起系统崩溃。关中断asm(“DI”)和OS_ENTER_CRITICAL();开中断asm(“EI”)和OS_EXIT_CRITICAL()。uC/OS-II最多有64个任务,优先级为0的任务的优先级最高,优先级为63的任务的优先级最低。重点看明白课本P21页的例2-3.P22-P23页,给出三个参数及堆栈增长方向,要知道如何创建任务。见后面的程序题看名称写含义P26,OSTCBDly表示任务等待的时限(节拍数)、OSTCBStat表示任务的当前状态标志、OSTCBPrio表示任务的优先级别、OS_STAT_RDY表示任务处于就绪状态、OS_STAT_SEM表示任务处于等待信号量状态、OS_STAT_MBOX表示任务处于等待消息邮箱状态、OS_STAT_Q表示任务处于等待消息队列状态、OS_STAT_SUSPEND表示任务处于挂起状态、OS_STAT_MUTEX表示任务处于等待互斥型信号量状态。uC/OS-II管理任务的两条链表:空任务链表(单向)、任务块链表(双向)uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度。对任务就绪表的操作详细看P30的例2-5和P26-P27页。如何从任务就绪表中获取优先级别最高的就绪任务的代码如下:y=OSUnMapTa1[OSRdyGrp];x=OSUnMapTa1[OSRdyTb1[y]];prio=(y3)+x;或y=OSUnMapTa1[OSRdyGrp];prio=(INT8U)((y3)+OSUnMapTa1[OSRdyTb1[y]];OSUnMapTa1[共有256个元素,其定义如下:INT8UconstOSUnMapTa1[]={//01234567891011121314150454010201030102010645474546454//除了标注的之外,其余的每一列都相同};多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行上述工作叫做任务的调度。任务调度——执行任务调度不一定需要任务切换何如获得运行就绪任务块的指针。P33OSTCBCur的作用:指向正在运行任务控制块的指针;OSTCBFreeList的作用:指向空任务控制块链表的表头。P40页的程序题例2-6,给出三个参数及堆栈增长方向,要知道如何创建任务P46任务的挂起和恢复,记住函数名称及用法。程序题,一般为一句话小程序题。主要类型为:将优先级为x的任务挂起或恢复、将正在运行的任务挂起或者恢复、将只知道控制块的任务挂起或恢复。任务优先级的修改及删除P53,要求知道名称及用法。第三章中断的响应过程(简答):uC/OS-II系统收到中断请求后,如果这时CPU处于中断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子程序;当中断服务子程序的运行结束后,系统将会根据情况返回到被中止的任务继续运行,或者转向运行另一个具有更高优先级别的就绪任务。时钟:任何操作系统都要提供一个周期性的信号源,以提供系统处理诸如延时、超时等与时间有关的事件,这个周期性的信号源叫做时钟时间节拍:系统时钟两次中断之间间隔的时间叫时钟节拍。作用:为系统提供时钟,并以其为最小时间单位来提供系统处理诸如延时、超时等与时间有关的事件。要求会用两种延时P88-P90。任务延时函数OSTimeDly()和OSTimeDlyHMSM(),了解取消任务延时函数OSTimeDlyResume(),此外还要理解好OSTimeTick函数(),它是时钟节拍服务函数,作用是在每个时钟节拍了解每个任务的延时状态。钩子函数OSTimeTickHock()的简单用法,可不见,不要求BOOLEANInterKey=FALSE;externBOOLEANInterKey;INT16UInterCtr=0;voidOSTimeTickHook(void){if(InterCtr==10000)InterKey=TURE;InterCtr++;}获取和设置系统时间P93获得系统的时间函数OSTimeGet(),一般有OSTime=OSTimeGet();设置系统的时间函数OSTimeSet(),如设置系统的时间节拍数OSTime为10,代码为OSTimeSet(10);全局变量OSTime用来记录系统发生的时间节拍数。OSTime=OSTimeGet();第四章事件控制块:用来表述事件的数据结构uC/OS-II中的事件有三类:分别是信号量、邮箱(消息邮箱)(互斥型信号量)、消息队列。作用:使临界段中的代码不能被中断,以保护一些不能被中断的用户代码(要求不受干扰地连续运行),保证系统的正常工作。程序的三个参数:信号量,消息邮箱,消息队列,若是要求四个参数,则再写多一个“互斥型信号量”信号量的创建、请求和发送OS_EVENT*Fun_Semp;//声明信号量Fun_Semp=OSSemCreate(1);//定义信号量,并使信号量计数器的初值为1OSSemPend(Fun_Semp,0,&err);//请求信号量OSSemPost(Fun_Semp);//发送信号量P140六个参数,给出名字写意思OSQSize数组的长度OSQEntries已存放消息指针的元素数目OSQStart指向消息指针数组的起始地址OSQEnd指向消息指针数组结束单元的下一个单元OSQIn指向插入一条消息的位置OSQout指向被取出消息的位置第五章P156创建请求发送(程序)第六章P168创建内存分区①定义一个用来存储INT16U类型的数据,有10个内存块,每个内存块长度为10的内存分区的代码如下:INT16UIntMemBuf[10][10];②见后面的程序题P170创建空内存控制块链表程序用OS_MemInit()定义并初始化一个空内存控制块链表OS_MAX_MEM_PART表示空内存控制块的最大数目P172程序重点内容见后面的程序题P173请求获得内存块见后面的程序题P174释放一个内存块见后面的程序题P179查询一个内存分区的状态,了解例6-4OS_MEM*CommTxBuffer;OS_MEM_DATAMemInfo;OSMemQuery(CommTxBuffer,MemInfo);P228给英文写中文OS_MAX_QS定义系统中具有消息队列的最大数目OS_MAX_MEM_TASKS定义最大任务数OS_LOWEST_PRIO定义任务的最低优先级OS_TASK_IDLE_STK_SIZE设置空闲任务堆栈的大小OS_TASK_STAT_EN设定系统是否使用统计任务OS_TASK_STAT_STK_SIZE设定统计任务的堆栈大小OS_CPU_HOOKS_EN设定是否允许使用各钩子函数OS_MBOX_EN设定是否使用消息邮箱的使能信号OS_MEM_EN控制是否使用内存块管理函数的使能信号OS_Q_EN控制是否使用消息队列函数的使能信号OS_SEM_EN控制是否使用信号量管理函数的使能信号OS_TASK_CHANGE_PRIO_EN设定是否修改任务优先级OS_TASK_CREATE_EN创建任务的使能信号OS_TASK_CREATE_EXT_EN允许扩展任务的使能信号OS_TASK_DEL_EN允许删除任务的使能信号OS_TASK_SUSPEND_EN允许任务挂起的使能信号OS_TICKS_PER_SEC表示调用OSTime()函数的次数试卷参考答案一、填空题1.uC/OS-II最多有64个任务,优先级为0的任务的优先级最高,优先级为63的任务的优先级最低。2.uC/OS-II的任务有两种:用户任务和系统任务3.uC/OS-II的任务的5种状态:睡眠状态、就绪状态、运行状态、等待状态、中断服务状态。4.OS_ENTER_CRITICAL()的作用是进入临界段(关中断),OS_EXIT_CRITICAL()的作用是退出临界段(开中断)5.常数OS_MAX_QS的含义是定义系统中具有消息队列的最大数目,OS_TICKS_PER_SEC的含义是表示调用OSTimeTick()函数的次数。6.uC/OS-II中的事件有三类,分别是信号量、消息邮箱、消息队列。7.消息队列的队列控制块中的OSQStart的作用是指向消息指针数组的起始地址,OSQSize的作用是指定数组的长度,OSQOut的作用是指向被取出消息的位置。8.任何就绪表数组OSUnMapTb1[9]=0,OSUnMapTb1[10]=19.除了uC/OS-II,举出三个你所知道的嵌入式系统的名称:VxWorks、pSOS和WindowsCE等。10.uC/OS-II的系统任务有两个:用户任务和系统任务。用户应用程序必须使用其中的空闲任务。11.如果希望应用程序中最多任务个数为10,则OS_LOWEST_PRIO的值应为1112.uC/OS-II的任务有三个组成部分:任务程序代码、任务堆栈、任务控制块。13.在OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏之间的代码是不会响应中断的,这种受保护的代码段叫做临界段。14.OSTCBFreeList的作用:指向空任务控制块链表的表头。OSTCBCur的作用:指向正在运行任务控制块的指针15.多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行上述工作叫做任务的调度。16.全局变量OSTime用来记录系统发生的时间节拍数。17.消息队列的队列控制块中的OSQEnd的作用是指向消息指针数组结束单元的下一单元,OSQEntries的作用是已存放消息指针的元素数目,OSQIn的作用是指向插入一条消息的位置。18.任何就绪表数组OSUnMapTb1[7]=0,OSUnMapTb1[14]=1二、简单题1.简述临界段的
本文标题:嵌入式实时操作系统复习纲要
链接地址:https://www.777doc.com/doc-4882748 .html