天津工业大学嵌入式期末复习_第1页
天津工业大学嵌入式期末复习_第2页
天津工业大学嵌入式期末复习_第3页
天津工业大学嵌入式期末复习_第4页
天津工业大学嵌入式期末复习_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

…写代码。)嵌入式系统的整体架构|功能层I1软件层…写代码。)嵌入式系统的整体架构|功能层I1软件层II中间层III硬件层应用程序文件系统图形用户接口任务管理实时操作系统(RTOS)BSP/HAL硬件抽象层/板极支持包D/A嵌入式微处理器通用接口A/DROMI/OSDRAM人机交互接口II嵌入式期末重点一、单选题(1分*15)二、填空题(1分*15)三、简答题(5分*5)四、程序题(12分+13分)(来自操作系统实验)五、综合题(20分)(实验,给图和功能进行分析和编程,任务优先级、中断※硬件§操作模式和特权极别§操作模式和特权极别两种操作模式分别为:处理者模式(handlermode)和线程模式(threadmode)。两种特权等级分别为:特权级和用户级。1、操作模式转换1、复位后,CM3默认进入特权级线程模式;2、从特权级切换到用户级,置位CONTROL[0];3、用户级切换回特权级,必须执行指令SVC,触发SVC异常,在异常服务例程中清零CONTROL]。]才能回到特权级;4、处理异常服务例程必须使用特权级HANDLEER模式;5、由特权级线程模式触发异常,异常处理完成后依然回到特权级线程模式;由用户级线程模式触发异常,异常处理完成后依然回到用户级线程模式。2、R13栈指针与处理模式广处理榄式►胎终便用忖护厂可用MSPG程模式YMSP(主栈指针):默认栈指针,被操作系统(OS)内核以及异常处理使用。PSP(进程栈指针):被用户应用程序代码使用。3、特殊寄存器与处理模式Cortex-M3中的特殊功能寄存器包括:程序状态寄存器组(xPSR)(APSR、IPSR、EPSR)中断屏蔽寄存器组(PRIMASK,FAULTMASK,以及BASEPRI)控制寄存器(CONTROL)CONTROL寄存器只有最低两位[1:0]有意义。CONTROL寄存器主要用来定义特权等级、选择堆栈指针。CONTROL]。]CONTROL[1]0特权模式主堆栈1用户模式进程堆栈执行模式"进入方式.堆栈陆"用途卩特权线程模式•儿复也2.在箱权处理樓式F使罚MSR指令清零CONTROLfi?]使用SP_iunui:1-复位后默认"2在退出特奴处珪模式前,修改返叵直EXC_RETITRN[3!(]]为OblOCl-J.清零CXXNTKOL[1]使用SPjJJCiCCSSt-i-在退出特杈址理嘆式前「假比返回茁EXCH_RETLTPNpa]为ObllOl2,K-fcCONTROL(1]^蛭程模弍(持农或非特权、4-SP_proccss參用于撫咋杀统的任务狀态.非持权线程祺式卫在特祝线程模式或特权处區後过下便用MSR指率匿位—持权处理模式.出现异常.只能使用SPiUfrinp特磁僵横式半矚山前|在亦若台和操性系统申用干申断状态,特殊寄存器只能被专用的MSR/MRS指令访问,而且它们也没有与之相关联的访问地址,即存储器地址。MRS通用寄存器,特殊寄存器;读特殊功能寄存器的值到通用寄存器MSR特殊寄存器,通用寄存器;写通用寄存器的值到特殊功能寄存器CONTROL寄存器也是通过MRS和MSR指令来操作的:MRSR0,CONTROL;将CONTROL寄存器读入R0MSRCONTROL,R0;将R0寄存器读入CONTROL§异常处理所有的异常均在handler模式下处理进入异常时,自动压栈,退出异常时,自动出栈什么时候手动??§存储系统CM3支持两种存储模式:小端模式、大端模式(P85)小端模式,高地址存高字节,低地址存低字节大端模式,高地址存低字节,低地址存高字节若存0x12345678,则小端:0x12345678大端:0x78563412位带操作(P75)有两个区(内部的外设和RAM)2个,记住这个2!§异常向量表,中断优先级,中断机制(p97,pl28)1、异常向量表编号类型优先级1reset-32NMI-23hardfault-14异常可编程•♦••♦•15可编程16中断可编程IRQ0•♦••♦•255可编程IRQ2391、2、3不可编程,不能被除能,不能被屏蔽,优先级不能配置。4-15可以被除能,但是除能后可以上访到hardfault2、中断优先级定义规则举例:1)2位有效bit7bit6bit5bit4bit3bit2bit1bitO有效无效优先等级:0x00、0x40、0x80、0xc0

