logo资料库

2018年西电嵌入式选修大作业答案.docx

第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
资料共37页,剩余部分请下载后查看
嵌入式系统设计大作业 学院:空间科学与技术学院 班级:钱学森空间科学实验班 学号: 姓名: 该课程的班号:02 该课程班中序号:42
2018 年下学期嵌入式系统设计大作业 判断题 一、 ( X )1.ATPCS 是 ARM 程序和 Thumb 程序中子程序调用的规则,它是一套强制规则。 (√)2.在 ARM 处理器中,快速中断(FIQ)的优先级高于外部中断(IRQ)。 (√)3.ROM 能够永久或半永久地保存数据,ROM 内的数据永远不会丢失。 (√)4.内建测试系统(BIST)是 SoC 片上系统的重要结构之一,JTAG 测试接口是 IC 芯片测试方 法的标准。 ( X )5.ARM 属于 CISC 体系架构。 ( X )6.嵌入式 ARM 架构的嵌入式处理器同时支持大端、小端(Big/Little-Endian)数据类型。 ( X )7.嵌入式操作系统通常采用整体式内核或层次式内核的结构。 ( X )8.ARM7TDMI 中的 T 代表增强型乘法器。 (√)9.除了用户模式外,ARM 处理器的其它几种工作模式属于特权模式。 (√)10.ARM-CPU 由多家不同制造商生产,芯片外部提供的总线是不一致的。 (√)11.Linux 内核稳定、功能强大并且可以裁减,因为非常适合嵌入式应用。 (√)12.Linux 内核的中断服务程序运行于与所有进程都无关的中断上下文中。 (√)13.Linux 遵循 POSIX 标准,意味着绝大多数 UNIX 应用程序不需要任何改动就可以在 Linux 系统上编译且运行。 ( X )14.Linux 内核支持可以裁减的功能,因此它属于微内核架构。 (√)15.Linux 在 fork()时采用了写时拷贝(简称 COW)技术,允许父进程和子进程同时共享相 同的物理页面。 (√)16.任何一个 Linux 应用程序都需要调用 exit()函数。 (√)17.当前的 Linux 调度算法非常高效,但是查找当前最高优先级的可运行程序时,开销会 随着可运行程序的多少而变化。 (√)18.Linux 的系统调用是作为 C 库的一部分提供的。 (√)19.为了对硬件做出迅速的响应并完成对时间严格的操作,中断处理下半部必须在关中断 状态下执行。 ( X )20.Linux 的内存管理采用了分页的机制,因此即使是内核本身也全部是分页的。 ( X )21.嵌入式系统由上到下主要分为 3 个层次:应用软件层,系统软件层,硬件层。 ( X )22.嵌入式系统的软硬件是独立设计的。 (√)23.嵌入式系统设计需要建立交叉开发环境。 ( X )24.通用系统程序开发不需要建立和使用交叉编译环境。 (√)25.对于 C++代码,gcc 命令只能编译其源文件,而不能自动和 C++程序使用的库链接。 (√)26.嵌入式系统可以没有操作系统。 (√)27.JTAG 测试允许多个器件通过 JTAG 接口串联在一起形成一个 JTAG 链,能实现对各个器 件分别测试。 ( X )28.GDB 调试器只支持本地调试应用程序。 ( X )29.在任何模式下,ARM 处理器都可以访问全部寄存器。 (√)30.BLX 指令可以将处理器切换到 Thumb 状态。 二、单选题 1.以下哪一个不属于 IP 核的分类(C) A. 软核 B. 硬核 C. 模拟核 D. 固核 2.下面不是 CISC 与 RISC 的架构的差异是(D) A.指令数量不同,前者多,或者较少,通常少于 100.
B.前者有些指令执行时间较长,后者则没有。 C.前者有丰富的寻址模式,而后者有较少的寻址模式。 D.前者有复杂的编译器设计,可优化编译技术,生成高效的目标代码程序,而后者则是简单 的编译器设计,难以优化生成高效的目标代码程序。 3.下面不是嵌入式 ARM 架构的嵌入式处理器的特点是(B) A.具有大量的寄存器,指令执行速度快。 B.绝大多数操作都在寄存器中进行,通过 Load/Store 的体系结构在内存和寄存器之间传递数 据。 C.同时支持大端、小端(Big/Little-Endian)数据类型。 D.寻址方式简单,采用固定长度的指令格式。 4.Linux 是 UNIX 类操作系统的一种,它对 UNIX 有很好的兼容性,下面不是它特点的是( B) A.实时性强 B.互操作性强 C.多硬件平台支持,多处理器支持。 D.内存保护模式,共享库支持,TCP/IP、SLIP 和 PPP 支持。 5.VxWorks 操作系统是 WindRiver 公司推出的一种 32 位嵌入式实时操作系统,下面不是它优 点的是(A) A.VxWorks 源码开源,用户的开发成本低。 B.简洁、紧凑、高效的内核。 C.支持多任务,实时性强。 D.较好的兼容性和对多种硬件环境的支持。 6.下列中断处理过程的步骤,最先执行的是(A) A.安装堆栈 B.调用中断服务 C.恢复堆栈 D.保存寄存器 7.下面不是 PowerPC 的嵌入式微处理器的通信产品是(D) A.MPC860 B. MPC8245 8.设备名”/sd0”对应的设备类型是(D) A.串口设备 B.软盘驱动器 C.管道设备 D. SCSI 设备 9.bootloader 作为一种嵌入式软件,他的主要特点是(B) A. 与硬件无关,与操作系统有关 B. 与硬件和操作系统都相关 C. 与硬件有关,与操作系统无关 D. 与操作系统和硬件都无关 10.以下几个步骤是 DMA 控制过程的主要节点,请选出正确的 DMA 控制流程(请求信号 HRQ) 为(A) D. Pro SeriesTM C. MPC8260 1. CPU 让出总线控制权(响应信号 HLDA) 2. DMA 控制器向 CPU 请求总线使用权 3. DMA 控制器控制总线,发总线命令、传送数据 4. DMA 总线控制器归还总线控制权 5. CPU 重新获取总线控制权 A. 2,1,3,4; C. 3,1,4,2; B. 1,2,3,4; D. 3,4,1,2; 三、问答题 1、 叙述 Linux 内核模块与应用程序的区别。 (1)应用程序基本上是从头到尾执行单个任务,而模块却需要事先向系统注册自己以
便为将来的请求服务,并且模块有自己的模块初始化函数和模块退出函数。 (2)不是所有的应用程序都是事件驱动的,但内核模块却是,应用模块在退出时,可 以不需要释放自己之前申请的资源或者其他的清除工作,但模块的退出却需要使用模块 退出函数来仔细撤销初始化函数所做的一切,否则在系统重新引导之前某些东西就会残 留在系统中。 (3)应用程序可以调用用户未定义的函数,但这个函数在某个库中,在链接过程中, 编译器能够解析外部引用从而使用适当的函数库来调用这个函数,例如,定义在 libc 中的 printf 函数就是这种可直接调用的函数,但对于内核模块来说,模块仅仅被链接 到内核中,只能调用由内核定义导出的函数,如 printk 就是由内核提供给模块使用的 一个类 printf 的内核版本,故而模块源文件中不能包含通常的头文件。另外,printf 和 printk 最大的不同在于 printk 缺乏对浮点数的支持。 (4)还有一点不同在于不同环境下二者处理错误的方式不同,对于应用程序,在开发 过程中发生段错误是无害的,可以使用调试器跟踪到源代码问题所在,但内核错误即使 不影响整个系统,也至少会杀死当前进程。 2、 叙述 linux 模块的含义。 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接 到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块 通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上 层的功能。 3、 叙述模块依赖的含义。 内核模块如果引用到 Linux 内核中的符号,这个则不属于模块间的依赖,因为内核导出 的符号本身就是供内核模块所使用。本帖要讨论的是在两个独立编译的模块 A 和B 之间, B 如果要引用 A 导出的符号,在 Makefile 中该如何把这一信息加入的问题。 4、 叙述 CPU 工作状态的转换方式。 大多数计算机系统将 CPU 执行状态分为管态和目态。管态又称为特权状态、系统态或核 心态。通常,操作系统在管态下运行。目态又叫做常态或用户态,用户程序只能在目态 下运行,如果用户程序在目态下执行特权指令,硬件将发生中断,由操作系统获得控制, 特权指令执行被禁止,这样可以防止用户程序有意或无意的破坏系统。从目态转换为管 态的唯一途径是中断。 5、 简述中断(狭义)与异常的区别。 中断是 CPU 暂停当前工作,有计划地去处理其他的事情。中断的发生一般是可以预知 的,处理的过程也是事先制定好的。处理中断时程序是正常运行的。 而异常是 CPU 遇到了无法响应的工作,而后进入一种非正常状态。异常的出现表明程 序有缺陷。 6、 随着嵌入式处理器性能的不断提高、应用需求的日益复杂以及软件规模的不断上升,逐 渐出现了各种不同的嵌入式操作系统。了解各种嵌入式操作系统的功能与特性,是选择 嵌入式操作系统和开发相应的应用系统的关键一步。 请围绕‘嵌入式操作系统的功 能与特性”论题,依次对以下二个方面进行论述。 (1).详细论述现今有哪些嵌入式操作系统及其典型特点、在项目中发挥的作用以及在 应用中选择嵌入式操作系统的原则。 (一)VxWorks VxWorks 操作系统是美国 WindRiver 公司于 1983 年设计开发的一种嵌入式实时操作系统 (RTOS),是 Tornado 嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能 的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。
VxWorks 具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断 处理;支持 POSIX 1003.1b 实时扩展标准;支持多种物理介质及标准的、完整的 TCP/IP 网络协议等。 然而其价格昂贵,由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通 常需花费 10 万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另 外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需 要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的 硬件数量有限。 (二)Windows CE Windows CE 与 Windows 系列有较好的兼容性,无疑是 Windows CE 推广的一大优势。其 中 WinCE3.0 是一种针对小容量、移动式、智能化、32 位、了解设备的模块化实时嵌人 式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰 富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占 用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先 权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用 户电子设备进行定制。操作系统的基本内核需要至少 200KB 的 ROM。由于嵌入式产品的 体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可 用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在 ROM 或 快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上 讲,Windows CE 作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员 很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和 Windows 一样占用过 的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。 (三)嵌入式 Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循 GPL 协议,在 近一年多以来成为研究热点,据 IDG 预测嵌入式 Linux 将占未来两年的嵌入式操作系统 份额的 50%。 由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从 GPL,无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从 GPL, 是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。 有大量的免费的优 秀的开发工具,且都遵从 GPL,是开放源代码的。有庞大的开发人员群体。无需专门的 人才,只要懂 Unix/Linux 和 C 语言即可。随着 Linux 在中国的普及,这类人才越来越 多。所以软件的开发和维护成本很低。优秀的网络功能,这在 Internet 时代尤其重要。 稳定——这是 Linux 本身具备的一个很大优点。内核精悍,运行所需资源少,十分适合 嵌入式应用。 支持的硬件数量庞大。嵌入式 Linux 和普通 Linux 并无本质区别,PC 上用到的硬件嵌入 式 Linux 几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专 有硬件的驱动程序带来很大方便。 在嵌入式系统上运行 Linux 的一个缺点是 Linux 体系提供实时性能需要添加实时软件模 块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序 的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系 统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。 (四)μC/OS 一Ⅱ μC/OS 一Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于 8 位, 16 位和 32 位单片机或数字信号处理器(DSP)。它是在原版本μC/OS 的基础上做了重大
改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。它的主要 特点如下: 公开源代码,容易就能把操作系统移植到各个不同的硬件平台上; 可移植性,绝大部分源代码是用 C 语言写的,便于移植到其他微处理器上; 可固化; 可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间; 占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务; 多任务,可管理 64 个任务,任务的优先级必须是不同的,不支持时间片轮转调度法; 可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少; 实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据。 由于μC/OS 一Ⅱ仅是一个实时内核,这就意味着它不像其他实时存在系统那样提供给 用户的只是一些 API 函数接口,还有很多工作需要用户自己去完成。 选择嵌入式操作系统的原则: 6.1.市场进入时间 制定产品时间表与选择操作系统有关系,实际产品和一般演示是不同的。目前是 Windows 程序员可能是人力资源最丰富的。现成资源最多的也就可能是 WinCE。使用 WinCE 能够很快 进入市场。因为 WinCE+X86 做产品实际上是在做减法,去掉你不要的功能,能很快出产品, 但伴随的可能是成本高,核心竞争力差。而某些高效的操作系统可能由于编程人员缺乏,或 由于这方面的技术积累不够,影响开发进度。 6.2.可移植性 操作系统相关性。当进行嵌入式软件开发时,可移植性是要重点考虑的问题。良好的软件移 植性应该比较好,可以在不同平台、不同系统上运行,跟操作系统无关。软件的通用性和软 件的性能通常是矛盾的。即通用以损失某些特定情况下的优化性能为代价。很难设想开发一 个嵌入式浏览器而仅能在某一特定环境下应用。反过来说,当产品与平台和操作系统紧密结 合时,往往你的产品的特色就蕴含其中。 6.3.可利用资源 产品开发不同于学术课题研究,它是以快速、低成本、高质量的推出适合用户需求的产品为 目的的。集中精力研发出产品的特色,其他功能尽量由操作系统附加或采用第三方产品,因 此操作系统的可利用资源对于选型是一个重要参考条件。Linux 和 WinCE 都有大量的资源可 以利用,这是他们被看好的重要原因。其他有些实时操作系统由于比较封闭,开发时可以利 用的资源比较少,因此多数功能需要自己独立开发。从而影响开发进度。近来的市场需求显 示,越来越多的嵌入式系统,均要求提供全功能的 Web 浏览器。而这要求有一个高性能、高 可靠的 GUI 的支持。 6.4.系统定制能力 信息产品不同于传统 PC 的 Wintel 结构的单纯性,用户的需求是千差万别的,硬件平台也都 不一样,所以对系统的定制能力提出了要求。要分析产品是否对系统底层有改动的需求,这 种改动是否伴随着产品特色?Linux 由于其源代码开放的天生魅力,在定制能力方面具有优 势。随着 WinCE3.0 原码的开放,以及微软在嵌入式领域力度的加强,其定制能力会有所提 升。 6.5.成本 成本是所有产品不得不考虑的问题。操作系统的选择会对成本有什么影响呢?Linux 免费, WinCE 等商业系统需要支付许可证使用费,但这都不是问题的答案。成本是需要综合权衡以 后进行考虑的——选择某一系统可能会对其他一系列的因素产生影响,如对硬件设备的选型、
人员投入、以及公司管理和与其他合作伙伴的共同开发之间的沟通等许多方面的影响。 6.6.中文内核支持 国内产品需要对中文的支持。由于操作系统多数是采用西文方式,是否支持双字节编码方式, 是否遵循 GBK,GBl8030 等各种国家标准,是否支持中文输入与处理,是否提供第三方中文 输入接口是针对国内用户的嵌入式产品的必需考虑的重要因素。 (2)概要叙述在你参与的嵌入式系统实验中,选择的是哪一种嵌入式操作系统,在使用中 有哪些不足之处,并简述如何弥补。 我选用的是 linux 系统。 优点:1、Linux 的一个天生的优点在于其开放性,根据 Linux 的开发历史便可知,其开发 者托瓦兹希望能够得到更多人的建议来开发这个操作系统,所以众多的志愿者为 Linux 提供 代码支持,这使得 Linux 系统的漏洞缺陷能够很快的被发现并提供相应的解决措施,相比于 封闭的 Windows 系统而言,这是一个极大的差异。 2、Linux 是基于 Unix 概念开发出来的操作系统,继承了 Unix 稳定高效的优良传统,所以 Linux 经常被作为服务器系统使用。Linux 与 Windows 在授权费用上也有着极大的差距, Windows 作为微软的商业发行版本,其在 Windows10 以前的系统均收取极高的授权使用费用, 对于 Windows10 宣称的“免费”而言,其实也不见得免费。 3、Linux 是基于 GPL 授权的产物,所以任何人都可以自由的获取 Linux。与 Windows 系统不 同,Linux 主机可以同时允许多人上线工作,相比于 Windows 的单人多任务系统要稳定许多。 缺点:1、Linux 的缺点也显而易见,Linux 系统的游戏支持匮乏,很少有游戏开发商愿意为 Linux 平台开发大型游戏,这对家用级计算机而言,是 Linux 不能普及的一个极大的原因。 2、对于专业技能人员而言,Linux 同时也缺乏对专业软件的支持。总之就是陷入一个不良 的循环,Linux 因为其普及有限,大多数的公司处于商业考虑难以为其开发专业和游戏软件, 而 Linux 则因为这些软件的缺乏导致普及受到阻碍。 3、硬件集成/支持的缺乏。尽管很多公司认为这一点是一个附加物,但是,财富 500 强公司 通常都更喜欢来自硬件支持的更舒适的性能以及硬件与操作系统之间更加紧密地集成。我们 都知道如果你的硬件供应商与你的操作系统软件供应商不同会发生什么或者受到什么职责。 驱动支持是硬件供应商带来的,但这对于 Linux 系统来说,一直是一个挑战。 7、嵌入式系统应用处理器 PXA225 功能模块图如下,请翻译之。
RTC 实时时钟电路 OS timer 操作系统定时器 PWM2 第二路脉宽调制 INT CONTROLLER 中断控制器 clocks and power man 时钟和电源管理 I2S 串口仿真接口;I2C,集成电路通信接口;AC97 音频处理接口;UARTS,异步收发器接 口;NSSP 网络服务接口;SLOW IRDA,慢速红外数据通信;Fast irDA 快速红外通信接口;DMA DMA 存储器访问控制和桥;color gray lcd..彩色及灰度显示屏控制器;SYSTEMBUS 系统总 线; Intel exscal micaoarchitecture 英特尔向量机微型体系,即 CPU。Memory controler- 存储器控制器; PCMCIA&CF CONTROL 显卡;dynamic mem 动态内存管理 sstatic mem contrl 静态内存管理 外置 ROM FLASH 4 组 8、 实现将 R2 的高 8 位数据传送到 R3 的低 8 位的 ARM 汇编程序。 MOV R0,R2,LSR #24 ORR R3,R0,LSL #8 四、程序题 1、 建立五个文件:ex1.c 文件,ex2.c 文件,ex.h 文件,ex.c 文件,makefile 文件,其中 ex1.c 文件和 ex2.c 文件分别输出 hello linux1 和 hello linux2,ex.h 文件包含 ex1.c 文件和 ex2.c 文件中的函数,ex.c 文件为包含 main 函数的文件,来调用 ex1.c 文件和 ex2.c 文件中的 函数,编写 makefile 文件对上述文件进行编译和执行,要求 makefile 文件中包含宏定义 和$@,$^,$<变量。 //ex2.c //ex1.c #include void f1() { } printf("hello,linux1\n"); #include void f2() { } printf("hello,linux2\n");
分享到:
收藏