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

下载本文档

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

文档简介

嵌入式系统复习提纲第一章什么是嵌入式系统?IEEE(国际电气和电子工程师协会)的定义是什么?一般定义是什么?根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置一般定义:“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格规定的专用计算机系统。”广义上讲,但凡带有微处理器的专用软硬件系统都可称为嵌入式系统。从狭义上讲,我们愈加强调那些使用嵌入式微处理器构成独立系统,具有自己操作系统,具有特定功能,用于特定场所的嵌入式系统。这里所谓的嵌入式系统是指狭义上的嵌入式系统。嵌入式系统有哪些重要的特性?(1)系统内核小由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,因此内核较之老式的操作系统要小得多。例如ENEA企业的OSE分布式系统,内核只有5K,而Windows的内核则要大得多。(2)专用性强嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。虽然在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不停进行修改。同步针对不一样的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不一样的概念。(3)系统精简嵌入式系统一般没有系统软件和应用软件的明显辨别,不规定其功能设计及实现上过于复杂,这样首先利于控制系统成本,同步也利于实现系统安全。(4)高实时性OS这是嵌入式软件的基本规定,并且软件规定固态存储,以提高速度。软件代码规定高质量和高可靠性、实时性。实时系统的定义是什么?答:实时系统的对的性依赖于运行成果的逻辑对的性和运行成果产生的时间对的性,即实时系统必须在规定的时间范围内对的地响应外部物理过程的变化。4,在经典的嵌入式系统构成中,可以分为哪四层?每一层详细是一般包括哪些单元?中间层BSP有哪些基本功能?答:硬件层,中间层,软件层,功能层中间层BSP功能之一:硬件初始化片级初始化:重要完毕CPU的初始化,把CPU从上电时的缺省状态逐渐设置成为系统所规定的工作状态。板级初始化:完毕CPU以外的其他硬件设备的初始化。除此之外,还要设置某些软件的数据构造和参数,为随即的系统级初始化和应用程序的运行建立硬件和软件环境。系统级初始化:这是一种以软件初始化为主的过程,重要进行操作系统初始化。BSP将控制转交给操作系统,由操作系统进行余下的初始化操作。包括加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,例如网络系统、文献系统等;最终,操作系统创立应用程序环境并将控制转交给应用程序的入口中间层BSP功能之二:尽管BSP中包括硬件有关的设备驱动程序,不过这些设备驱动程序一般不直接由BSP使用,而是在系统初始化过程中由BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随即的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。5.嵌入式处理器可以分为几大类?每一类代表的器件有哪些?第二章1,嵌入式硬件系统的基本构造包括那些部分?(嵌入式微处理器、存储器、和输入输出)嵌入式处理器的三大部分是什么?(控制单元、算术逻辑单元和寄存器)2,什么是冯.诺依曼体系构造?什么是哈佛体系构造?各有哪些代表性的处理器?3复杂指令集计算机(cisc)和精简指令集计算机(risc)各有什么特点?类别CISCRISC指令系统指令数量诸多较少,一般少于100执行时间有些指令执行时间很长,如整块的存储器内容拷贝;或将多种寄存器的内容拷贝到存贮器没有较长执行时间的指令编码长度编码长度可变,1-15字节编码长度固定,一般为4个字节寻址方式寻址方式多样简朴寻址操作可以对存储器和寄存器进行算术和逻辑操作只能对寄存器对行算术和逻辑操作,Load/Store体系构造编译难以用优化编译器生成高效的目的代码程序采用优化编译技术,生成高效的目的代码程序4.在计算机体系构造中,什么是冯氏构造体系、哈氏构造体系?冯·诺伊曼体系构造也叫普林斯顿构造,它的最大特性是什么?哈佛构造,它的最大特性是什么?5.什么是CISC、RISC体系?其各自优、缺陷以及特点是什么?在指令数目上,CISC与RISC比较,哪种构造的指令数目多些?属于CISC的代表性微处理器有哪些?属于RISC的代表性处理器有哪些?ARM7TDMI属于哪种体系?6.对于多字节类型的数据,在存储器上有两种存储方式,分别是小端字节次序方式和大端字节次序方式,例如字符串数据“UNIX”的ASCII码数据{0x55,0x4E,0x49,0x58}在16位字长的微处理器上,以小端字节次序方式存储下来,取出时该微处理器变成大端字节次序方式,那么取出的字符串是什么,数据怎么表达?4,在无操作系统的嵌入式软件有哪几种实现方式?循环轮询系统,事件驱动系统(前后台)5.按软件构造分类,操作系统体系构造可以分为哪几种不一样的构造?(单体构造如嵌入式Linux,分层构造如MS-DOS和微内核构造如OS-9)每一种构造的代表性实例是什么?微内核构造下的软件体系构造怎样?阐明它的特点。(操作系统内核只包括至少的功能,如存储管理和进程管理;其他的操作系统组件以中间件的形式存在于内核之外;设备驱动程序完全从内核中剥离,独立成为一层;易于扩展、调试以便)6.什么是轮询系统?什么是前后台系统(事件驱动系统)?循环轮询系统:(PollingLoop)最简朴的软件构造,程序依次检查系统的每个输入条件,一旦条件成立就进行对应的处理事件驱动系统:(Event-Drivensystem)事件驱动系统是能对外部事件直接响应的系统。它包括前后台、实时多任务、多处理器等,是嵌入式实时系统的重要形式7.多任务系统中,什么是占先式内核?什么是非占先内核?7.什么是设备驱动程序?设备驱动程序的重要功能有那些?直接与硬件打交道、对硬件进行控制和管理的软件。嵌入式硬件设备自身无法工作,需要软件来驱动,如初始化、控制、数据读写等8.嵌入式软件的目的有哪些?要优化哪些资源的使用?答:函数必须对的;源代码简洁、可读性好、可维护;实时性规定较高的代码可以运行得足够快;目的代码小且高效。总之,要优化对如下三种资源的使用:执行时间;存储空间;开发/维护时间。 9.函数的调用过程是怎样的?系统运行时,内存分布状况怎样?不一样的变量的存储和作用域怎样区别? 当一种函数被调用时:在内存的栈空间当中为其分派一种栈帧,用来寄存该函数的形参和局部变量;把实参变量的值复制到对应的形参变量;控制转移到该函数的起始位置;该函数开始执行;控制流和返回值返回到函数调用点。10。什么是可重入函数?可以被一种以上的任务调用,而不必紧张数据的破坏。可重入型函数任何时候都可以被中断,一段时间后来又可以运行,而对应数据不会丢失。可重入型函数只使用局部变量,即变量保留在CPU寄存器或栈中12.什么是资源?(程序运行时可使用的软、硬件环境统称为资源)什么是共享资源?(可以被一种以上任务使用的资源叫做共享资源)什么是互斥?(为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥)13.什么是进程?进程应当包括哪些东西?一种进程应当包括:程序的代码;程序的数据;PC中的值,用来指示下一条将运行的指令;一组通用的寄存器的目前值,堆、栈;一组系统资源(如打开的文献)总之,进程包括了正在运行的一种程序的所有状态信息。14.什么是任务?(在许多嵌入式操作系统当中,一般把可以独立运行的实体称为“任务)任务切换是怎样的?(当多任务内核决定运行此外的任务时,它保留正在运行任务的目前状态,即CPU寄存器中的所有内容。这些内容保留在任务自已的栈区之中。 入栈工作完毕后来,就把下一种将要运行的任务的目前状态从任务的栈中重新装入CPU的寄予存器,并开始下一种任务的运行。这个过程就称为任务切换)任务有哪三种基本状态?就绪,执行,阻塞15.描述任务的数据构造是什么?(描述任务的数据构造:任务控制块)包括哪些内容?(任务ID、任务的状态、任务的优先级;CPU上下文信息:通用寄存器的值、PC寄存器的值、程序状态字、栈指针的值;假如在该OS中,任务描述的是进程,则还应包括其他的某些内容,如段表地址、页表地址等存储管理方面的信息;根目录、文献描述字等文献管理方面的信息。)17.任务在那些时间可以调度?当一种新的任务被创立时,是执行新任务还是继续执行父任务?当一种任务运行完毕时;当一种任务由于I/O、信号量或其他的某个原因被阻塞时;当一种I/O中断发生时,表明某个I/O操作已经完毕,而等待该I/O操作的任务转入就绪状态;在分时系统中,当一种时钟中断发生时。18.嵌入式系统任务调度算法的评价指标有哪些?响应时间(responsetime):调度器为一种就绪任务进行上下文切换的时间,以及任务在就绪队列中等待的时间;周转时间(turnaroundtime):一种任务从提交到完毕所经历的时间;调度开销(overhead):调度算法在执行时所需要的时间和空间开销;公平(fairness):大体相称的两个进程所得到的CPU时间也应是大体相似的,防止饥饿(starvation);均衡:尽量使整个系统的各部分(CPU、I/O)都忙起来,提高系统资源的使用效率;吞吐量(Throughput):单位时间内完毕的任务数。19.什么是优先级调度算法?(优先级算法(PriorityScheduling):给每个任务设置一种优先级,然后在所有就绪任务中选择优先级最高的那个任务去运行)任务优先级有哪两种确定方式?(静态和动态两种)20.大多数RTOS调度器都采用基于优先级的可抢占调度算法,但在详细实现上要考虑哪些问题:(怎样设定各个任务的优先级?优先级是静态设置的还是动态可变的?算法的性能怎样,能否满足实时规定?)21.任务间通信可以有哪几种方式?共享内存(sharedmemory);消息传递(messagepassing);管道(pipe);信号(signal)。22.什么是代码的临界区?什么叫临界资源?对共享内存或共享文献的访问,也许会导致竞争条件的出现。我们把完毕此类事情的那段代码称为“临界区”(CriticalRegion),把需要互斥访问的共享资源称为“临界资源”。23有哪几种种措施,使得任何两个任务都不会同步出目前临界区中,就可以防止竞争条件的出现?1当一种任务进入临界区后,关闭所有的中断;当它退出临界区时,再打开中断。2可以采用多种基于繁忙等待(busywaiting)的方略,基本思绪是:当一种任务想要进入它的临界区时,首先检查一下与否容许它进入,若容许,就直接进入了;若不容许,就在那里循环地等待,一直等到容许它进入。24.什么是信号量?什么是原子操作?什么是P原语?什么是V原语?1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思绪是用一种新的变量类型(semaphore)来记录目前可用资源的数量。有两种实现方式:1)semaphore的取值必须不小于或等于0。0表达目前已没有空闲资源,而正数表达目前空闲资源的数量;2)semaphore的取值可正可负,负数的绝对值表达正在等待进入临界区的任务个数。信号量是由操作系统来维护的,任务只能通过初始化和两个原则原语(P、V原语)来访问。初始化可指定一种非负整数,即空闲资源总数。P、V原语作为操作系统内核代码的一部分,是一种不可分割的原子操作(atomicaction),在其运行时,不会被时钟中断所打断P原语:P是荷兰语Proberen(测试)的首字母。申请一种空闲资源(把信号量减1),若成功,则退出;若失败,则该任务被阻塞;V原语:V是荷兰语Verhogen(增长)的首字母。释放一种被占用的资源(把信号量加1),假如发既有被阻塞的任务,则选择一种唤醒之。25.怎样用信号量实现互斥?怎样用信号量实现同步?26.IO设备按数据组织分类包括哪两种类型?块设备:以数据块来作为信息的存储和传播单位,每个数据块均有一种地址,如磁盘;字符设备:以字符来作为信息的存储和传播单位,如打印机。27.CPU怎样与设备控制器当中的寄存器以及数据缓冲区有哪三种编址方式?采用哪三种措施实现IO的输入输出?I/O独立编址;内存映像编址;混合编址。程序循环检测方式(ProgrammedI/O);中断驱动方式(Interrupt-drivenI/O);直接内存访问方式(DMA,DirectMemoryAccess);第三章ARM处理器体系构造与指令集1.32位嵌入式微处理器的重要评价指标有哪些?功耗。一般的嵌入式微处理器均有三种运行模式:运行模式(operational);待机模式(standbyorpowerdown);停机模式(andclock-off)。功耗的评测指标是MIPS/W;代码存储密度。老式的CISC指令集计算机具有很好的代码存储密度。而RISC指令集计算机由于规定指令编码长度固定,虽然可以简化和加速指令译码过程,但为了实现与CISC指令集计算机相似的作业,往往需要更多的指令来完毕,从而增长了代码长度集成度。 嵌入式微处理器一般都为专用市场设计的,需要较高的集成度。但把所有的外围设备都集成到一种芯片上也不是一种好的处理方案。这是由于高集成度使芯片变得复杂,芯片引脚变密,增长了系统设计和测试的复杂性。因此,集成外围设备时必须要考虑简化系统设计,并缩短整个系统的开发周期。多媒体加速。 为实现多媒体加速功能,嵌入式微处理器的设计者在老式的微处理器指令集的基础上增长JPEG和MPEG解压缩的离散余弦变换指令。尚有某些半导体厂商针对智能手机和移动通讯市场的需求,将RISC微处理器和DSP集成在一种芯片上,如TI的OMAP。2.ARM7TDMI的关键部件有几种?分别是什么?3.ARM处理器可以执行两套指令系统,分别为ARM态和Thumb态,ARM指令和Thumb指令,指令长度上有什么区别?(32bits长(ARM状态)16bits长(Thumb状态))系统启动时,处理器处在哪种状态? (ARM态)7.程序计数器PC总是指向目前指令的下两条指令的地址,ARM处理器中,PC一般用那个寄存器?(R15)当ARM处理器处在ARM态时,PC为目前指令的地址加8字节,Thumb状态时,PC为目前指令的地址加几种字节?8.ARM处理器中,R13、R14、R15的功能各是什么,使用它们,细节上各自有什么尤其要注意的地方?9.ARM处理器有哪几种运行模式?各是什么?特权模式和顾客模式各包括哪些运行模式?处理器模式阐明备注顾客(usr)正常程序执行模式不能直接切换到其他模式系统(sys)运行操作系统的特权任务与顾客模式类似,但具有可以直接切换到其他模式等特权快中断(fiq)支持高速数据传播及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式中断(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式10.ARM容许多种寻址方式,例如MOVR0,R1,这里源操作数和目的操作数使用的都是寄存器寻址,那么指令LDRR0,[R1,#4],这里源操作数使用的寻址方式是叫什么?那么指令LDRR0,[R1],这里源操作数使用的寻址方式是什么?,该指令助记符的含义是什么?与LDR相对应的指令助记符是什么?11.ARM7使用了几级流水线,分别是什么?ARM9使用了几级流水线?分别是什么?ARM7:3级-取指,译码,执行。ARM9:5级-取指,指令译码,执行,缓冲/数据,回写。12.ARM微处理器的寄存器在逻辑上有多少个?分别是什么?13.ARM处理器支持哪几种异常?按响应异常的优先级分类,优先级最高的是什么?最低的是什么?进入、退出异常时,ARM处理器分别要执行什么操作?FIQ,IRQ(InterruptReQuest),未定义指令,预取中断,数据中断,复位,软件中断Softwareinterrupt。优先级最高:复位,最低:未定义指令。进入:拷贝CPSR到SPSR_<mode>,设置合适的CPSR位,保留返回地址到LR_<mode>,设置PC为对应的异常向量退出:1.(R14)中的值减去偏移量后存入PC,偏移将LR量根据异常的类型而有所不一样;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断严禁标志。14.在ARM处理器中,把CPSR或SPSR的内容读出到通用寄存器中,有什么尤其的规定?想修改CPSR寄存器的值为0XFF,应当用什么指令?怎么做?15.阅读分析代码,实现两个寄存器值的内容相加。;文献名:TEST1.S;功能:实现两个寄存器相加;阐明:使用ARMulate软件仿真调试 AREA Example1,CODE,READONLY ;申明代码段Example1 ENTRY ;标识程序入口 CODE32 ;申明32位ARM指令START MOV R0,#0 ;设置参数 MOV R1,#10LOOP BL ADD_SUB ;调用子程序ADD_SUB B LOOP ;跳转到LOOPADD_SUB ADDS R0,R0,R1 ;R0=R0+R1 MOV PC,LR ;子程序返回 END ;文献结束16.分析一段指令执行前后的变化PREr0=0x00000000,r1=0x00009000,Mem32[0x00009000]=0x01010101Mem32[0x00009004]=0x0202回写型前变址寻址:LDRr0,[r1,#0x4]!POSTr0=0x0202,r1=0x00009004前变址寻址:LDRr0,[r1,#0x4]POSTr0=0x0202,r1=0x00009000后变址寻址:LDRr0,[r1],#0x4POSTr0=0x01010101,r1=0x0000900417.完毕一种存储器数据块拷贝目的目的源高地址低地址拷贝存储地址r9r11r10注:r9——寄存源数据的起始地址r10——寄存目的起始地址r11——寄存源结束地址loopLDMIAr9!,{r0-r7};装载32字节并更新r9指针STMIAr10!,{r0-r7};存储32字节并更新r10指针CMPr9,r11;与否抵达结束地址BNEloop;不相等跳转第四部分1.μC/OS重要特点有哪些?公开源代码可移植性(Portable)绝大部分mC/OS-II的源码是用移植性很强的ANSIC写的。和微处理器硬件有关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低程度,使得mC/OS-II便于移植到其他微处理器上。mC/OS-II可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。可固化(ROMable)mC/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手段(C编译、连接、下载和固化),mC/OS-II可以嵌入到读者的产品中成为产品的一部分。可裁剪(Scalable)可以只使用mC/OS-II中应用程序需要的那些系统服务。也就是说某产品可以只使用很少几种mC/OS-II调用,而另一种产品则使用了几乎所有mC/OS-II的功能,这样可以减少产品中的mC/OS-II所需的存储器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。占先式(Preemptive)多任务mC/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最多可以有256个任务可确定性所有mC/OS-II的函数调用与服务的执行时间具有可确定性。任务栈每个任务有自己单独的栈,mC/OS-II容许每个任务有不一样的栈空间,以便压低应用程序对RAM的需求。系统服务mC/OS-II提供诸多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间有关函数等。中断管理中断可以使正在执行的任务临时挂起,假如优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套所有退出后立即执行,中断嵌套层数可达255层。稳定性与可靠性2.μC/OS容许管理有多少个任务,顾客可以有多少个任务?系统保留的几种任务是什么?μC/OS-Ⅱ可以管理多达64个任务;系统保留了优先级为0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRI0-2,OS_LOWEST_PRI0-1以及OS_LOWEST_PRI0这8个任务以被未来使用,顾客可以有56个应用任务3.任务的构成包括那些部分?任务控制块----uC/OS-II进行任务管理用的一种数据构造。任务代码----描述任务算法的程序编码。任务堆栈----任务的工作现场环境。4.μC/OS中任务有五种状态,互相间转换需要特定的条件,试用状态转换图描述。5.任务堆栈在系统中有哪些应用?任务堆栈是任务的三大构成部分之一。保留CPU寄存器现场(R0~R12、LR、SPSR等)。本Task的私有数据。6.TCB中各组员的作用是什么?7.什么是任务就绪表?任务优先级和任务就绪表的映射关系是怎样的?任务就绪表:每个任务的就绪态标志放入在就绪表中,就绪表中有两个变量OSRdyGrp和OSRdyTbl[]。在OSRdyGrp中,任务按优先级分组,8个任务为一组。OSRdyGrp中的每一位表达8组任务中每一组中与否有进入就绪态的任务。任务进入就绪态时,就绪表OSRdyTbl[]中的对应元素的对应位也置位。映射关系:uC/OS-II最多管理64个任务,Prio值域:0~63,对应的二进制数000,000~111,111(6bit),OSRdyGrp(任务组就绪变量)8bit,任务就绪数组元素OSRdyTbl也是8bit。prio.D[5:3]---对应OSRdyTbl的下标(任务组号y),也对应OSRdyGrp的比特位号。prio.D[2:0]---对应OSRdyTbl元素的位号(任务组号x)8.举例阐明优先级在任务就绪表中的表达。答:举例:prio=29的任务在任务就续表中的表达。prio=29,其8进制表达为:35O9.怎样实现任务优先级到就绪表的操作?怎样从任务就绪表中获得目前优先的最高的优先级号?操作:假如prio是任务的优先级,即任务的标识号,则将任务放入就绪表,虽然任务进入就绪态的措施是:OSRdyGrp|=OSMapTbl[prio>>3];OSRdyTbl[prio>>3]|=OSMapTbl[prio&0x07];假设优先级为12——1100bOSRdyGrp|=OSMapTbl[12>>3](0x02);OSRdyTbl[1]|=0x10;获得优先级号:将优先级数分解为高三位和低三位分别确定;高优先级有着小的优先级号;10.μC/OS中有哪几种任务调度器?任务调度器有哪两项工作?任务调度器的两项重要工作:①从任务就绪表中查找优先级最高的就绪任务,②实现任务切换。uC/OS-II中有两个“任务调度器”:任务级的调度器(OS_Sched()),中断级的调度器(OSIntCtxSw())11.任务切换宏OS_TASK_SW()依次完毕的7项工作是什么?被中断Task的断点指针(PC)入栈保护被中断Task通用寄存器入栈保护被中断Task系统管理SP→该TCB->OSTCBStkPtr获得待运行任务TCB获得待运行任务TCB->OSTCBStkPtr恢复待运行任务CPU现场(不包括PC)切换CPU.PC,使CPU接续运行待运行Task断点。12.某系统中有Task_A、Task_B两个任务都要使用公共资源(例如UART),他们可以分别使用,但不能同步使用。怎样用信号量的措施处理此问题?答:……OS_EVENT*UART_Flag;//申明事件指针变量INT8Uerr; //申明全局状态变量……voidmain(void){OSInit();UART_Flag=OSSemCreate(1);//创立信号量OSTaskCreate(Task_A,……);//创立任务AOSTaskCreate(Task_B,……);//创立任务BOSStart();}voidTask_A(void*pdata){……;for(;;) //任务体A{OSSemPend(UART_Flag,0,&err);//祈求信号量UART_FlagFunction(UART); //使用信号量UART_FlagOSSemPost(UART_Flag); //发送信号量UART_FlagOSTimeDly(nnnn); //Task_A延时nnnn个时钟节拍}}voidTask_B(void*pdata){……;for(;;) //任务体B{OSSemPend(UART_Flag,0,&err);//祈求信号量UART_FlagFunction(UART); //使用信号量UART_FlagOSSemPost(UART_Flag); //发送信号量UART_FlagOSTimeDly(mmm); //Task_B延时mmm个时钟节拍}}13.某系统中有Task_A、Task_B两个任务,若想执行Task_B,必须首先通过Task_A。怎样用信号量的措施,将Task_B作为Task_A的后续功能,处理此问题?答:……OS_EVENT*Task_Flag;//申明信号量……voidmain(void){OSInit();Task_Flag=OSSemCreate(0);//创立信号量OSTaskCreate(Task_A,……);//创立任务AOSTaskCreate(Task_B,……);//创立任务BOSStart();}voidTask_A(void*pdata){……;for(;;) //任务体A{OSSemPost(Task_Flag);//发送信号量Task_Flag…… ; //Task_A业务功能代码OSTimeDly(nnnn); //Task_A延时nnnn个时钟节拍}}voidTask_B(void*pdata){……;for(;;) //任务体B{OSSemPend(Task_Flag,0,&err);//祈求信号量Task_Flag……; //Task_B业务功能代码/*OSTimeDly(mmm); //Task_B延时mmm个时钟节拍*/}}14.什么是任务的优先级反转现象?发生的原因是什么?怎样处理?答:是指在剥夺式OS中,当任务以独占方式使用共享资源时,低优先级的任务也许先于高优先级任务得到系统调度而运行的现象。原因:低优先级的任务独占共享资源,迫使高优先级任务因等待资源而让出CPU。处理措施:临时提高获得共享资源任务的优先级别,尽快释放共享资源,之后再恢复其原有的优先级别。15.某系统中有Task_A、Task_B两个任务都要使用公共资源(例如UART),他们可以分别使用,但不能同步使用;Task_A、Task_B两任务的优先级之间还存在许多中间优先级的任务;例如:Prio(Task_A)=3,Prio(Task_B)=20,优先级在[3,20]之间还存在5个任务Task_1,Task_2,……,Task_5,有也许引起优先级反转。怎样使用互斥信号量的措施处理此问题?答:……OS_EVENT*UART_Flag;//申明信号量INT8Uerr; //申明全局状态变量……voidmain(void){OSInit();UART_Flag=OSMutexCreate(2,&err);//创立互斥信号量OSTaskCreate(Task_A,……,3);//创立任务AOSTaskCreate(Task_B,……,20);//创立任务BOSTaskCreate(Task_1,……,6);……OSTaskCreate(Task_5,……,18);OSStart();}voidTask_A(void*pdata){……;for(;;) //任务体A{OSMutexPend(UART_Flag,0,&err);//祈求信号量UART_FlagFunction(UART); //使用信号量UART_FlagOSMutexPost(UART_Flag);//发送信号量UART_FlagOSTimeDly(nnnn); //Task_A延时nnnn个时钟节拍}}voidTask_B(void*pdata){……;for(;;) //任务体B{OSMutexPend(UART_Flag,0,&err);//祈求信号量UART_FlagFunction(UART); //使用信号量UART_FlagOSMutexPost(UART_Flag);//发送信号量UART_FlagOSTimeDly(mmm); //Task_B延时mmm个时钟节拍}}16.某应用系统具有“数据采集”任务Task_A和“数据处理”任务Task_B;Task_A周期性的定期采集数据,怎样用消息邮箱的方式将数据传送到Task_B处理?答:INT16Uzql_data; //寄存AD转换后的数据OS_EVENT*Dt_box; //消息邮箱指针voidmain(void){OSInit();Dt_box=OSMboxCreate(void*0);//创立(空)消息邮箱OSTaskCreate(Task_A,…); //创立Task_AOSTaskCreate(Task_B,…); //创立Task_BOSStart();}voidTask_A(void*pdata) //采集数据任务{for(;;){……; //启动A/D转换zql_data=GetAD(); //得到一次转换数据OSMboxPost(Dt_box,&zql_data); //将zql_data数据发送到消息邮箱OSTimeDlyHMSM(0,0,1,0) //定期1秒}}voidTask_B(void*pdata) //处理数据任务{INT16U*data_B;for(;;){……; //其他业务data_B=OSMboxPen

温馨提示

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

评论

0/150

提交评论