2)3位有效bit7bit6bit5bit4bit3bit2bitlbitO有效无效优先等级:0x20、0x40、0x60、0x80、0xc0、0xe03)4位有效bit7bit6bit5bit4bit3bit2bitlbitO有效无效优先等级:0x10、0x20、0x30、0x40、0x60、0x60、0x70、0x80、0x90、0xA0、0xB0、0xC0、0xD0、0xE0§咬尾中断(128)当处理器在响应某异常时,如果又发生其它异常,但它们优先级不够高,则被阻塞。在当前的异常执行返回后,系统处理悬起的异常时,倘若还是先POP,然后又把POP出来的内容PUSH回去,白白浪费CPU时间,因此,uc/os-III继续使用上一个异常已经PUSH好的成果,消除了压栈和出栈时间,前后只执行了一次入栈/出栈操作。如图9.2所示。§晚到(的高优先级)异常CM3的中断处理还有另一个机制,它强调了优先级的作用,这就是“晚到的异常处理”。当CM3对某异常的响应序列还处在早期:入栈的阶段,尚未执行其服务例程时,如果此时收到了高优先级异常的请求,则本次入栈就成了为高优先级中断所做的了——入栈后,将执行高优先级异常的服务例程。可见,它虽然来晚了,却还是因优先级高而受到偏袒,低优先级的异常为它“火中取栗”。比如,若在响应某低优先级异常#1的早期,检测到了高优先级异常#2,则只要#2没有太晚,就能以“晚到中断”的方式处理——在入栈完毕后执行ISR#2,如图9.3所示。如果异常#2来得太晚,以至于已经执行了ISR#1的指令,则按普通的抢占处理,这会需要更多的处理器时间和额外32字节的堆栈空间。在ISR#2执行完毕后,则以刚刚讲过的“咬尾中断”方式,来启动ISR#1的执行。§vector可以于哪两个区?为了支持动态重分发中断,CM3允许向量表重定位——从其它地址处开始定位各异常向量。这些地址对应的区域可以是代码区,但更多是在RAM区。§流水线(p88)M3为三级流水线架构

