版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上嵌入式实时操作系统复习纲要第一章l 嵌入式系统:嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,叫做嵌入式计算机系统,简称嵌入式系统。l 嵌入式操作系统:嵌入到特定设备的专用的可裁剪的计算机系统l 嵌入式操作系统分为实时操作系统和分时操作系统。l 嵌入式系统的三个要素:嵌入性、专用性和计算机系统l 嵌入式系统的特点:专用性强、可裁剪性好、实时性与可靠性好、功耗低l 内核类型:可剥夺型和不可剥夺型l 几种常见的嵌入式操作系统:VxWorks、pSOS、Windows CE、QNX OS;手持设备的有:Plam、WinCE、EPOC;互联网方面的有:uCLinux
2、、uC/OS-II.(记住其中五种)第二章l 任务:任务是一种程序实体,实质上时一个线程。l uC/OS-II的任务组成:任务程序代码(任务的执行部分)、任务推栈(保存任务工作环境)、任务控制块(保存任务属性)l uC/OS-II的任务有两种:用户任务和系统任务;其中系统任务有分为:空闲任务和统计任务,空闲任务是用户应用程序必须使用的,统计任务是应用程序可以根据实际需要来选择使用的。l 任务的5种状态:睡眠状态、就绪状态、运行状态、等待状态、中断服务状态。要重点看一下P17页的图2-2。在这些状态中睡眠状态只能直接进入就绪状态,就绪状态和中断服务状态可以直接进入运行状态,就绪状态可以直接进入睡
3、眠状态和运行状态,中断服务状态只能直接进入运行状态,等待状态可以直接进入除了中断服务状态外的其他三种状态。运行状态可以进入其他四种状态。等待状态有:延时等待、请求等待和任务挂起等。l 临界段:为了有效地对中断进行控制,在任务的代码里可使用uC/OS-II定义的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来控制任务何时响应中断,何时屏蔽中断。在运行这两个宏之间的代码时是不会响应中断的,这种受保护的代码段叫做临界段。作用:使临界段中的代码不能被中断,以保护一些不能被中断的用户代码(要求不受干扰地连续运行),保证系统的正常工作。说明在临界段中不能调用uC/OS-II
4、提供的系统函数,否则可能引起系统崩溃。l 关中断asm(“DI”)和OS_ENTER_CRITICAL();开中断asm(“EI”)和OS_EXIT_CRITICAL()。l uC/OS-II最多有64个任务,优先级为0的任务的优先级最高,优先级为63的任务的优先级最低。重点看明白课本P21页的例2-3.l P22-P23页,给出三个参数及堆栈增长方向,要知道如何创建任务。见后面的程序题l 看名称写含义P26,OSTCBDly表示任务等待的时限(节拍数)、OSTCBStat表示任务的当前状态标志、OSTCBPrio表示任务的优先级别、OS_STAT_RDY表示任务处于就绪状态、OS_STAT_
5、SEM表示任务处于等待信号量状态、OS_STAT_MBOX表示任务处于等待消息邮箱状态、OS_STAT_Q表示任务处于等待消息队列状态、OS_STAT_SUSPEND表示任务处于挂起状态、OS_STAT_MUTEX表示任务处于等待互斥型信号量状态。l uC/OS-II管理任务的两条链表:空任务链表(单向)、任务块链表(双向)l uC/OS-II操作系统内核的主要工作就是对任务进行管理和调度。对任务就绪表的操作详细看P30的例2-5和P26-P27页。如何从任务就绪表中获取优先级别最高的就绪任务的代码如下:y=OSUnMapTa1OSRdyGrp;x= OSUnMapTa1OSRdyTb1y;p
6、rio=(y<<3)+x;或y=OSUnMapTa1OSRdyGrp;prio=(INT8U)(y<<3)+ OSUnMapTa1OSRdyTb1y;OSUnMapTa1共有256个元素,其定义如下:INT8U const OSUnMapTa1=/0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1504540 1 0 20 1 0 30 1 0 20 1 0645474546454/除了标注的之外,其余的每一列都相同;l 多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行上述工作叫做任务的调度。l
7、任务调度执行任务调度不一定需要任务切换l 何如获得运行就绪任务块的指针。P33l OSTCBCur的作用:指向正在运行任务控制块的指针;OSTCBFreeList的作用:指向空任务控制块链表的表头。l P40页的程序题例2-6,给出三个参数及堆栈增长方向,要知道如何创建任务l P46任务的挂起和恢复,记住函数名称及用法。程序题,一般为一句话小程序题。主要类型为:将优先级为x的任务挂起或恢复、将正在运行的任务挂起或者恢复、将只知道控制块的任务挂起或恢复。l 任务优先级的修改及删除P53,要求知道名称及用法。第三章l 中断的响应过程(简答):uC/OS-II系统收到中断请求后,如果这时CPU处于中
8、断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子程序;当中断服务子程序的运行结束后,系统将会根据情况返回到被中止的任务继续运行,或者转向运行另一个具有更高优先级别的就绪任务。l 时钟:任何操作系统都要提供一个周期性的信号源,以提供系统处理诸如延时、超时等与时间有关的事件,这个周期性的信号源叫做时钟l 时间节拍:系统时钟两次中断之间间隔的时间叫时钟节拍。作用:为系统提供时钟,并以其为最小时间单位来提供系统处理诸如延时、超时等与时间有关的事件。l 要求会用两种延时P88-P90。任务延时函数OSTimeDly()和OSTimeDlyHMSM()
9、,了解取消任务延时函数OSTimeDlyResume(),此外还要理解好OSTimeTick函数(),它是时钟节拍服务函数,作用是在每个时钟节拍了解每个任务的延时状态。l 钩子函数OSTimeTickHock()的简单用法,可不见,不要求BOOLEAN InterKey=FALSE;extern BOOLEAN InterKey;INT16U InterCtr=0;void OSTimeTickHook(void) if(InterCtr=10000) InterKey=TURE; InterCtr+;l 获取和设置系统时间P93获得系统的时间函数OSTimeGet(),一般有OSTime=
10、OSTimeGet(); 设置系统的时间函数OSTimeSet(),如设置系统的时间节拍数OSTime为10,代码为OSTimeSet(10);l 全局变量OSTime用来记录系统发生的时间节拍数。OSTime=OSTimeGet();第四章l 事件控制块:用来表述事件的数据结构l uC/OS-II中的事件有三类:分别是信号量、邮箱(消息邮箱)(互斥型信号量)、消息队列。作用:使临界段中的代码不能被中断,以保护一些不能被中断的用户代码(要求不受干扰地连续运行),保证系统的正常工作。l 程序的三个参数:信号量,消息邮箱,消息队列,若是要求四个参数,则再写多一个“互斥型信号量”l 信号量的创建、请
11、求和发送OS_EVENT *Fun_Semp; /声明信号量Fun_Semp=OSSemCreate(1); /定义信号量,并使信号量计数器的初值为1OSSemPend(Fun_Semp,0,&err); /请求信号量OSSemPost(Fun_Semp); /发送信号量l P140 六个参数,给出名字写意思OSQSize 数组的长度 OSQEntries 已存放消息指针的元素数目OSQStart 指向消息指针数组的起始地址 OSQEnd 指向消息指针数组结束单元的下一个单元OSQIn 指向插入一条消息的位置OSQout 指向被取出消息的位置 第五章l P156创建请求发送 (程序)第
12、六章l P168 创建内存分区定义一个用来存储INT16U类型的数据,有10个内存块,每个内存块长度为10的内存分区的代码如下:INT16U IntMemBuf1010; 见后面的程序题l P170 创建空内存控制块链表 程序用OS_MemInit()定义并初始化一个空内存控制块链表 OS_MAX_MEM_PART表示空内存控制块的最大数目l P172 程序 重点内容见后面的程序题l P173 请求获得内存块见后面的程序题l P174 释放一个内存块见后面的程序题l P179查询一个内存分区的状态,了解例6-4OS_MEM *CommTxBuffer;OS_MEM_DATA MemInfo;O
13、SMemQuery(CommTxBuffer, MemInfo);l 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 控制是否使用内存块管理函数的使能信号 O
14、S_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的任务的优先级最低。
15、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的作
16、用是指定数组的长度,OSQOut的作用是指向被取出消息的位置。8 任何就绪表数组OSUnMapTb19=0, OSUnMapTb110=19 除了uC/OS-II,举出三个你所知道的嵌入式系统的名称:VxWorks、pSOS和Windows CE等。10 uC/OS-II的系统任务有两个:用户任务和系统任务。用户应用程序必须使用其中的空闲任务。11 如果希望应用程序中最多任务个数为10,则OS_LOWEST_PRIO的值应为1112 uC/OS-II的任务有三个组成部分:任务程序代码、任务堆栈、任务控制块。13 在OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个
17、宏之间的代码是不会响应中断的,这种受保护的代码段叫做临界段。14 OSTCBFreeList的作用:指向空任务控制块链表的表头。OSTCBCur的作用:指向正在运行任务控制块的指针15 多任务系统中,令CPU中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行上述工作叫做任务的调度。16 全局变量OSTime用来记录系统发生的时间节拍数。17 消息队列的队列控制块中的OSQEnd的作用是指向消息指针数组结束单元的下一单元,OSQEntries的作用是已存放消息指针的元素数目,OSQIn的作用是指向插入一条消息的位置。18 任何就绪表数组OSUnMapTb17=0, O
18、SUnMapTb114=1二、 简单题1 简述临界段的基本概念及其作用,为什么要用到临界段?答:在OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()两个宏之间的代码是不会响应中断的,这种受保护的代码段叫做临界段。作用:使临界段中的代码不能被中断,以保护一些不能被中断的用户代码(要求不受干扰地连续运行),保证系统的正常工作。2 什么叫时钟节拍,它有什么作用?答:时间节拍:系统时钟两次中断之间间隔的时间叫时钟节拍。作用:为系统提供时钟,并以其为最小时间单位来提供系统处理诸如延时、超时等与时间有关的事件。3 简述信号量或信号量集的工作过程?4.互斥型信号量是如何防止优先级反
19、转现象出现的?答:使获得信号量任务的优先级别在使用共享资源期间暂时提升到所有任务最高优先级的高一个级别上,以使该任务不被其他任务所打断,从而能尽快地使用完共享资源并释放信号量;然后再释放信号量之后,再恢复该任务原来的优先级别。5. uC/OS-II中有哪些链表?并说明是单向的或双向的?答:空任务链表(单向)、任务块链表(双向)、空事件控制块链表(单向)、空队列控制块链表(单向)、空信号量集标志组表链表(单向)、信号量集等待任务链表(双向)、空内存控制块链表(单向)。6.说明延时函数OSTimeDly()与OSTimeDlyHMSM()的区别?两函数所带的参数不一样,前者只带一个参数,以时钟节拍
20、数为单位,后者有4个参数,分别为时、分、秒和毫秒。OSTimeDlyHMSM()通过调用OSTimeDly()实现延时OSTimeDly()通过设置OS_TCB结构的延迟位OSTCBDly实现节拍延迟,所以调用OSTimeDlyResume()可以实现任务的恢复,因为该函数通过改变延迟位OSTCBDly实现任务恢复对于OSTimeDlyHMSM()函数,如果调用的时间换算成的节拍数小于65536,则可以调用OSTimeDlyResume()实现任务恢复;如果大于65536个时钟节拍,则调用OSTimeDlyResume也无法恢复任务,因为本函数并不是通过修改OSTCBDly位实现7.如何在任务
21、就绪表中查找具有最高优先级的就绪任务?答:P31-P328.什么叫优先级反转?这种现象会在什么情况下发生?有什么危害?答:在可剥夺型内核中,当任务以独占方式使用资源时,会出现低优先级任务先于高优先级任务而被执行的现象,这种现象叫做任务优先级反转。出现原因:因为一个优先级别低的任务在获得了信号量使用共享资源期间,被具有较高优先级别的任务所打断而不能释放信号量,从而使正在等待这个信号量的更高级别的任务因得不到信号量而被迫处于等待状态,在这个期间,就让优先级别低于它而高于占据信号量的任务的任务先运行了。危害:如果介于使用信号量的两个任务优先级别中间的中等优先级别任务较多,会极大地恶化高优先级别任务的
22、运行环境,使系统不能如期运行。三、 程序题1. 创建一个名为MyTask,优先级为3,堆栈大小为512个字节的任务。MyTask每执行一次,延时20s,延时期间,每隔20个时钟节拍在屏幕上显示一次MyTask的延时还剩下多少个时钟节拍。假设硬件平台为80X86系统,写出关键性代码即可。 INT32U stime=0,jiepai=0; #define TASK_STK_SIZE 512 OS_STK TaskStartStkTASK_STK_SIZE;void main() OSTaskCreate ( MyTask, (void*)0, & TaskStartStkTASK_STK_
23、SIZE-1,/支持堆栈向下增长,若为向上/则为& TaskStartStk0 3 ); MyTask(void *pdata) char s6; for( ; ; ) if(stime%10=0) jiepai+; sprintf(s,”%6d“,20*1000/5-10*(jiepai-1); /按一个时钟节拍5ms PC_DispStr(5,5,s,DISP_BGND_BLACK+DISP_FGND_WHITE); ostime=OSTimeGet(); OSTimeDlyHMSM(0,0,20,0); 2使优先级为40的任务脱离就绪状态。 If(OSRdyTb140>&g
24、t;3&=-OSMapTb140&0x07)=0) OSRdyGrp&=-OSMapTb140>>3;3.(1)一个任务中将任务自己挂起 OSTaskSuspend(OS_PRIO_SELF); 或者OSTaskSuspend(0xFF); (2)将优先级为3的任务恢复 OSTaskResume(3);4.创建一个初始信号为0的信号量集并向信号量集的第2位和第3位发送信号1. OS_FLAG_GRP *Sem_F; Sem_F=OSFlagCreate(0,&err);/创建信号量集,并初始化信号为0 OSFlagPost( Sem_F, (OS_F
25、LAGS)12,/给第第2位和第3位发送信号 OS_FLAG_SET,/信号值1 &err );若要求请求信号量集则添加代码如下:(这部分一般不要求,简单了解即可) OSFlagPend( Sem_F, /请求信号量集 (OS_FLAGS)12; /请求第第2位和第3位信号 OS_FLAG_WAIT_SET_ALL, /信号都为1表示有效 0, &err );若要求查询信号量集则添加代码如下:Flags=OSFlagQuery(Sem_F,&err); switch(Flags)5.使优先级为11的任务进入就绪状态 OSRdyGrp|= OSMapTb111>>3; OSRdyTb111>>3|= OSMapTb111&0x07;6.(1)使优先级为2的任务的优先级改为4 O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽水利水电职业技术学院单招职业倾向性测试题库必考题
- 2026年重庆文理学院单招职业适应性考试题库必考题
- 2026年哈尔滨铁道职业技术学院单招职业倾向性测试题库附答案
- 2026年株洲师范高等专科学校单招职业适应性测试题库及答案1套
- 2026年重庆传媒职业学院单招综合素质考试必刷测试卷必考题
- 2026年长春医学高等专科学校单招职业适应性考试必刷测试卷及答案1套
- 2026年天津职业大学单招职业倾向性考试必刷测试卷及答案1套
- 2026年满洲里俄语职业学院单招职业技能考试题库附答案
- 2026年甘肃卫生职业学院单招职业适应性测试必刷测试卷必考题
- 2026年黑龙江三江美术职业学院单招职业适应性测试题库新版
- 华为ICT大赛2025-2026中国区(云赛道)高分备考试题库500题(含答案解析)
- 药品相关法律法规培训
- 专题03 立方根重难点题型专训(3个知识点+8大题型+3大拓展训练+自我检测)(解析版)
- ICU气管切开护理技术及并发症预防
- 元代服饰的讲解
- 粮食入仓安全培训课件
- 2025-2030工业机器人细分领域渗透率提升路径
- 2025-2026学年人教版三年级上册数学期中测试卷
- 村干部安全生产培训资料课件
- 创新创业计划书(33篇)
- 剪刀车安全操作要求培训课件
评论
0/150
提交评论