《嵌入式系统课后复习答案.doc》由会员分享,可在线阅读,更多相关《嵌入式系统课后复习答案.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章1、式系统一般定义为以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。一个嵌入式系统就是一个硬件和软件的集合体,它包括硬件和软件两部分。其中硬件包括嵌入式处理器/控制器/数字信号处理器(DSP)、存储器及外设器件、输入输出(I/O)端口、图形控制器等;软件部分包括嵌入式操作系统和应用程序嵌入式系统主要特征有:系统内核小;专用性强;运行环境差异大;可靠性要求高;系统精简和高实时性操作系统;部分代码固化在非易失性存储器中;系统开发需要专门的开发工具和环境嵌入式系统分类:按嵌入式微处理器的位数分类:嵌入式系统可分为4位
2、、8位、16位、32位和64位等按软件实时性需求分类:可分为非实时系统(如PDA)、软实时系统(如消费类产品)和硬实时系统(如工业实时控制系统)。按嵌入式系统的复杂程度分类:嵌入式系统可分为小型嵌入式系统、中型嵌入式系统和复杂嵌入式系统。2、嵌入式系统自底向上包含四个部分:硬件平台、硬件抽象层(HAL)、嵌入式实时操作系统(RTOS)、和实时应用程序。3、实时多任务操作系统(Real Time multi-tasking Operation System,RTOS)简称实时操作系统,主要用来完成嵌入式实时应用的任务调度和控制等核心功能。第二章1、嵌入式系统的硬件系统是由嵌入式处理器、存储器、I
3、/O接口电路、通信模块以及其他外部设备组成的。硬件系统的核心是嵌入式处理器。嵌入式系统中的处理器通常分为三大类,即微处理器(Micro-Processor Unit,MPU)、微控制器(Micro-Controller Unit,MCU)和数字信号处理器(DSP)。存储器是构成嵌入式系统硬件的重要组成部分。存储器的物理实质是一组或多组具备数据输入/输出和数据存储功能的集成电路,用于存放计算机工作所需的数据和程序。常用的存储器类型分为3类:随机存取的RAM、只读的ROM、以及介于二者之间的混合存储器。嵌入式处理器与通用处理器的最大区别在于嵌入式处理器集成了大量的不同功能的I/O模块。用户在开发嵌
4、入式系统时,可以根据系统需求选择合适的嵌入式处理器,而无需再另外配备I/O电路。此外,嵌入式系统通常还包括人机交互界面,用于系统与用户的交互。2、什么是嵌入式外围设备?简要说明嵌入式外围设备是如何分类的。(P2223) 答:除了处理器和存储器,嵌入式系统硬件中还包括一些相关的硬件设备,称为外围设备。外设分为:内部外设和外部外设。外围设备的功能可分为:通信接口、输入输出设备、设备扩展接口、电源及辅助设备 3、嵌入式操作系统的发展经历了哪几个阶段?(P28)答:嵌入式操作系统伴随着嵌入式系统的发展,大致经历了四个阶段:无操作系统的嵌入算法阶段、以嵌人式CPU为基础、简单操作系统为核心的嵌入式系统阶
5、段、通用的嵌入式实时操作系统阶段、以基于Internet为标志的嵌入式系统4、嵌入式操作系统的主要任务有哪些?(P28) 答:嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。 嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。5、嵌入式系统的基本设计过程包括哪几个阶段?每一个阶段的主要工作有哪些?(P33) 答:以自顶向下的角度来看,系统设计包括五个阶段,系统需求分析开始;规格说明,系统结构设计
6、、系统集成。 需求分析阶段可细分为四个阶段:1、需求与规格说明2、确认需求3、简单的需求表格4、需求的内部一致性。6、实时系统定义:一个能够在指定的或确定的时间内,实现系统功能和对外部或内部、同步或异步事件做出响应的系统。常见的嵌入式实时操作系统分为:商用系统、专用系统、开放系统。7、操作系统的功能:处理机管理(进程管理);存储管理(内存);设备管理(含外设);文件管理;用户接口8、比较用于嵌入式系统的无线通信方法?红外:红外传输是一种点对点的传输方式,无线,不能离的太远,要对准方向,且中间不能有障碍物也就是不能穿墙而过,几乎无法控制信息传输的进度;蓝牙:是一种低带宽、低功耗、近距离的传输协议
7、。其传输距离10米左右,加强信号后最高可达100米,可以绕弯,可以不对准,可以不在同一间房间,链接最大数目可达7个,同时区分硬件。较红外传输数度快,可加密。Wifi:Wi-Fi是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术,是当今使用最广的一种无线网络传输技术。Wi-Fi技术传输的无线通信质量不是很好,数据安全性能比蓝牙差一些,传输质量也有待改进,但传输速度非常快,可以达到54mbps,符合个人和社会信息化的需求。Wi-Fi最主要的优势在于不需要布线,可以不受布线条件的限制,因此非常适合移动办公用户的需要,并且由于发射信号功率低于100mw,低于手机发射功率,所
8、以Wi-Fi上网相对也是最安全健康的GSM是全球移动通信系统的简称,是当前应用最为广泛的移动电话标准,GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低、机卡分离。GPRS:通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务。GPRS可说是GSM的延续。GPRS是以封包式来传输, GPRS的传输速率可提升至56甚至114Kbps。在连接建立时间方面,GSM需要10-30秒,而GPRS只需要极短的时间就可以访问到相关请求;而对于费用而言,GSM是按连接时间计费的,而GPRS只需要按数据流量计
9、费;GPRS对于网络资源的利用率而相对远远高于GSM。第3章 1、试比较RISC和CISC体系结构的异同,为什么ARM内核要采用RISC体系结构?(P47)指标指令集一个周期执行一条指令,通过简单指令的组合实现复杂操作;指令长度固定指令长度不固定,执行需要多个周期流水线流水线每周期前进一步指令的执行需微代码的一个微程序寄存器更多通用寄存器用于特定目的的专用寄存器Load/store结构独立的Load/store指令完成数据在寄存器和外部存储器之间的传输处理器能够直接处理存储器中的数据ARM体系结构总的设计思路是在不牺牲性能的同时尽可能简化处理器。同时从体系结构的层面上支持灵活的处理器扩展。这种
10、简化和开放的思路使ARM处理器采用了很简单的结构精简指令集计算机(Reduced Instruction Set Computer,RISC)体系结构来进行实现。2、简述ARM的设计思想及其与单纯的RISC定义的不同。(P4849) 答:ARM内核并不是一个纯粹的RISC体系结构,这是为了使它能够更好地适应其主要应用领域嵌入式系统。为了使ARM指令集能够更好地满足嵌入式应用的需要,ARM指令集和单纯的RISC定义有以下几个方面的不同: 一些特定的指令周期数可变 内嵌桶形移位器产生了更为复杂的指令 Thumb 16位指令集 条件执行3、ARM体系结构版本的命名规则有哪些?简单说明ARM7TDMI
11、的含义。(P50)答:ARM产品通常以ARMxyzTDMIEJF-S形式出现。ARM体系结构的命令规则中这些后缀的具体含义x 系统,如ARM7、ARM9 y 存储管理/保护单元 z CacheT Thumb16位译码器(T变种) D JTAG调试器M 长乘法指令(M变种) I 嵌入式跟踪宏单元 E 增强DSP指令(E变种)J java加速器(J变种) F 向量浮点单元 S 可综合版本。ARM7TDMI的含义即ARM7内核,增加了Thumb指令集(T变种)、JTAG调试器、长乘法指令(M变种)和嵌入式跟踪宏单元的功能。4、比较ARM9与ARM7处理器的性能特点,试说明它们有何异同。(P5556)
12、ARM7内核是三级流水线(取指令、译码、执行)和采用冯诺伊曼结构,数据指令使用同一条总线;而ARM9内核是5级流水线(预取、译码、执行、存储器、写回)。RM7相比,ARM9处理器在流水线级数和指令结构上进行了改进,使得其有大约30%的提升。5、ARM微处理器有ARM和Thumb 2种工作状态,并可在两种状态之间进行切换。ARM处理器有37个寄存器(31个通用,6个状态寄存器)。ARM处理器支持两种指令集:ARM指令集和Thumb指令集。ARM指令为32位长度和Thumb指令为16位长度第4章 ARM微处理器的编程模型与指令系统1、ARM微处理器有哪几种运行模式?其中哪些是特权模式,哪些又是异常
13、模式?(P64) 答:ARM微处理器支持7种运行模式,分别为:用户模式;快速中断模式;外部中断模式;管理模式;数据访问终止模式;系统模式;未定义指令中止模式。除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);而除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常。2、ARM体系结构的存储器格式有哪几种?(P6465) 答:ARM体系结构可以用两种方法存储字数据,称之为大端格式(big-endian)和小端格式(little-endian)。大端格式:字数据的高字节存储在低地址中,而字数据的低字节
14、则存放在高地址中;小端格式:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。3、ARM状态下和Thumb状态下寄存器的组织有何不同?(P6970) 答:Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。在Thumb状态下,高位寄存器R8R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。4、简述CPSR各状态位的作用,并说明如何对其进行操作,以改变各状态位。(
15、P6768) 答:CPSR可在任何运行模式下被访问,它包含条件码标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。条件码标志位: N 当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0 表示运算的结果为正数或零; Z Z=1 表示运算的结果为零;Z=0表示运算的结果为非零; C 加法(包括比较指令CMN)运算结果产生进位时(无符号数溢出),C=1,否则C=0。 减法(包括比较指令CMP)运算产生借位(无符号数溢出),C=0,否则C=1。 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。 V 对于加/减法运算指令,当操作数和运算结果为二进制
16、的补码表示的带符号数时,V=1表示符号位溢出。 CPSR的低8位(包括I、F、T和M4:0)称为控制位,当发生异常时这些位可以被改变。状态寄存器(PSR)中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。5、ARM体系结构所支持的异常类型有哪些?具体描述各类异常,在应用程序中应该如何处理?(P7071)答:ARM体系结构所支持的异常类型有复位、未定义指令、软件中断、指令预取中止、数据中止、外部中断请求、快速中断请求。具体地: 当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行; 当ARM处理器或协处理器遇到
17、不能处理的指令时,产生未定义指令异常。 软件中断异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。 若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常; 若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常 当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务; 当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。6、ARM指令有哪几种寻址方式?试分别叙述其各自的特点并举例说明。(P77)
18、 答:ARM指令系统支持的基本寻址方式有7种:立即数寻址、寄存器寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、堆栈寻址、相对寻址。他们的特点分别是: 立即数寻址:操作数本身就在指令中给出。如:ADD R0,R0,#0x3f 寄存器寻址:指令中地址码给出的是寄存器编号。如:ADD R0,R1,R2 寄存器间接寻址:寄存器中的值作为操作数的地址,操作数本身存放在存储器中。如:ADD R0,R1,R2 基址变址寻址:将寄存器的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址,用于访问基址附近的存储器单元。如:LDR R0,R1,#4 多寄存器寻址:块拷贝寻址。如:LDMIA R0,
19、R1,R2,R3,R4 堆栈寻址:用堆栈作为地址。如:STMFD SP! R1-R7,LR 相对寻址:以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。如:BL NEXT8、假设R0的内容为0x8000,寄存器R1、R2内容分别为0x01和0x10,存储器内容为空。执行下述指令后,说明PC如何变化?存储器及寄存器的内容如何变化?STMIB R0!,R1,R2 LDMIA R0!,R1,R2答:(1)R0的内容为空,0X8004的内容为0x01,0X8008的内容为0x10. (2)R0的内容为0x01,0X8004的内容为0x10.第五章3、说明
20、嵌入式操作系统进程调度的几种策略,并说出不同之处和优缺点。(P105108) 答:实时调度方法大致可以划分为以下几类:离线和在线调度:离线调度算法具有确定性,但缺乏灵活性,适用于那些特性能够预先确定,且不容易发生变化的应用。在线调度算法的调度信息则在系统运行过程中动态获得,在线调度算法在形成最佳调度决策上具有较大的灵活性。抢占和非抢占调度:在抢占式调度算法中,正在运行的任务可能被其他任务所打断,抢占式调度算法,使关键任务能够打断非关键任务的执行,确保关键任务的截止时间能够得到满足,抢占式调度算法要更复杂些,且需要更多的资源,并可能在使用不当的情况下会造成低优先级任务出现长时间得不到执行的情况。
21、非抢占式调度常用于那些任务需要按照预先确定的顺序进行执行,且只有当任务主动放弃CPU资源后,其他任务才能得到执行的情况。静态和动态调度:在静态调度算法中,任务的优先级需要在系统运行前进行确定,且在运行过程中不会发生变化。在动态调度算法中,任务的优先级可根据需要进行改变,也可能随着时间按照一定的策略自动发生变化。4、嵌入式系统中进程间通信主要采用哪几种形式?(P110) 答:嵌入式系统中进程间通信主要采用两种形式:共享内存和消息传递。二者在逻辑上没有什么区别,进程通信采用哪种方式,主要依赖实际需要。进程间通信也可以采用信号和管道的方式。6、嵌入式操作系统中的内存管理功能有哪些?并做简要阐述。(P
22、120) 答:嵌入式操作系统中的内存管理功能有:1)虚拟内存空间:操作系统采用虚拟内存功能使系统显得它有比实际大得多的内存空间,虚拟内存可以比系统中的物理内存大许多倍。2)内存保护:系统中每个进程有自己的虚拟地址空间,这些虚拟地址空间相互之间完全分离。因此运行一个应用的进程不会影响其他的进程。同样,硬件的虚拟内存机制允许内存区域被写保护,这样保护了代码和数据不被恶意应用重写。3)内存映射:用来把映像和数据文件映像到一个进程的地址空间。在内存映射中,文件的内容被直接链接到进程的虚拟地址空间。4)公平物理内存分配:内存管理子系统分配给系统中运行的每个进程公平的一份系统物理内存。5)共享虚拟内存:允
23、许进程拥有分隔的虚拟地址空间,但有时还需要进程共享内存。如进程间通信需要共享内存。8、常用的linux操作系统采用怎样的内存管理机制和调度机制?(P130)答:Linux内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时,如果发现程序中要用的虚拟地址没有对应的物理内存时,就发出请页要求。如果有空闲的内存可供分配,就请求分配内存,并把正在使用的物理页记录在页缓存中;如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存。为了支持虚拟存储器的管理,Linux系统采用分页(paging)的方式来载入进程。Linux操作系统主要有三种调度算法,一个是基于优先级的循环执
24、行法,二是FIFO算法,三是传统的基于优先级的循环执行法。前两种调度算法都是软实时的,而第三种则并非实时的。第五章小结l 进程是可并发执行的、具有独立功能的程序在一个数据集合上的运行过程,是操作系统进行资源分配和保护的基本单位。一个进程可以简单地认为是一个程序在系统内的唯 一执行。l 不论哪种操作系统,进程的基本调度状态可归为3种:就绪状态、运行状态和阻塞状态。系统总是在处于就绪状态的进程里选择一个就绪进程转换为运行状态。这个在就绪进程中选择一个进程,并使之运行的工作就叫进程调度,这是操作系统的一项重要任务。 l 进程调度应使用恰当的调度算法,以确保公平。实时调度方法大致可以划分为以下4类:离
25、线和在线调度、抢占式和非抢占式调度、静态和动态调度、最佳和试探性调度。 l 嵌入式系统中进程间通信主要采用2种形式:共享内存和消息传递。也可以采用信号和管道的方式。信号主要用于向一个或多个进程发异步事件信号,信号实际上是一个中断的模拟,它不仅可以由硬件产生,也可以由软件产生。管道是单向的字节流,它可以把一个进程的标准输出与另一个进程的标准输入连接起来。l 广义的中断通常被分为中断、自陷和异常(exception)等类别。l 在实时多任务系统中,中断服务程序通常包括3个方面的内容:中断前导:保存中断现场,进入中断处理;用户中断服务程序:完成对中断的具体处理;中断后续:恢复中断现场,退出中断处理。
26、 l 一个完善的内存管理其主要功能有:虚拟内存空间、内存区域写保护、内存映射、公平物理内存分配和共享虚拟内存。l Linux系统是一个多用户多任务操作系统,支持分时处理和软实时处理,并带有微内核特征(如模块加载/卸载机制),具有很好的定制特性。Linux内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址。为了支持虚拟存储器的管理,Linux系统采用分页(paging)的方式来加载进程。l Linux进程状态有5种,分别为运行态、可唤醒态、不可换形态、僵死状态和停滞状态。Linux系统采用进程控制块负责记录和跟踪进程在系统中的全部信息。l Linux支持多种进程间通信机制。其中比较重要的
27、5种是信号、管道、信号量、消息列队和共享内存。第6章 嵌入式Linux开发环境及其在ARM上的移植1、试述嵌入式Linux系统移植的一般过程。(P141142)答:嵌入式系统的开发和应用层软件的开发不同,有其自身的特点,尤其在开发流程上有很大的不同。从大体上讲,Linux系统移植一般分为下面几步:(1)开发环境的搭建嵌入式系统移植过程中,目标机和宿主机往往在软硬件环境上有很大的不同,开发时常常在功能强大的宿主机上进行,这就形成了交叉开发环境的搭建与选择问题。同时由于宿主机和目标机在体系结构等方面的差异,编译时也需要采用交叉编译工具对目标代码进行编译,这样,才能使生成的可执行文件在目标机上能够执
28、行。(2)系统引导在微处理器第一次启动的时候,会从预定的、固定的地址空间开始执行指令。一般的嵌入式系统中并没有PC机上的BIOS,而是由一种称为Bootloader的系统引导程序来完成上述功能,启动代码完全依赖于硬件,需要在系统移植中完成。(3)内核引导系统移植的开发人员还应当完成Bootloader和内核的衔接部分的移植以及I/O映射、存储器映射等与目标硬件平台相关的板级初始化和CPU自身初始化的移植工作。(4)设备驱动程序Linux内核源代码树中的相当大部分是各类驱动程序,在实际的开发过程中,也需要对相应的设备进行驱动,如LCD、网卡、触摸屏等等进行移植和编写。由于一般在Linux源码和相
29、关社区中都拥有相当丰富的设备驱动源码资源,因此,设备驱动的任务主要是相近源码的移植修改工作。(5)文件系统 在嵌入式Linux内核启动的最后阶段,将进行文件系统的加载。不同的嵌入式目标平台有不同的应用需求,需要根据具体情况实现对文件系统的移植工作。目前,常用的嵌入式文件系统有JFFS2、Cramfs、Romfs等。2、Linux系统中常用的交叉编译工具有哪些?简述它们的功能和基本用法。(P143153)答:(1)GNU binutils是一套用来构造和使用二进制所需的工具集。建立嵌入式交叉编译环境,Binutils工具包是必不可少的,而且Binutils与GNU的C编译器gcc是紧密相集成的,
30、没有binutils,gcc也不能正常工作。GNU binutils是一组开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。(2)GUN cc(GUN C Compiler,简称gcc)是GUN项目的C编译器套件,能够编译用C、C+、Objective C编写的程序。(3)make工具通过一个称为makefile的文件来完成并自动维护编译工作。(4)glibc 是提供系统调用和基本函数的C库,比如open,malloc,printf等等。所有动态连接的程序都要用到它。它是编译Linux系统程序很重要的组成部分。(5)gdb是一个用来调试C和C+程序的调试器(Debugger),它能使
31、用户在程序运行时观察程序的内部结构和内存的使用情况。gdb的功能主要是监视程序中变量的值、设置断点以使程序在指定的代码行上停止执行、支持单步执行等。4、在嵌入式系统中使用Bootloader有哪些优点?(P245)答:大多数嵌入式系统还是采用了引导加载程序Bootloader,而不让可执行映像在EEPROM或FLASH中就地执行。这样做是出于几个方面的考虑:(1)效率方面的考虑虽然CPU可以在ROM或FLASH空间就地执行操作系统(包含应用软件)的映像,但是ROM和FLASH的速度往往比不上RAM。所以先把映像从ROM或FLASH空间搬运到RAM空间,然后在RAM空间中运行这个映像,有利于提高
32、系统的运行效率。(2)操作系统的多样性一方面嵌入式系统可以采用很多不同种类的操作系统,同一种操作系统也可以有不同的版本。而且,嵌入式系统的应用软件又常常与操作系统连成一体,这就更增加了系统映像的多样性。另一方面,嵌入式系统的硬件提供商所面对的通常是二次开发商而不是最终用户,往往并不清楚最终用的是什么操作系统,或者手中并无目标操作系统的映像。所以,最好的办法是先在硬件中装上一个引导加载程序,而让二次开发商提供具体的操作系统映像,这样就为采用不同版本,甚至完全不同的操作系统(以及应用程序)映像提供了灵活性。(3)存储地与执行地分离特别是在嵌入式系统的调试阶段,更换系统的可执行映像是很频繁的事情,此
33、时需要把新的可执行映像写入相应的EPROM或FLASH芯片中去。如果让可执行映像就地运行,那就变成要把新的映像覆盖到正在执行的老的映像上,那样当然会带来一些技术上的问题。这说明映像的存储地与执行地应该分离。(4)调试/排错方面的考虑调试/排错方面的考虑也要求在RAM中执行系统映像。嵌入式软件的开发在前期可以采用一些模拟、仿真的调试/排错手段,可是最终总得要“来真格”的,到实际的运行环境中考察、调试。如果目标程序在ROM或FLASH中就地运行,就无法通过这种方法设置断点了。(5)嵌入式系统独特的开发模式嵌入式系统的操作系统内核往往与应用软件静态地连接在一起,而且程序的开发通常是在另一台“主机”上
34、进行,所以每次修改程序以后就得把新的映像“下载”到目标机中,此时就得依靠目标机的引导加载程序。5、简述Bootloader的概念和Bootloader的操作模式。(P247248)答:Bootloader运行时,首先根据设置好的中断向量入口,跳转到相应的入口,进入特权模式,关闭各种模式中断,然后开始做各种初始化工作。大多数Bootloader都包含两种不同的操作模式:“启动加载”模式和“下载”模式,这种区别仅对于开发人员才有意义。从最终用户的角度看,Bootloader的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。(1)启动加载(Boot loading)模式这
35、种模式也称为“自主”(Autonomous)模式。也即Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。这种模式是Bootloader的正常工作模式,因此在嵌入式产品发布的时候,Bootloader显然必须工作在这种模式下。(2)下载(Downloading)模式在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从宿主机(Host)下载文件,如下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被Bootloader写到目标机上的FLASH类固态存储设备中
36、。6、Linux操作系统的移植工作主要分为哪几个方面?其中内核功能模块的裁剪主要有哪几种方法?(P162164) 答:对Linux操作系统的移植工作主要分为两个方面,一方面是针对硬件特点对源代码的修改,比如内核的启动部分、存储设备的大小、具体的驱动问题等等;另一方面是功能模块的裁剪,主要是对内核功能的配置,包括支持的文件类型、外设模块等等。总体上讲,针对硬件的修改有两种方法:(1)对一种全新的硬件平台开展移植工作时,需采用“自底向上”的设计方法从头设计,即从硬件的需求考虑逐步地采用分析、设计、编码、测试。 (2)大多数情况下,是在前人工作的基础上修改己有的代码。Linux己经可以在多种体系结构
37、中运行,可以参考相近的体系结构的代码,修改与目标硬件平台不同的部分即可。嵌入式Linux内核功能模块的裁剪主要有三种方法: (1)使用Linux自身的配置工具,编译定制内核。 (2)修改内核源代码,进行内核裁剪。 (3)基于系统调用关系,进行内核裁剪8、什么是文件系统?常用的嵌入式文件系统有哪些?(P169170)答:文件系统是指在一个物理设备上的任何文件组织和目录,它构成了Linux系统上所有数据的基础,Linux程序、库、系统文件和用户文件都驻留其中,因此,它是系统中庞大复杂且又是最为基本和重要的资源。通常对于一个嵌入式系统,仅包含内核是不够的,还必须有文件系统的支持。Linux支持的文件
38、系统有很多种,比如ext2(LinuxExtended-2)、minix文件系统、msdos(最初的FAT文件系统)、ntfs(WindowsNT文件系统)、nfs(网络文件系统)、hpft(OS/2高性能文件系统)、ncpfs(NovellNetWare文件系统)、affs Amiga(快速文件系统)等等。本章小结嵌入式系统的开发和应用层软件的开发不同,有其自身的特点,尤其在开发流程上有很大的不同。从大体上讲,Linux系统移植一般分为开发环境的搭建、系统引导、内核引导、设备驱动程序和文件系统的移植。通常的嵌入式系统的软件开发采用一种交叉开发的方式。交叉编译通俗地讲就是在一种平台上编译出能运
39、行在体系结构不同的另一种平台上的可执行代码,这种可执行代码并不能在宿主机上执行,而只能在目标板上执行。 在Linux下建立嵌入式交叉编译环境要用到一系列的工具链(tool-chain),主要有GNU Binutils、gcc、glibc、gdb等,它们都属于GNU的工具集。利用make程序的这种自动编译可大大简化开发工作,make工具通过makefile的文件来完成并自动维护编译工作。makefile需要按照某种语法进行编写,要说明如何编译各个源文件使之链接生成可执行文件,并定义各源文件之间的依赖关系。通常构建交叉编译环境有3种方法:一是分步编译和安装交叉编译环境所需要的库和源代码,最终生成交
40、叉编译环境;二是通过Crosstool脚本工具来实现一次编译生成交叉编译环境;三是使用开发平台供应商提供的开发环境安装套件建立交叉编译环境,这是最常用的方法。对Linux操作系统的移植工作主要分为2个方面,一是针对硬件特点对源代码的修改,比如内核的启动部分、存储设备的大小、具体的驱动问题等;二是功能模块的裁剪,主要是对内核功能的配置,包括支持的文件类型、外设模块等。文件系统是指在一个物理设备上的任何文件组织和目录,它构成了Linux系统上所有数据的基础,Linux程序、库、系统文件和用户文件都驻留其中。因此,它是系统中庞大复杂且又是最为基本和重要的资源。通常对于一个嵌入式系统,仅包含内核是不够
41、的,还必须有文件系统的支持。要构建一个小型的Linux文件系统,就需要决定文件系统中哪些部分要保留,哪些部分可以裁减。一个最小的文件系统必须包括以下的内容:程序函数库、库函数文件的链接、/bin/sh(shell)和最基本的设备文件。 第七章1、设备驱动程序在大多数嵌入式系统中起着重要作用,因为它们提供了 应用程序 和 设备 之间的软件层。2、设备驱动程序通常包含 中断处理程序 和 设备服务子程序 两部分。3、嵌入式系统中_按键_、触摸屏 、手写板等都属于字符设备,典型的块设备有_硬盘_、_CD-ROM_等。4、系统中不同的设备有_相同的_主设备号,主设备号 相同的 设备使用_不同的_驱动程序
42、。5、CS8900A有两种工作模式:MEMORY模式和IO模式。6、如何理解设备管理的“设备无关性”概念?(P174) 答:在Linux/uclinux的框架结构中,和设备相关的处理分为文件系统层和设备驱动层。设备驱动层屏蔽具体设备的细节,文件系统层则向用户提供一组统一的、规范的用户接口。在嵌入式操作系统下的设备驱动程序主要是控制和管理下层物理设备的硬件控制器,同时为上层应用提供统一的、与设备无关的系统调用服务,这种设备管理方法称为“设备无关性”。7、Linux中的设备可以分为哪几类,各有何特点?答:Linux中的设备可以分为三类:字符设备、块设备和网络设备。各自的特点是:字符设备是指数据处理
43、以字节为单位按顺序进行的设备,它没有缓冲区,不支持随机读写。在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了。块设备是指那些在输入/输出时数据处理以块为单位的设备,它一般都采用了缓存技术,支持数据的随机读写。网络设备面向的上一层不是文件系统层而是网络协议层,设备节点只有在系统正确初始化网络控制器之后才能建立。内核和网络设备驱动程序间的通信,与字符设备驱动程序、块设备驱动程序与内核间的通信也是完全不一样的。第八章1.什么是GUI? 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。2. GUI
44、的特征? 1体积小 2消耗系统资源少 3系统独立 4可配置、可移植3. GUI的层次结构? 1 MicroWindows 最底层抽象了一个数据结构以表示鼠标、显示屏幕、触摸屏以及键盘,并提供对物理设备的访问的能力。 中间层实现了一个图形引擎。 最高层提供兼容于X Windows和ECMA APIW的两套APIs.2Open GUI 最底层是由汇编语言编写的快速图形引擎。 中间层提供了图形绘制API。 最高层用C+编写,提供完整的GUI对象集。3Mini GUI最底层GAL和IAL提供底层图形接口以及鼠标和键盘的驱动。中间层是Mini GUI的核心层,其中包括窗口系统等必不可缺少的各个模块。最顶层是API,即应用编程接口。