嵌入式部分习题参考答案.doc_第1页
嵌入式部分习题参考答案.doc_第2页
嵌入式部分习题参考答案.doc_第3页
嵌入式部分习题参考答案.doc_第4页
嵌入式部分习题参考答案.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

第一章1. 什么是嵌入式系统?它由哪几部分组成?有何特点?以应用为中心,计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统、应用软件等几大部分组成。嵌入式处理器与通用处理器的最大不同点在其大多工作在为特定用户群设计的系统。外围设备包括:存储器、接口、人机交互。嵌入式操作系统的特点:软硬件一体化,集计算机技术、微电子技术和行业技术为一体;需要操作系统支持,代码小,执行速度快;专用紧凑,用途固定,成本敏感;可靠性要求高;多样性,应用广泛,种类繁多。2. 嵌入式处理器分为哪几类?低端的微控制器(MicroConctroller Unit,MCU)中高端的嵌入式微处理器(Embedded MicroProcessor Unit,EMPU)通信领域的DSP系统(Digital Signal Processor,DSP)高度集成的片上系统(System on Chip,SoC)3. ARM英文原意是什么?它是个怎样的公司?其处理器有何特点?ARM(Advanced RISC Machines)公司是全球领先的16/32位RISC微处理器知识产权设计供应商。ARM公司通过将其高性能、低功耗、低成本的RISC微处理器,外围和系统芯片设计技术转让给合作伙伴来生产各具特色的芯片。ARM处理器的特点:小体积、低功耗、低成本而性能高。16/32位指令集。全球至多的合作伙伴。4. 什么是实时系统?它由哪些特征?如何分类?实时系统是具有实时性且能支持实时控制系统工作的操作系统。其首要任务是调动一切可利用的资源来完成实时控制任务,其次才着眼于提高计算机系统的使用效率,其重要特点是能满足对时间的限制和要求。实时性:实时系统所产生的结果在时间上有严格的要求,只有符合时间要求的结果才是正确的。并行性:要求系统有并行处理能力,以便能同时相应来自不同端口的输入信号。多路性:对多个不同的现场进行采集,以及对多个对象和多个执行实行控制。独立性:每个用户向实时系统提出服务请求,相互间是独立的。在实时控制系统中对信号的采集和对象控制也是独立的。可预测性:实时系统的实际行为必须处在一定的限度内,而这个限度由系统的定义获得。 可靠性:一方面指系统的正确性,另一方面指系统的健壮性,即使系统出现错误,仍然处于可预测状态,仍可以安全地带错运行和平缓降级它的性能。分类:强实时系统(保质、保量、在限定时间内完成任务)、弱实时系统(没有限制完成时间)、一般实时系统(强和弱的折中)。5. RTOS由几部分组成?它由哪些特点?与一般操作系统有何不同?实时内核(主要实现任务管理,定时器管理,存储器管理、任务间通信与同步,中断管理等)、网络组件、文件系统、图形用户界面。特点:支持异步事件的响应;中断和调度任务的优先级机制;支持抢占式调度;确定的任务切换时间和中断延迟时间;支持同步。6. 实时操作系统常用的任务调度算法有哪几种?基于优先级的调度算法:非抢占式调度,抢占式调度同一优先级的时间轮转调度算法(执行一段时间无论完成与否,处理器均转入下一个就绪的同一优先级任务)单调速率调度算法(执行频率越高,其优先级越高)7. 用什么方法解决优先级反转问题?(1) 优先级继承:设C为正占用着某项共享资源的进程P以及所有正在等待占用此项资源的进程集合;找出这个集合的优先级最高者P_h,其优先级为p;把进程P的优先级设置成P成。(2) 优先级封顶:设C为所有可能竞争使用某项共享资源的进程的集合。事先为这个集合规定一个优先级上限p,使得这个集合的所有优先级都小于p;在创建保护该项资源的信号量或互斥量时,将P将作为一个参数;每当有进程通过这个信号量或互斥量取得对共享资源的独占使用权时,就将此进程的优先级暂时提高到P,一直到释放该项资源时菜恢复对其原有的优先级。第二章1. 嵌入式系统开发过程分为哪几个阶段?每个阶段的特点是什么?(1) 需求分析阶段:对问题的识别和分析;制定规格说明文档;需求评审特点:采用成熟、易于二次开发的系统易于节省时间,从而以最短时间面世。(2) 设计阶段:数据流分析-划分任务-定义任务间接口特点:DARTS的设计方法-是结构化设计的扩展,划分出任务,并提供定义任务间的接口机制,适合设计多个并发执行的任务。(3) 生成代码阶段:代码编程-交叉编译和链接-交叉调试-测试(单元和集成测试)特点:一般采用的方法是现在通用PC机上编程,然后通过交叉编译、链接,将程序做成目标平台上可以运行的二进制代码格式,最后将程序下载到目标平台上的特定位置,在目标板上启动这段二进制代码。(4) 固化阶段:嵌入式应用软件完成以后,编译器要对源代码重新编译一次,以产生固化到目标坏境的可执行代码,再烧到环境目标环境的Flash中。 固化的可执行代码和用于调试的可执行代码有些不同。固化用的代码在目标文件中把调式用的信息都屏蔽掉了。固化后没有监控器执行硬件的启动和初始化,这部分工作必须由固化的程序自己完成,所以启动模块必须包含在固化代码中。特点:程序需要写入到Flash中固化,保证每次运行后下一次运行无误,所以嵌入式开发相比增加了软件的固化阶段。2. 嵌入式系统有哪几种调试方式?现在流行的哪种?使用什么接口?(1) 源程序模拟器方式:在pc机上,通过软件手段模拟执行为某种嵌入式处理器写的源程序的测试工具。三级模拟功能(指令级、周期级、定时级)(2) 监控器方式:宿主机和目标机建立物理上的连接,通过串口、以太口等把两台机器相连,使之正常工作,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序。(3) 仿真器方式:使用处理器内嵌的调试模块接管中断及异常处理。用户通过设置CPU内部的寄存器来指定哪些中断或异常发生后处理器直接进入调试状态,而不进入操作系统的处理程序。JTAG、IDE(在线仿真器in-circuit Emulator)、ICD(in-circuit Debugger在线调试器)接口。通过JTAG既可以对目标系统进行测试,也可以对目标系统的存储单元进行编程。3. 什么是板级支持包?它一般应完成哪些工作?板级支持包(Board Support Package)是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。功能:在系统启动时,对硬件进行初始化;为驱动程序提供访问硬件的手段。工作:在系统启动时,对硬件进行初始化进行:(1) 将系统代码定位到CPU将要执行的内存入口处,比便硬件初始化完毕后CPU能够执行系统代码(2) 根据不同CPU在启动时的硬件规定,BSP要负责将CPU设置为特定状态。(3) 对内存进行初始化,根据系统的内存配置将系统的内存划分为代码、数据、堆栈等不同的区域。(4) 如果有特殊的启动代码,BSP要将控制权移交给启动代码。(5) 如果应用软件中包含一个嵌入式操作系统,BSP要负责将操作系统需要的模块加载到内存中。(6) 如果应用软件中包含一个嵌入式操作系统,BSP还要在操作系统初始化之前,将硬件设置为静止状态,以免造成操作系统初始化失败。为驱动程序提供访问硬件的手段进行:(1) 将驱动程序提供的ISR(中断服务程序)挂载到中断向量表上。(2) 创建驱动程序初始化所需要的设备对象,BSP将硬件设备描述为一个数据结构。(3) 为驱动程序提供访问硬件设备寄存器的函数。(4) 为驱动程序提供可重用性措施。只要不同的硬件系统BSP提供的接口相同,驱动程序就可在不同的硬件系统上运行。第三章1. 从技术角度讲,Linux是一个什么样的操作系统?你认为它由哪些不足?Linux是一个类Unix操作系统,它完全是一个自由的操作系统,它是一个单一内核的操作系统,这是由于Linus Torvalds以代码执行效率为自己操作系统的第一要务,比起结构的清晰他们更加注重功能的强大和高效率,他们花大量的经历在优化代码上,而这样以损失结构精炼作为代价,导致Linux中的每个部件都不能被轻易拆出,否则破坏效率。虽然Linux是单一结构但是他和UNIX操作系统不一样Unix操作系统所有代码是静态编译的,而在Linux中代码可以动态装入和卸载内核中的部分代码。Linux不支持用户态线程,Linux中通过另一种方法解释并实现LWP的机制。Linux高效而稳定,以独占的方式执行最底层的任务,保证其他程序的正常运行。缺陷:只有抢占式的操作系统才可以成为“实时”操作系统。要对Linux的中断处理、进进程调度和进程抢占这3个方面进行改进。2. GPL协议的主要内容是什么?你了解自由软件的开发模式,愿意让大家共享你的软件么?为什么?GPL(General public license)通用公共许可证,GPL保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件的源代码,并且规定在不增加费用的条件下得到源代码(基本的发布费除外)。开发模式是“巴扎模式”,一大批广泛分布于世界各地的软件爱好者 ,以互联网为纽带,通过BBS、新闻组及电子邮件等现代通信方式,同时参与一个软件开发项目。以个初步工作的软件雏形首先发布出来,然后大家同时开始工作,分别结合自己的实际经验和需要,寻找软件中的漏洞,提出修改意见,发布在互联网上,然后其他人也发现了漏洞,接着提出改进方案,给出补丁,这个软件像滚雪球一样不断完善。3. 进程和程序有什么区别?什么是进程间的互斥和同步?可执行文件由指令和数据组成。进程就是在计算机上运行的可执行文件针对特定的输入数据的一个实例,同一个可执行程序文件如果操作不同的输入数据就是两个不同的进程。互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源4. 进程调度的功能是什么?Linux的进程调度发生在什么情况下?Linux系统的实时调度和普通调度有什么区别?高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行;低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换。调度发生的情况:(1)正在执行的进程执行完毕。这时如果不选择新的就绪进程执行,将浪费处理机资源。(2)执行中进程自己调用阻塞原语将白己阻塞起来进入睡眠等状态。(3)执行中进程调用了P原语操作,从而因资源不足而被阻塞;或调用了v原语操作激活了等待资源的进程队列。(4)执行中进程提出I/O请求后被阻塞。(5)在分时系统中时间片已经用完。(6)在执行完系统调用等系统程序后返回用户进程时,这时可看作系统进程执行完毕,从而可调度选择一新的用户进程执行。(7)就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将引发进程调度。区别:Linux 根据政策从整体上区分实时进程和普通进程,因为实时进程和普通进程度调度是不同的,它们两者之间,实时进程应该先于普通进程而运行,然后,对于同一类型的不同进程,采用不同的标准来选择进程:对于普通进程,Linux采用动态优先调度, Linux中某个进程的调度策略(policy)、优先级(priority)等可以作为参数由用户自己决定,具有相当的灵活性。对于实时进程,Linux采用了两种调度策略,即FIFO(先来先服务调度)和RR(时间片轮转调度)。因为实时进程具有一定程度的紧迫性,所以衡量一个实时进程是否应该运行,Linux采用了一个比较固定的标准。有两个优先级,实时优先级就是用来衡量实时进程是否值得运行的。 5. Linux中从用户态进入核心态的唯一途径是什么?从用户态转换为核心态的唯一途径是中断。CPU处于用户态时,所运行的程序只能执行非特权指令,如果用户程序在用户态下执行特权指令,将发生中断,由操作系统获得控制。操作系统在核心态下运行。从核心态到用户态可以通过修改程序状态字来实现,这将伴随这由操作系统程序到用户程序的转换。6. 在Linux系统中,为什么可以像使用文件一样操作一个设备?设备文件是Linux系统很重要的一个特色。Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I/O设备的使用和一般文件的使用一样,不必了解I/O设备的细节。设备文件可以细分为块设备文件和字符设备文件。前者的存取是以一个个字符块为单位的,后者则是以单个字符为单位的。7. 什么是设备驱动程序?Linux系统中,用户怎么使用设备驱动程序?设备驱动程序在Linux内核中扮演着特殊的角色。他们是一个个独立的“黑盒子”,是某个特定的硬件相应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实际硬件的设备特有操作上,则是设备驱动程序的任务。这个编程接口能使得驱动程序独立于内核的其他部分而建立,必要的情况下可在运行时“插入”内核。8. Linux文件有哪些类型?Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、套接口文件、符号链接文件普通文件:我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r-r- ,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建。目录:看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在Linux是一个比较特殊的文件。注意它的第一个字符是d,创建目录的命令可以用 mkdir 命令,或cp命令。字符设备文件:文件的属性,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备块设备文件:文件的属性,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备套接口文件:注意这个文件的属性的第一个字符是 s。符号链接文件:我们查看文件属性时,注意第一个字符是l,这类文件是链接文件9. 主流的Linux操作系统有哪些?国外封装的Linux以Red Hat(又称为“红帽Linux”)、OpenLinux、SuSE(SuSE是欧洲最流行的Linux发行版)、TurboLinux(TurboLinux是日本制作的Linux发行版,其最大特色便是以日文版、中文简/繁体版、英文版三种形式发行)等最为成功。国内Linux发行版做的相对比较成功是红旗和中软两个版本。第四章1. ARM7和ARM9在流水线方面有何不同?ARM7处理器核使用了典型三级流水线的冯诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。ARM7系列处理器中每条指令分取指、译码、执行三个阶段,分别在不同的功能部件上依次独立完成。取指部件完成从存储器装载一条指令,通过译码部件产生下一周期数据路径需要的控制信号,完成寄存器的解码,再送到执行单元完成寄存器的读取、ALU运算及运算结果的写回,需要访问存储器的指令完成存储器的访问。ARM9系列处理器的流水线分为取指、译码、执行、访存、回写。取指部件完成从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据路径区别很大;执行部件产生ALU运算结果或产生存储器地址(对于存储器访问指令来讲);访存部件访问数据存储器;回写部件完成执行结果写回寄存器。2. ARM处理器支持的数据类型有哪些?字节:在ARM体系结构中字节的长度均为8位。字:在ARM体系结构中字节的长度均为32位。半字:在ARM体系结构中字节的长度均为16位3. 写出ARM使用的各种工作模式和状态。 ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。但ARM微处理器在开始执行代码时,应该处于ARM状态。 ARM处理器模式 ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态。快速中断模式(fiq):用于高速数据传输或通道处理。外部中断模式(irq):用于通用的中断处理。管理模式(svc):操作系统使用的保护模式。数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。 除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式;其中除去用户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况4. 哪个寄存器用做PC?哪个用做LR?寄存器R14称为链接寄存器LR,它用于保存子程序的返回地址。如果在子程序中

温馨提示

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

评论

0/150

提交评论