取指(Fetch)用来计算下一个预取指令的地址,从指令空间中取出指令,或者自动加载中断向量。(处理指令并将结果写回寄存器)译码(Decode)――译码指令,产生操作数的地址,产生LR寄存器值。(识别将要被执行的指令进行分支预测,跳转指令不会清空流水线)执行(Execute)执行指令,产生回写与执行结果,以及进行逻辑运算并产生分支跳转。(从寄存器装载一条指令PC总是指向正在取指的指令)§指令集开关中断指令,访问寄存器指令,CPU进入睡眠指令。清零(开中断)MRSR0,PRIMASK清零(开中断)MRSR0,PRIMASKANDR0,~(1<<0)MSRPRIMASK,R0清零CPSIEI置位(关中断)MRSR0,PRIMASKORRR0,1<<0MSRPRIMASK,R0置位CPSIDI进入睡眠:等待中断WFI;等待事件:WFE※操作系统§任务的5种状态,什么时候属于休眠态在uC/OS-III中,任务有5种状态,分别为睡眠状态、就绪状态、运行状态、等待状态和被中断状态匚休眠状态:任务在没有被配备任务控制块或被剥夺了任务控制块时的状态叫做任务的睡眠就绪状态:系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,这时任务的状态叫做就绪状态。运行状态:处于就绪状态的任务如果经调度器判断获得了CPU的使用权,则任务就进入运行状态等待状态:正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时该任务就会把CPU的使用权让给别的任务而使任务进入等待状态。中断服务状态:一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态。§任务三要素:从存储结构看,uc/OS-III的任务由三个部分组成:任务程序代码CODE任务堆栈(用来保存任务的工作环境)STK任务控制块(记录了任务的各个属性)OS_TCB第一个程序写main函数,剩下写main中建什么任务,prio等任务的概念任务是实现某种功能的代码段,通常是一个无限循环。uc/OS-III的任务有两种:用户任务和系统任务。用户任务:由应用程序设计者编写系统任务:由系统提供uc/OS-III定义了5个系统任务:空闲任务、时钟节拍任务、统计任务、定时任务,中断服务管理任务uC/OS-III可以管理无限个任务uC/OS-III总是运行进入就绪的优先级最高的任务。uC/OS-III的一个优先级可以对应多个任务。从代码看,uc/OS-III的任务就是一个函数。§优先级:分配(中断最高,空闲最低)・uc/os-III中,每个任务的优先级以0,1,2,……来表示,数字越小,优先级越高。用户可以设置需要任务的实际数目,OS_CFG.H中定义的常数OS_CFG_PRIO_MAX控制任务优先级的实际数目系统总是把最低优先级别OS_CFG_PRIO_MAX-1自动赋给空闲任务。如果应用程序使用了统计任务,系统还会将OS_CFG_PRIO_MAX-2自动赋给统计任务。•任务优先级的确定,需要在任务创建函数OSTaskCreate()中指定。一个优先级可以对应多个任务,反之不行。•什么是优先级反转(图3分,文字说明2分)(p174)当一个高优先级任务通过信号量机制访问共享资源时,该信号量已被一低优先级任务占有,而这个低优先级任务在访问共享资源时可能又被其它一些中等优先级任务抢先,因此造成高优先级任务被许多具有较低优先级任务阻塞,实时性难以得到保证。优先级反转是实时系统中的一个常见问题,仅存在于基于优先级的抢占式内核中。图13-4显示了一种优先级反转的情况。任务H的优先级高于任务M,任务M的优先级高于任务L。TaskH(5)(13)TaskM(9)Task胡TaskLReleasesSemaphoreTaskHPreemptsTaskLTaskH(5)(13)TaskM(9)Task胡TaskLReleasesSemaphoreTaskHPreemptsTaskL⑷SemaphoreOwnedbyTaskL(6).TaskL(1)(3)—-何一一{11)11TaskMPreemptsTaskL怎样解决反转(互斥信号量)(P176)Unbounded

Priority

Inversion互斥信号量是一种特殊的二进制信号量,是一种被定义为OS_MUTEX数据类型的内核对象,只能被任务使用。用于解决优先级反转问题。图显示了优先级反正是如何通过mutex解决的。任务H想要访问任务L占用的共享资源。考虑到任务L占用这个资源,uC/OS-III提升任务L的优先级与任务H相同。这样就防止了任务L被任务M抢占(被中等优先级的任务抢占)。任务L继续访问这个资源,但现在任务L的优先级等于任务H的优先级。注意,任务H被挂起因为它要等待任务L释放mutex。换句话说,任务H被插入到mutex的挂起队列中。任务L对共享资源的访问执行完毕并释放mutex。uC/OS-III恢复任务L到原有的优先级。然后uC/OS-III将这个mutex交给任务H。注意,并不是任务L已经全部执行完毕,而是当它释放信号量时就会发生调度而转到高优先级任务。§什么叫基于优先级的调度(P97)・任务调度:确定下一个要执行的任务。・uC/OS-III的两个任务调度器:任务级任务调度中断级任务调度・uC/OS-III的两种任务调度算法:可剥夺型调度时间片轮转调度■可剥夺型调度(preemptive)“可剥夺型”意味当一个事件发生时,并且使得一个更高优先级的任务就绪时,uC/OS-III就将CPU的控制权交给高优先级任务。当一个任务提交信号量、发送消息给一个高优先级的任务,当前的任务就会被停止,更高优先级的任务获得CPU的控制权。・类似的,当中断服务程序ISR提交信号量或发送消息给一更高优先级的任务,那么中断返回的时候不会返回到原任务,而是高优先级任务。§资源独占:全局变量不能完成对资源独占哪种可独占,哪种不可独占共享资源可以是:变量(静态的或全局的)、结构体、内存空间、I/O等资源共享方式什么时候该用关中断能很快地结束访问共享资源,不推荐使用这种方法,因为会导致中断延迟。锁调度器访问共享资源比较久时。信号量当该共享资源经常被多个被使用时。但信号量可能会导致优先级反转。mutex推荐使用这种方法访问共享资源,尤其当任务要访问的共享资源有截止时间。uC/OS-III的mutex有内置的优先级,这样可防止优先级倒置。然而,mutex方式慢于信号里方式,mutex需执行额外的操作:改变信号量的优先级。独占共享资源的最快和最简单方法是关中断§同步:两灯同步,灯和中断同步….什么是同步,同步方式(P184第14章任务同步)任务同步:嵌入式系统中的各个任务是为同一个大的任务服务的子任务,不可避免的要共享某些资源或共同协作来完成某些工作。为了实现各个任务之间的合作和无冲突的运行,在各任务之间必须建立一些制约机制。任务之间的这种制约性的合作运行机制即成为任务间的同步。两种基本同步机制:信号量和事件标志。信号量:更多的被用来实现任务间的同步以及任务和ISR间的同步。事件标志组:任务需要与多个事件的发生同步时使用(与同步、或同步)。单向同步:没有数据交互,可表明发布信号量的ISR或任务是否运行过。(一边发送信号量,另一边接收)信号量之资源共享:OSSemPend和OSSemPost成对使用注意:ISR中不能使用信号量信号量之任务同步:OSSemPost和OSSemPend只使用其一注意:ISR中只能调用OSSemPost()双向同步:双向同步只能用于任务间的同步,而不能用于任务和ISR之间的同步。有时可能需要使多个任务同时开始执行。4、多任务同步:通过广播信号量来使多个任务同步是一种经常使用的技术。多个任务等待一个信号量。§任务优先级划分:给图划分优先级(崔军的ppt)(操作系统3(任务设计))一、任务划分的目标:首要目标是满足“实时性”指标:即使在最坏的情况下,系统中所有对实时性有要求的功能都能正常实现;任务数目合理:对同一个应用系统,合理合并一些任务,使任务数目适当少一些比较有利;简化软件系统:一个任务要实现其功能,除了需要操作系统的调度功能支持外,还需要操作系统的其它服务功能支持,合理划分任务,可以减少对操作系统的服务要求,简化软件系统;降低资源需求:合理划分任务,减少或简化任务之间的同步和通信需求,就可以减少相应数据结构的内存规模,从而降低对系统资源的需求。二、任务划分原则:1、以CPU为中心,将与输入输出设备相关的功能分别划分为独立的任务。2、发现“关键”功能,将其最关键部分剥离出来,用一个独立任务(或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通信机制沟通。3、发现紧迫功能,将其最紧迫部分剥离出来,用一个独立的高优先级任务(或ISR)完成,剩余部分用另外一个任务实现,两者之间通过通信机制沟通。4、对于既“关键”又“紧迫”的功能,按“紧迫”功能处理。5、将消耗机时较多的数据处理功能划分出来,封装为低优先级任务。6、将关系密切的若干功能组合为一个任务,达到功能聚合的效果。7、将由相同事件触发的若干功能组合成为一个任务,免除事件分发机制。8、将运行周期相同的功能组合为一个任务,从而免除时间事件分发机制。9、将若干固定顺序执行的功能组合为一个任务,免除同步接力通信的麻烦。三、任务优先级:中断关联性:与中断服务程序(ISR)有关联的任务应该安排尽可能高的优先级,以便及时处理异步事件,提高系统的实时性。如果优先级安排得比较低,CPU有可能被优先级比较高的任务长期占用,以致于在第二次中断发生时连第一次中断还没有处理,产生信号丢失现象;紧迫性:因为紧迫任务对响应时间有严格要求,在所有紧迫任务中,按响应时间要求排序,越紧迫的任务安排的优先级越高。紧迫任务通常与ISR关联;关键性:任务越关键安排的优先级越高,以保障其执行机会;频繁性:对于周期性任务,执行越频繁,则周期越短,允许耽误的时间也越短,故应该安排的优先级也越高,以保障及时得到执行;快捷性:在前面各

温馨提示

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

评论

0/150

提交评论