版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统设计大学教程习题和解答第1章嵌入式系统设计基础概念(绪论)1、嵌入式系统定义是什么?你是怎样了解嵌入式系统?(P3)答:嵌入式系统通常定义为以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功效、可靠性、成本、体积、功耗和应用环境有特殊要求专用计算机系统。一个嵌入式系统就是一个硬件和软件集合体,它包含硬件和软件两部分。其中硬件包含嵌入式处理器/控制器/数字信号处理器(DSP)、存放器及外设器件、输入输出(I/O)端口、图形控制器等;软件部分包含操作系统软件(嵌入式操作系统)和应用程序(应用软件),因为应用领域不一样,应用程序千差万别。2、列出并说明嵌入式系统不一样于其它计算机系统关键特征。(P3~P4)答:关键特征有:系统内核小:因为嵌入式系统通常是应用于小型电子装置,系统资源相对有限,所以内核较传统操作系统要小得多。专用性强:嵌入式系统通常是面向特定任务,个性化很强,其中软件系统和硬件结合很紧密,通常要针对硬件进行软件系统移植。运行环境差异大:嵌入式系统使用范围极为广泛,其运行环境差异很大。可靠性要求高:嵌入式系统往往要长久在无人值守环境下运行,甚至是常年运行,所以对可靠性要求尤其高。系统精简和高实时性操作系统:含有固化在非易失性存放器中代码:为了系统初始化,几乎全部系统全部要在非易失性存放器中存放部分代码(开启代码)。为了提升实施速度和系统可靠性,大多数嵌入式系统常常把全部代码(或其压缩代码)固化,存放在存放器芯片或处理器内部存放器件中,而不使用外部存放介质。嵌入式系统开发工作和环境:嵌入式系统开发需要专门开发工具和环境。3、简述嵌入式系统体系结构。(P5)答:嵌入式系统自底向上包含四个部分:硬件平台、嵌入式实时操作系统(RTOS)、硬件抽象层(HAL)和嵌入式实时应用程序。硬件抽象层在操作系统和硬件之间,包含了系统中和硬件相关大部分功效。屏蔽了底层硬件多样性,操作系统不再直接面对具体硬件环境,而是面向由这个中间层次所代表、逻辑上硬件环境。4、嵌入式系统是怎样分类?(P8)答:依据不一样分类标准,嵌入式系统有不一样分类方法。按嵌入式微处理器位数分类:嵌入式系统可分为4位、8位、16位、32位和64位等;按软件实时性需求分类:可分为非实时系统(如PDA)、软实时系统(如消费类产品)和硬实时系统(如工业实时控制系统)。按嵌入式系统复杂程度分类:嵌入式系统可分为小型嵌入式系统、中型嵌入式系统和复杂嵌入式系统。5、什么是实时操作系统,其关键功效是什么?(P8)答:实时多任务操作系统(RealTimemulti-taskingOperationSystem,RTOS)简称实时操作系统,关键用来完成嵌入式实时应用任务调度和控制等关键功效。这些功效是经过内核服务函数形式交给用户调用,也就是RTOS系统调用,或叫做RTOSAPI。6、在日常生活中,你接触过哪些嵌入式产品?她们全部有些什么功效?(P9~P10)答:[略]第2章嵌入式系统设计基础概念1、嵌入式系统硬件由哪多个部分组成?(P12~13)答:嵌入式系统硬件系统是由嵌入式处理器、存放器、I/O接口电路、通信模块和其它外部设备组成。其关键是嵌入式处理器。存放器是组成嵌入式系统硬件关键组成部分。嵌入式处理器工作时,必需有隶属电路支持,如时钟电路、复位电路、调试电路、监视定时器、中止控制电路等,这些电路并不完成数据输入/输出功效,而是为嵌入式处理器工作提供必需条件。嵌入式处理器和通用处理器最大区分在于嵌入式处理器集成了大量不一样功效I/O模块。用户在开发嵌入式系统时,能够依据系统需求选择适宜嵌入式处理器,而无需再另外配置I/O电路。另外,嵌入式系统通常还包含人机交互界面,用于系统和用户交互。人机界面常常使用键盘、液晶屏、触摸屏等部件,以方便和用户交互操作。2、通用处理器和嵌入式处理器有哪些相同和不一样地方?(P13)答:嵌入式微处理器通常含有四个特点:对实时和多任务有很强支持能力,能完成多任务而且有较短中止响应时间,从而使内部代码和实时操作系统实施时间降低到最低程度;含有功效很强存放区保护功效,这是因为嵌入式系统软件结构已模块化,而为了避免在软件模块之间出现错误交叉作用,需要设计强大存放区保护功效,同时也有利于软件诊疗;可扩展处理器结构,以能快速地扩展出满足应用高性能嵌入式微处理器;嵌入式处理器功耗必需很低,尤其是用于便携式无线及移动计算和通信设备中靠电池供电嵌入式系统更是如此,功耗只能为mW甚至μW级。嵌入式处理器和通用处理器最大区分在于嵌入式处理器集成了大量不一样功效I/O模块。用户在开发嵌入式系统时,能够依据系统需求选择适宜嵌入式处理器,而无需再另外配置I/O电路。3、常见嵌入式处理器通常分成哪几大类?(P13)答:嵌入式系统中处理器通常分为三大类,即微处理器(Micro-ProcessorUnit,MPU)、微控制器(Micro-ControllerUnit,MCU)和数字信号处理器(DSP)。微处理器是指功效较强大CPU,它不是为任何特定计算目标而设计。所以这种芯片通常见于个人计算机和服务器。微控制器是针对嵌入式系统而设计,它将CPU、存放器和其它外设全部集成在同一片电路板上。数字信号处理器(DSP)中CPU是针对快速离散时间信号处理计算。所以,DSP很适适用于音频及视频通信。现代芯片生产工艺已经许可将关键处理器内核和多种外围芯片器件整合在一起,以深入降低功耗,达成专用需求,这时,便出现了片上系统SoC(SystemOnChip)。4、什么是嵌入式外围设备?简明说明嵌入式外围设备是怎样分类。(P22~23)答:5、嵌入式操作系统发展经历了哪多个阶段?(P28)答:嵌入式操作系统伴伴随嵌入式系统发展,大致经历了四个阶段:第一阶段:无操作系统嵌入算法阶段,以单芯片为关键可编程控制器形式系统,含有和监测、伺服、指示设备相配合功效。第二阶段:以嵌人式CPU为基础、简单操作系统为关键嵌入式系统。因为CPU种类繁多,所以通用性比较差;系统开销小,效率高;含有一定兼容性和扩展性;系统关键用来控制系统负载和监控应用程序运行。第三阶段:通用嵌入式实时操作系统阶段。以嵌入式操作系统为关键嵌入式系统,能运行于多种类型微处理器上,兼容性好;内核精小、效率高,含有高度模块化和扩展性;含有文件和目录管理、设备支持、多任务、网络支持、图形窗口和用户界面等功效;含有大量应用程序接口(APl);嵌入式应用软件丰富。第四阶段:以基于Internet为标志嵌入式系统。这是一个正在快速发展阶段。嵌入式设备和Internet结合将代表着嵌入式技术真正未来。6、现阶段常见操作系统有哪些?经过调研,指出多个常见嵌入式操作系统特点是什么?常见在什么场所?(P28~29)答:常见嵌入式RTOS分三大类:商用系统、专用系统和开放系统。商品化嵌入式实时操作系统,关键有WindRiverVxworks和pSOS+,3ComPalmOS和MicrosoftWindowsCE等。专用操作系统功效相对较弱,但针对性强,其安全可靠性大全部超出一般商用系统,如应用于手机嵌入式操作系统SymbianOS。开放系统经典代表是嵌入式Linux和mC/OS-Ⅱ。7、嵌入式操作系统关键任务有哪些?(P28)答:嵌入式操作系统通常包含和硬件相关底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统含有通用操作系统基础特点,如能够有效管理越来越复杂系统资源;能够把硬件虚拟化,使得开发人员从繁忙驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集和应用程序。8、嵌入式系统基础设计过程包含哪多个阶段?每一个阶段关键工作有哪些?(P33)答:以自顶向下角度来看,系统设计包含五个阶段,从系统需求分析开始;第二步是规格说明,在这一步,我们对需设计系统功效进行更细致地描述,这些描述并不包含系统组成;第三步是系统结构设计,在这一阶段以大构件为单位设计系统内部具体结构,明确软、硬件功效划分;第四步是构件设计,它包含系统程序模块设计、专用硬件芯片选择及硬件电路设计;第五步是系统集成,在完成了全部构件设计基础上进行系统集成,结构出所需完整系统。9、需求分析阶段细分为哪多个步骤?每个步骤完成什么工作?(P34~35)答:需求分析阶段可细分为四个阶段:1、需求和规格说明:经过和用户进行交流,了解用户意图,明确用户需求,整理成正式规格说明,这些规格说明里包含了进行系统体系结构设计所需要足够信息。2、确定需求:确定这一系列需求不仅需要了解什么是用户需要,而且需要了解她们是怎样表示这些需求。3、简单需求表格:将复杂而费时工作用相对少许格式清楚、简单需求表格来表示,在考虑系统基础特征时能够将这个表格作为检验表。4、需求内部一致性:在写完需求分析以后,应该对它们内部一致性进行检验。10、试经过多种渠道调查现在市场上关键有哪些嵌入式系统开发平台,它们各自有什么特点。答:[略]第3章ARM体系结构及基于ARM9处理器嵌入式系统硬件平台OMAP59121、试比较RISC和CISC体系结构异同,为何ARM内核要采取RISC体系结构?(P47)答:ARM体系结构总设计思绪是在不牺牲性能同时尽可能简化处理器。同时从体系结构层面上支持灵活处理器扩展。这种简化和开放思绪使ARM处理器采取了很简单结构——精简指令集计算机(ReducedInstructionSetComputer,RISC)体系结构来进行实现。传统复杂指令集计算机(ComplexInstructionSetComputer,CISC)结构有其固有缺点,即伴随计算机技术发展而不停引入新复杂指令集,为支持这些新增指令,计算机体系结构会越来越复杂,然而,在CISC指令集多种指令中,其使用频率却相差悬殊,大约有20%指令会被反复使用,占整个程序代码80%。而余下80%指令却不常常使用,在程序设计中只占20%,显然,这种结构是不太合理。基于以上不合理性,1979年美国加州大学伯克利分校提出了RISC概念。RISC并非只是简单地去降低指令。RISC是一个设计思想,其目标是设计出一套能在高时钟频率下单周期实施、简单而有效指令集。RISC设计关键在于降低由硬件实施指令复杂度,因为软件比硬件轻易提供更大灵活性和更高智能。所以,RICS设计对编译器有更高要求;相反,传统CISC则更侧重于硬件实施指令功效性,使CISC指令变得更复杂。2、简述ARM设计思想及其和单纯RISC定义不一样。(P48~49)答:ARM内核并不是一个纯粹RISC体系结构,这是为了使它能够愈加好地适应其关键应用领域——嵌入式系统。为了使ARM指令集能够愈加好地满足嵌入式应用需要,ARM指令集和单纯RISC定义有以下多个方面不一样:部分特定指令周期数可变——并不是全部ARM指令全部是单周期。比如:多寄存器装载/存放Load/Store指令实施周期就是不确定,必需依据被传送寄存器个数来定。假如是访问连续存放器地址,就能够改善性能,因为连续内存访问通常比随机访问要快;同时,代码密度也得到了提升,因为在函数起始和结尾,多个寄存器传输是很常见操作。内嵌桶形移位器产生了更为复杂指令——内嵌桶形移位器是一个硬件部件,在一个输入寄存器被一条指令使用之前,内嵌桶形移位器能够处理该寄存器中数据。它扩展了很多指令功效,以此改善了内核性能,提升了代码密度。Thumb16位指令集——ARM内核增加了一套称之为Thumb指令16位指令集,使得内核既能够实施16位指令,也能够实施32位指令,从而增强了ARM内核功效。16位指令和32位定长指令相比较,代码密度能够提升约30%。条件实施——只有当某个特定条件满足时指令才会被实施。这个特征能够降低分支指令数目,从而改善性能,提升代码密度。3、ARM体系结构发展过程中,关键有哪些变种,对各变种做简明介绍。(P49~50)答:我们将在ARM体系中增加一些特定功效称为ARM体系某种变种(variant),下面介绍ARM体系部分变种形式。(1)Thumb指令集(T变种)Thumb指令集是将ARM指令集一个子集重新编码而形成一个指令集。ARM指令长度为32位,Thumb指令长度为16位。这么,使用Thumb指令集能够得到密度更高代码,这对于需要严格控制产品成本设计很有意义。(2)长乘法指令(M变种)M变种增加了两条用于进行长乘法操作ARM指令:其中一条指令用于实现32位整数乘以32位整数,生成64位整数长乘法操作,另一条指令用于实现32位整数乘以32位整数,然后再加上32位整数,生成64位整数长乘加操作。(3)增强型DSP指令(E变种)E变种包含了部分附加指令,这些指令用于增强处理器对部分经典DSP算法处理性能,关键包含:几条新实现16位数据乘法和乘加操作指令,实现饱和带符号数加减法操作指令。(4)Java加速器Jazelle(J变种)ARMJazelle技术将Java优势和优异32位RISC芯片完美地结合在一起。Jazelle技术提供了Java加速功效,能够得到比一般Java虚拟机高得多性能。和一般Java虚拟机相比,Jazelle使Java代码运行速度提升了3倍,而功耗降低了80%。Jazelle技术使得程序员能够在一个单独处理器上同时运行Java应用程序、已经建立好操作系统、中间件和其它应用程序。和使用协处理器和双处理器相比,使用单独处理器能够在提供高性能同时,确保低功耗和低成本。(5)ARM媒体功效扩展(SIMD变种)SIMD变种关键特点是:能够同时进行两个16位操作数或4个8位操作数运算,提供了小数算术运算,用户能够定义饱和运算模式,两套16位操作数乘加/乘减运算,32位乘以32位小数MAC,同时8位/16位选择操作。4、ARM体系结构版本命名规则有哪些?简单说明ARM7TDMI含义。(P50)答:ARM产品通常以ARM[x][y][z][T][D][M][I][E][J][F][-S]形式出现。ARM体系结构命令规则中这些后缀具体含义见表3-2。ARM7TDMI含义即ARM7内核,增加了Thumb指令集(T变种)、JTAG调试器、长乘法指令(M变种)和嵌入式跟踪宏单元功效。5、列举现在常见ARM微处理器型号及功效特点。(P51~53)答:ARM微处理器现在包含下面多个系列,和其它厂商基于ARM体系结构处理器,除了含有ARM体系结构共同特点以外,每一个系列ARM微处理器全部有各自特点和应用领域。ARM7系列ARM9系列ARM9E系列ARM10E系列ARM11系列SecurCore系列InterXscaleInterStrongARM其中,ARM7、ARM9、ARM9E和ARM10E为4个通用处理器系列,每一个系列提供一套相对独特征能来满足不一样应用领域需求。SecurCore系列专门为安全要求较高应用而设计。6、比较ARM9和ARM7处理器性能特点,试说明它们有何异同。(P55~56)答:ARM7提供了很好性能-功耗比,它包含了Thumb指令集快速乘法指令和ICE调试技术内核。ARM9处理器经过全新设计,采取了更多晶体管,能够达成两倍以上于ARM7处理器处理能力。ARM7内核是0.9MIPS/MHz三级流水线和冯·诺伊曼结构,而ARM9内核是5级流水线,提供1.1MIPS/MHz哈佛结构。从ARM7到ARM9性能提升还起源于存放器读写指令——load和store,和互锁技术应用。7、简单介绍OMAP5912微处理器特点和功效。(P59~60)答:OMAP5912处理器是OMAP1510系列一个分支,是由TI应用最为广泛TMS320C55XDSP内核和低功耗、高性能ARM926EJ-S微处理器组成双核应用处理器,这两个内核经过一个专用处理器内部通信机制相连接。OMAP5912结构图3-10所表示。C55x系列可提供对低功耗应用实时多媒体处理支持;ARM926可满足控制和接口方面处理需要。基于双核结构,OMAP5912含有极强运算能力和极低功耗,首先,产品性能高、省电;其次,同其它OMAP处理器一样,采取开放式、易于开发软件设施,支持广泛操作系统,如Linux、Windows、WinCE、Nucleus、PalmOS、VxWorks等。能够经过API及用户熟悉且易于使用工具优化其应用程序。OMAP5912处理器目标应用是:需要密集信号处理设备通讯终端WAN802.11XBlueToothGSM,GPRS,EDGECDMA视频和图像处理(MPEG4,JPEG,WindowsMediaVideo,etc.)高级语言处理应用(text-to-speech,speechrecognition)音频处理(MPEG-1AudioLayer3[MP3],AMR,WMA,AAC,及其它GSMSpeechCodecs)图形和视频加速数据处理8、常见OMAP5912开发工含有哪些?(P60~61)答:常见OMAP5912开发工含有:(1)OMAP5912StarterKit(OSK)Omap5912基础板,提供了完成设计和测试过程所需全部软件,这包含一系列主板专用库、芯片专用库和一套针对OMAP5912Linux内核Linux开发工具。(2)MU-Q-VGALCDModuleforOMAP5912OSKLCD扩充套件,提供了LCD触摸屏。(3)AcceleratorProgramforOMAP5912针对omap5912OSKLinux和WinCE4.2BSP和驱动程序软件包,方便易用,支持很多设备和扩展模块,如LCD、USBClient&Host、键盘、触摸屏、以太网、串口等设备。(4)RAPIDDEVELOPMENTKIT(RDK)omap5912OSK无线模块扩充套件。(5)PortableDataTerminalReferenceDesign基于omap5912便携式数据终端(PDT)参考设计,一个完整多媒体智能手机设计案例。相关应用包含导航、游戏、学习辅助、通话、娱乐等等。……第4章ARM微处理器编程模型和指令系统1、ARM微处理器有哪多个运行模式?其中哪些是特权模式,哪些又是异常模式?(P64)答:ARM微处理器支持7种运行模式,分别为:用户模式;快速中止模式;外部中止模式;管理模式;数据访问终止模式;系统模式;未定义指令中止模式。除用户模式以外,其它全部6种模式称之为非用户模式,或特权模式(PrivilegedModes);而除去用户模式和系统模式以外5种又称为异常模式(ExceptionModes),常见于处理中止或异常。2、ARM体系结构存放器格式有哪多个?(P64~65)答:ARM体系结构能够用两种方法存放字数据,称之为大端格式(big-endian)和小端格式(little-endian)。大端格式:字数据高字节存放在低地址中,而字数据低字节则存放在高地址中;小端格式:低地址中存放是字数据低字节,高地址存放是字数据高字节。3、ARM状态下和Thumb状态下寄存器组织有何不一样?(P69~70)答:Thumb状态下寄存器集是ARM状态下寄存器集一个子集,程序能够直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一个特权模式下全部有一组SP、LR和SPSR。在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集一部分,但可使用汇编语言程序受限制访问这些寄存器,将其用作快速暂存器。4、简述CPSR各状态位作用,并说明怎样对其进行操作,以改变各状态位。(P67~68)答:CPSR可在任何运行模式下被访问,它包含条件码标志位、中止严禁位、目前处理器模式标志位,和其它部分相关控制和状态位。条件码标志位:N(Negative)当用两个补码表示带符号数进行运算时,N=1表示运算结果为负数;N=0表示运算结果为正数或零;Z(Zero)Z=1表示运算结果为零;Z=0表示运算结果为非零;C(Carry)能够有4种方法设置C值:①加法运算(包含比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,不然C=0。②减法运算(包含比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,不然C=1。③对于包含移位操作非加/减运算指令,C为移出值最终一位。④对于其它非加/减运算指令,C值通常不改变。V(OVerflow)能够有2种方法设置V值:①对于加/减法运算指令,当操作数和运算结果为二进制补码表示带符号数时,V=1表示符号位溢出。②对于其它非加/减运算指令,V值通常不改变。CPSR低8位(包含I、F、T和M[4:0])称为控制位,当发生异常时这些位能够被改变。假如处理器运行特权模式,这些位也能够由程序修改。状态寄存器(PSR)中其它位为保留位,当改变PSR中条件码标志位或控制位时,保留位不要被改变,在程序中也不要使用保留位来存放数据。保留位将用于ARM版本扩展。5、ARM体系结构所支持异常类型有哪些?具体描述各类异常,在应用程序中应该怎样处理?(P70~71)答:ARM体系结构所支持异常类型有复位、未定义指令、软件中止、指令预取中止、数据中止、外部中止请求、快速中止请求。具体地:当处理器复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处实施;当ARM处理器或协处理器碰到不能处理指令时,产生未定义指令异常。可使用该异常机制进行软件仿真;软件中止异常由实施SWI指令产生,可用于用户模式下程序调用特权操作指令。可使用该异常机制实现系统功效调用;若处理器预取指令地址不存在,或该地址不许可目前指令访问,存放器会向处理器发出中止信号,但当预取指令被实施时,才会产生指令预取中止异常;若处理器数据访问指令地址不存在,或该地址不许可目前指令访问时,产生数据中止异常;当处理器外部中止请求引脚有效,且CPSR中I位为0时,产生IRQ异常。系统外设可经过该异常请求中止服务;当处理器快速中止请求引脚有效,且CPSR中F位为0时,产生FIQ异常。6、ARM指令有哪多个寻址方法?试分别叙述其各自特点并举例说明。(P77)答:ARM指令系统支持基础寻址方法有7种:立即数寻址、寄存器寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、堆栈寻址、相对寻址。她们特点分别是:立即数寻址:操作数本身就在指令中给出。如:ADDR0,R0,#0x3f寄存器寻址:指令中地址码给出是寄存器编号。如:ADDR0,R1,R2寄存器间接寻址:寄存器中值作为操作数地址,操作数本身存放在存放器中。如:ADDR0,R1,[R2]基址变址寻址:将寄存器内容和指令中给出地址偏移量相加,从而得到一个操作数有效地址,用于访问基址周围存放器单元。如:LDRR0,[R1,#4]多寄存器寻址:块拷贝寻址。如:LDMIAR0,{R1,R2,R3,R4}堆栈寻址:用堆栈作为地址。如:STMFDSP!{R1-R7,LR}相对寻址:以程序计数器PC目前值为基地址,指令中地址标号作为偏移量,将二者相加以后得到操作数有效地址。如:BLNEXT7、简述ARM指令集分类。(P81)答:ARM指令集总体分为六大类:数据处理指令、程序状态寄存器访问指令、Load/Store指令、跳转指令(转移指令)、异常中止指令、协处理器指令。8、假设R0内容为0x8000,寄存器R1、R2内容分别为0x01和0x10,存放器内容为空。实施下述指令后,说明PC怎样改变?存放器及寄存器内容怎样改变?STMIBR0!,{R1,R2}LDMIAR0!,{R1,R2}答:略。9、怎样从ARM指令集跳转到Thumb指令集?ARM指令集中跳转指令和汇编语言中跳转指令有什么区分?(P96)答:进入Thumb指令模式有2种方法:一个是实施一条交换转移指令BX,将指令中目标地址寄存器最低位置1,并将其它位值放入程序计数器PC,则可进入Thumb指令。另一个方法是利用异常返回,也可把微处理器从ARM模式转换为Thumb模式。在这个过程中,ARM提供了2种机制:当返回地址保留在目前异常模式R14(LR)时,采取传送指令;当返回地址保留在堆栈时,使用多寄存器Load/Store指令。ARM指令集中跳转指令和汇编语言中跳转指令区分是ARM指令集中跳转指令能够直接向程序计数器PC写入跳转地址值。10、ARM指令集支持哪多个协处理器指令?试分别简述并列举其特点。(P93)答:ARM协处理器指令包含以下5条,其特点分别是:CDP协处理器数操作指令:用于ARM处理器通知ARM协处理器实施特定操作,若协处理器不能成功完成特定操作,则产生未定义指令异常。LDC协处理器数据加载指令:用于将源寄存器所指向存放器中字数据传送到目标寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。STC协处理器数据存放指令:用于将源寄存器中字数据传送到目标寄存器所指向存放器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。MCR处理器寄存器到协处理器寄存器数据传送指令:用于将ARM处理器寄存器中数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。MRC协处理器寄存器到ARM处理器寄存器数据传送指令:用于将协处理器寄存器中数据传送到ARM处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。第5章嵌入式操作系统1、嵌入式操作系统进程定义是什么?(P101)答:进程是可并发实施、含有独立功效程序在一个数据集合上运行过程,是操作系统进行资源分配和保护基础单位。2、一个比较完善操作系统应该包含哪多个模块?(P100)答:一个比较完善操作系统应该包含内存管理、进程管理、文件管理和为了充足利用多种资源而设计调度机制等四个模块。3、说明嵌入式操作系统进程调度多个策略,并说出不一样之处和优缺点。(P105~108)答:实时调度方法大致能够划分为以下几类:离线和在线调度:对于离线调度算法,运行过程中使用调度信息在系统运行之前就确定了。离线调度算法含有确定性,但缺乏灵活性,适适用于那些特征能够预先确定,且不轻易发生改变应用。在线调度算法调度信息则在系统运行过程中动态取得,在线调度算法在形成最好调度决议上含有较大灵活性。抢占和非抢占调度:在抢占式调度算法中,正在运行任务可能被其它任务所打断,抢占式调度算法,使关键任务能够打断非关键任务实施,确保关键任务截止时间能够得到满足,抢占式调度算法要更复杂些,且需要更多资源,并可能在使用不妥情况下会造成低优先级任务出现长时间得不到实施情况。非抢占式调度常见于那些任务需要根据预先确定次序进行实施,且只有当任务主动放弃CPU资源后,其它任务才能得到实施情况。静态和动态调度:在静态调度算法中,任务优先级需要在系统运行前进行确定,且在运行过程中不会发生改变。在动态调度算法中,任务优先级可依据需要进行改变,也可能伴随时间根据一定策略自动发生改变。4、嵌入式系统中进程间通信关键采取哪多个形式?(P110)答:嵌入式系统中进程间通信关键采取两种形式:共享内存和消息传输。二者在逻辑上没有什么区分,进程通信采取哪种方法,关键依靠实际需要。进程间通信也能够采取信号和管道方法。5、简述嵌入式操作系统中止管理和时钟管理模式。(P117-118)答:在嵌入式操作系统中,中止前导和中止后续通常由内核中止接管程序来实现。硬件中止发生后,中止接管程序取得控制权,先由中止接管程序进行处理,然后才将控制权交给对应用户中止服务程序。用户中止服务程序实施完成后,又回到中止接管程序。实时内核通常还提供以下中止管理功效:挂接中止服务程序、取得中止服务程序入口地址、获取中止嵌套层次、开中止、关中止。在实时系统中,时钟含有很关键作用。经过时钟,应用和内核能够查询目前时间、定时地完成各项工作、报警、有限等候和睡眠等,是处理含有时间约束特征应用必不可少内容。所以,实时内核全部需要提供对时钟进行管理机制。时钟管理通常含有以下功效:维持日历时间,任务有限等候计时,软定时器定时管理和维持系统时间片XE"时间片"轮转调度。6、嵌入式操作系统中内存管理功效有哪些?并做简明叙述。(P120)答:嵌入式操作系统中内存管理功效有:1)虚拟内存空间:操作系统采取虚拟内存功效使系统显得它有比实际大得多内存空间,虚拟内存能够比系统中物理内存大很多倍。2)内存保护:系统中每个进程有自己虚拟地址空间,这些虚拟地址空间相互之间完全分离。所以运行一个应用进程不会影响其它进程。一样,硬件虚拟内存机制许可内存区域被写保护,这么保护了代码和数据不被恶意应用重写。3)内存映射:用来把映像和数据文件映像到一个进程地址空间。在内存映射中,文件内容被直接链接到进程虚拟地址空间。4)公平物理内存分配:内存管理子系统分配给系统中运行每个进程公平一份系统物理内存。5)共享虚拟内存:许可进程拥有分隔虚拟地址空间,但有时还需要进程共享内存。如进程间通信需要共享内存。7、mC/OS-II关键特点有哪些?简明说明之。(P121)答:mC/OS-II关键特点有:1)公开源代码2)可移植性(Portable)绝大部分mC/OS-II源码是用移植性很强ANSIC写。和微处理器硬件相关那部分是用汇编语言写。汇编语言写部分已经压到最低程度,使得mC/OS-II便于移植到其它微处理器上。mC/OS-II能够在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器(DSP)上运行。3)可固化(Romable)mC/OS-II是为嵌入式应用而设计,这就意味着,只要读者有固化手段(C编译、连接、下载和固化),mC/OS-II能够嵌入到读者产品中成为产品一部分。4)可裁剪(Scalable)能够只使用mC/OS-II中应用程序需要那些系统服务。也就是说某产品能够只使用极少多个mC/OS-II调用,而另一个产品则使用了几乎全部mC/OS-II功效,这么能够降低产品中mC/OS-II所需存放器空间(RAM和ROM)。这种可剪裁性是靠条件编译实现。5)占先式(Preemptive)mC/OS-II是完全占先式实时内核,mC/OS-II总是运行就绪条件下优先级最高任务。6)多任务mC/OS-II能够管理64个任务,现在这一版本保留8个给系统。留给用户应用程序最多能够有56个任务。给予每个任务优先级必需是不相同,这意味着mC/OS-II不支持时间片轮转调度法(常见非抢占式调度算法)。7)可确定性全部mC/OS-II函数调用和服务实施时间含有可确定性。8)任务栈每个任务有自己单独栈,mC/OS-II许可每个任务有不一样栈空间,方便压低应用程序对RAM需求。9)系统服务mC/OS-II提供很多系统服务,比如邮箱、消息队列、信号量、块大小固定内存申请和释放、时间相关函数等。10)中止管理中止能够使正在实施任务临时挂起,假如优先级更高任务被该中止唤醒,则高优先级任务在中止嵌套全部退出后立即实施,中止嵌套层数可达255层。8、常见linux操作系统采取怎样内存管理机制和调度机制?(P130)答:Linux内存管理程序经过映射机制把用户程序逻辑地址映射到物理地址,在用户程序运行时,假如发觉程序中要用虚拟地址没有对应物理内存时,就发出请页要求。假如有空闲内存可供分配,就请求分配内存,并把正在使用物理页统计在页缓存中;假如没有足够内存可供分配,那么就调用交换机制,腾出一部分内存。为了支持虚拟存放器管理,Linux系统采取分页(paging)方法来载入进程。所谓分页即是把实际存放器分割为相同大小段,比如每个段1024个字节,这么1024个字节大小段称为一个页面(page)。Linux属于经典多用户多任务操作系统。它采取分时技术,进程交替实施,实现所谓“假并行”。它关键有三种调度算法,一个是基于优先级循环实施法,二是FIFO算法,三是传统基于优先级循环实施法。前两种调度算法全部是软实时,而第三种则并非实时。第6章嵌入式Linux开发环境及其在ARM上移植1、试述嵌入式Linux系统移植通常过程。(P141~142)答:嵌入式系统开发和应用层软件开发不一样,有其本身特点,尤其在开发步骤上有很大不一样。从大致上讲,Linux系统移植通常分为下面几步:(1)开发环境搭建嵌入式系统移植过程中,目标机和宿主机往往在软硬件环境上有很大不一样,开发时常常在功效强大宿主机上进行,这就形成了交叉开发环境搭建和选择问题。同时因为宿主机和目标机在体系结构等方面差异,编译时也需要采取交叉编译工具对目标代码进行编译,这么,才能使生成可实施文件在目标机上能够实施。(2)系统引导在微处理器第一次开启时候,会从预定、固定地址空间开始实施指令。通常嵌入式系统中并没有PC机上BIOS,而是由一个称为Bootloader系统引导程序来完成上述功效,开启代码完全依靠于硬件,需要在系统移植中完成。(3)内核引导系统移植开发人员还应该完成Bootloader和内核衔接部分移植和I/O映射、存放器映射等和目标硬件平台相关板级初始化和CPU本身初始化移植工作。(4)设备驱动程序Linux内核源代码树中相当大部分是各类驱动程序,在实际开发过程中,也需要对对应设备进行驱动,如LCD、网卡、触摸屏等等进行移植和编写。因为通常在Linux源码和相关小区中全部拥有相当丰富设备驱动源码资源,所以,设备驱动任务关键是相近源码移植修改工作。(5)文件系统在嵌入式Linux内核开启最终阶段,将进行文件系统加载。不一样嵌入式目标平台有不一样应用需求,需要依据具体情况实现对文件系统移植工作。现在,常见嵌入式文件系统有JFFS2、Cramfs、Romfs等。2、Linux系统中常见交叉编译工含有哪些?简述它们功效和基础使用方法。(P143~153)答:(1)GNUbinutils是一套用来结构和使用二进制所需工具集。建立嵌入式交叉编译环境,Binutils工具包是必不可少,而且Binutils和GNUC编译器gcc是紧密相集成,没有binutils,gcc也不能正常工作。GNUbinutils是一组开发工具,包含连接器、汇编器和其它用于目标文件和档案工具。(2)GUNcc(GUNCCompiler,简称gcc)是GUN项目标C编译器套件,能够编译用C、C++、ObjectiveC编写程序。(3)make工具经过一个称为makefile文件来完成并自动维护编译工作。(4)glibc是提供系统调用和基础函数C库,比如open,malloc,printf等等。全部动态连接程序全部要用到它。它是编译Linux系统程序很关键组成部分。(5)gdb是一个用来调试C和C++程序调试器(Debugger),它能使用户在程序运行时观察程序内部结构和内存使用情况。gdb功效关键是监视程序中变量值、设置断点以使程序在指定代码行上停止实施、支持单步实施等。3、怎样分步编译和安装交叉编译环境所需要库和源代码?试着自己构建嵌入式Linux系统交叉编译环境。(P156~160)答:[略]4、5题应在第九章,此处为作者疏漏(见第九章习题)6、Linux操作系统移植工作关键分为哪多个方面?其中内核功效模块裁剪关键有哪多个方法?(P162~164)答:对Linux操作系统移植工作关键分为两个方面,首先是针对硬件特点对源代码修改,比如内核开启部分、存放设备大小、具体驱动问题等等;其次是功效模块裁剪,关键是对内核功效配置,包含支持文件类型、外设模块等等。总体上讲,针对硬件修改有两种方法:(1)对一个全新硬件平台开展移植工作时,需采取“自底向上”设计方法从头设计,即从硬件需求考虑逐步地采取分析、设计、编码、测试。(2)大多数情况下,是在前人工作基础上修改己有代码。Linux己经能够在多个体系结构中运行,能够参考相近体系结构代码,修改和目标硬件平台不一样部分即可。嵌入式Linux内核功效模块裁剪关键有三种方法:(1)使用Linux本身配置工具,编译定制内核。(2)修改内核源代码,进行内核裁剪。(3)基于系统调用关系,进行内核裁剪7、怎样使用Linux本身配置工具编译定制内核?(P169)答:配置完内核以后,内核仍然以源代码方法存在,不能直接下载到嵌入式系统中运行,所以,必需对内核进行编译,生成最终在目标板上运行可实施代码。编译内核分以下三步进行:(1)实施以下命令,正确设置编译内核所需隶属文件,进行依靠性编译:#makedep(2)实施以下命令,清除以前结构内核时产生全部目标文件、模块文件和部分临时文件:#makeclean(3)实施以下命令,生成新可实施内核映像文件:#makezImage完成上述命令以后,就会在/arch/arm/boot/下生成一个自己定制内核映像文件了,系统文件名能够任意取,如zImage.rom。8、什么是文件系统?常见嵌入式文件系统有哪些?(P169~170)答:文件系统是指在一个物理设备上任何文件组织和目录,它组成了Linux系统上全部数据基础,Linux程序、库、系统文件和用户文件全部驻留其中,所以,它是系统中庞大复杂且又是最为基础和关键资源。通常对于一个嵌入式系统,仅包含内核是不够,还必需有文件系统支持。Linux支持文件系统有很多个,比如ext2(LinuxExtended-2)、minix文件系统、msdos(最初FAT文件系统)、ntfs(WindowsNT文件系统)、nfs(网络文件系统)、hpft(OS/2高性能文件系统)、ncpfs(NovellNetWare文件系统)、affsAmiga(快速文件系统)等等。9、怎样构建一个嵌入式Linux文件系统?(P172)答:要构建一个小型Linux文件系统,就需要决定文件系统中哪些部分要保留,哪些部分能够淘汰。首先应该保留那些确保系统运行最基础文件和目录,再经过对系统功效分析,决定哪些模块是能够淘汰。一个最小文件系统必需包含以下内容:程序函数库、库函数文件链接、/bin/sh(shell)、最基础设备文件。不过,这些文件目录组成最基础文件系统只能运行shell,不能完成其它任何应用程序。要完成部分基础功效还需要以下部分文件:init程序、系统开启设置、基础应用程序、设备文件、显示系统信息虚拟文件系统、其它文件系统挂载目录、系统开启时实施脚本、压缩工具等。第7章linux下设备驱动程序开发设计1、设备驱动程序在大多数嵌入式系统中起着关键作用,因为它们提供了应用程序和设备之间软件层。2、设备驱动程序通常包含中止处理程序和设备服务子程序两部分。3、嵌入式系统中_____A____、___C_______、_____D___等全部属于字符设备,经典块设备有_____B_____、____E______等。A.按键B.硬盘C.触摸屏D.手写板E.CD-ROM4、系统中不一样设备有_____A_____主设备号,主设备号A设备使用____A______驱动程序。A.相同B.不一样5、CS8900A有两种工作模式:MEMORY模式和IO模式。6、怎样了解设备管理“设备无关性”概念?(P174)答:在Linux/uclinux框架结构中,和设备相关处理能够分为两个层次——文件系统层和设备驱动层。设备驱动层屏蔽具体设备细节,文件系统层则向用户提供一组统一、规范用户接口。在嵌入式操作系统下设备驱动程序关键是控制和管理下层物理设备硬件控制器,同时为上层应用提供统一、和设备无关系统调用服务,这种设备管理方法称为“设备无关性”。7、按模块化设计,一个经典Linux设备驱动程序应包含哪几部分?在Linux操作系统中怎样实现一个驱动程序开发?(P177)答:一个经典Linux设备驱动程序应包含以下几部分代码:驱动程序模块注册和注销函数、设备打开、关闭、读、写及需要其它操作函数、设备中止服务程序。在Linux操作系统中实现一个驱动程序开发,必需根据以下步骤进行:设备或模块初始化;实现该文件操作接口;注册了设备中止;编写中止服务程序;文件读写操作。8、Linux中设备能够分为哪几类,各有何特点?(P177~179)答:Linux中设备能够分为三类:字符设备、块设备和网络设备。各自特点是:字符设备是指数据处理以字节为单位按次序进行设备,它没有缓冲区,不支持随机读写。在对字符设备发出读/写请求时,实际硬件I/O通常就紧接着发生了。块设备是指那些在输入/输出时数据处理以块为单位设备,它通常全部采取了缓存技术,支持数据随机读写。网络设备面向上一层不是文件系统层而是网络协议层,设备节点只有在系统正确初始化网络控制器以后才能建立。内核和网络设备驱动程序间通信,和字符设备驱动程序、块设备驱动程序和内核间通信也是完全不一样。在Linux中,整个网络接口驱动程序框架可分为四层,从上到下分别为协议接口层、网络设备接口层、提供实际功效设备驱动功效层、和网络设备和网络媒介层。9、怎样了解驱动程序设备文件接口?(P182)答:略。10、具体描述在Linux操作系统下CS8900A网络芯片驱动程序实现。(P194)答:Linux操作系统下CS8900A网络芯片驱动程序实现根据以下步骤进行:(1)初始化CS8900A芯片对于CS8900A芯片,初始化函数是经过cs89x0_probe()和cs89x0_probe1()函数来实现。intcs89x0_probe(structdevice*dev){intbase_addr=CS8900_BASE;returncs89x0_probe1(dev,base_addr);}其中CS8900_BASE是I/O被映射到基地址。staticintcs89x0_probel(structdevice*dev,intioaddr){irq2dev_map[0]=dev;……/*初始化寄存器,建立片选和芯片工作方法*/*(volatileunsignedchar*)0xfffff42b|=0x01; /*output/sleep*/*(volatileunsignedshort*)0xfffff428|=0x0101; /*notsleeping*/*(volatileunsignedchar*)0xfffff42b&=~0x02; /*inputirq5*/*(volatileunsignedshort*)0xfffff428&=~0x0202;/*irq5fcnon*/*(volatileunsignedshort*)0xfffff102=0x8000; /*0x04000000*/*(volatileunsignedshort*)0xfffff112=0x01e1;/*128k,2ws,FLASH,en*/……/*初始化设备结构*/if(dev->priv==NULL){dev->priv=kmalloc(sizeof(structnet_local),GFP_KERNEL);memset(dev->priv,0,sizeof(structnet_local));}dev->base_addr=ioaddr;lp=(structnet_local*)dev->priv;……/*取得芯片类型*/rev_type=readreg(dev,PRODUCT_ID_ADD);lp->chip_type=rev_type&~REVISON_BITS;lp->chip_revision=((rev_type&REVISON_BITS)>>8)+'A';lp->send_cmd=TX_AFTER_ALL;……/*注册接口方法*/dev->open=net_open;dev->stop=net_close;dev->hard_start_xmit=net_send_packet;dev->get_stats=net_get_stats;dev->set_multicast_list=&set_multicast_list;dev->set_mac_address=&set_mac_address;……ether_setup(dev);}(2)编写设备打开函数和关闭函数打开和关闭一个网络接口是由ifconfig命令来完成。当使用ifconfig为一个接口赋地址时,它完成两项工作。第一,它经过ioctl(SIOCSIFADDR)(即SocketI/OControlSetInterFaceADDRess)来赋地址;第二,它经过ioctl(SIOCSIFFLAGS)(即SocketI/OControlSetInterFaceFLAGS)对dev->flag中IFF_UP置位来打开接口。CS8900A是一个ISA设备,不支持共享中止,不过这在嵌入式系统外设比较少情况下对系统性能没什么影响。另外,在接口能够和外界通信以前,还需要将芯片上硬件地址复制到dev->dev_addr指针指向空间上,这个工作也能够在初始化函数cs89x0_probe1中完成。设备打开函数net_open基础步骤以下:①没有在初始化函数中注册中止号和I/O地址,则在设备打开时要进行注册;②将该设备挂到irq2dev_map中。若使用基于中止数据接收方法,以后就能够经过中止号和irq2dev_map数组直接查找对应设备了;③初始化物理设备寄存器;④设置接口对应dev私有数据结构(dev->priv)中部分字段;⑤设置dev中tbusy,interrupt和start等字段。设备关闭函数net_close()和打开函数动作相反。(3)数据包发送/接收函数编写在CS8900A芯片I/O模式下,数据包发送步骤①发送一个传输命令到TxCMD端口(I/Obase+0004h),使芯片进入发送状态;②将要发送数据帧长度发送到TxLength端口(I/Obase+0006h);③经过信息包指针端口(I/Obase+000Ch)读取Burst寄存器(寄存器18),判定Rdy4TxNOW位(第8位)值。假如Rdy4TxNOW值为1,则跳到第4步;假如Rdy4TxNOW位值为0,驱动程序将等候一段时间,再判定Rdy4TxNOW值,直到它为1为止。另外,假如程序中Rdy4TxiE(寄存器BufCFG第8位)被置为1,当CS8900A发送缓冲区可写时,Rdy4Tx(寄存器BufEvent第8位)将被置为1,并触发一个中止,这时候就不需要判定Rdy4TxNOW了;④程序发送函数将反复实施写指令,将数据发送到接收/发送数据端口(I/Obase+0000h)。net_rx()函数操作步骤以下:①申请skb缓存区存放新数据包;②从硬件中读取新抵达数据;③调用函数netif_rx(),将新数据包向网络协议上一层传送;④修改接口统计函数。4)中止处理函数编写通常中止服务程序基础步骤以下:①确定发生中止具体网络接口②打开标志位dev->interrupt,表示本服务程序正在被使用;③读取中止状态寄存器,依据寄存器判定中止发生原因。有两种可能,一个是有新数据包抵达;另一个是上次数据传输已完成。④若是因为有新数据包抵达,则调用接收数据包子函数net_rx();⑤假如中止是上次传输引发,则通知协议上一层,修改接口统计信息,关闭标志位tbusy,为下次传输做准备;⑥关闭标志位interrupt。CS8900A驱动程序中止处理函数实现代码以下:voidcs8900_interrupt(intirq,void*dev_id,structpt_regs*regs){structdevice*dev=(structdevice*)(irq2dev_map[/*FIXME*/0]);structnet_local*lp;intioaddr,status;dev=irq2dev_map[0];dev->interrupt=1;ioaddr=dev->base_addr;lp=(structnet_local*)dev->priv;while((status=readword(dev,ISQ_PORT))){switch(status&ISQ_EVENT_MASK){ /*判定中止类型*/caseISQ_RECEIVER_EVENT:net_rx(dev); /*获取信息包*/break;caseISQ_TRANSMITTER_EVENT:lp->stats.tx_packets++;dev->tbusy=0;mark_bh(NET_BH); /*通知上层*/if((status&TX_OK)==0)lp->stats.tx_errors++;if(status&TX_LOST_CRS)lp->stats.tx_carrier_errors++;if(status&TX_SQE_ERROR)lp->stats.tx_heartbeat_errors++;if(status&TX_LATE_COL)lp->stats.tx_window_errors++;if(status&TX_16_COL)lp->stats.tx_aborted_errors++;break;caseISQ_BUFFER_EVENT:if(status&READY_FOR_TX){dev->tbusy=0;mark_bh(NET_BH); /*通知上层*/}if(status&TX_UNDERRUN){lp->send_underrun++;if(lp->send_underrun>3)lp->send_cmd=TX_AFTER_ALL;}break;caseISQ_RX_MISS_EVENT:lp->stats.rx_missed_errors+=(status>>6);break;caseISQ_TX_COL_EVENT:lp->stats.collisions+=(status>>6);break;}}dev->interrupt=0;return;}第8章用户图形接口GUI1、简述嵌入式系统对GUI基础要求。(P206)答:GUI在嵌入式系统或实时系统中地位将越来越关键,这些系统对GUI基础要求包含:轻型、占用资源少、高性能、高可靠性、可配置、可移植等特点。体积小谈到“嵌入”,真是除了小还是小,现在PC存放器动辄就是以GB论,对于嵌入式硬件来说根本是不可能奢求,大部分嵌入式系统用Flash大全部以16MB或32MB为主,和PC简直是天壤之别,所以这么苛刻环境底下只有尽可能减小软件体积了。消耗系统资源少对于手持式设备如PDA、手机等,最重视就是系统资源及省电功效,在省电前提下CPU速度就不能太高,运算速度越快越耗电,而且散热也会成为很大问题。对于非手持式设备如SetTopBox、部份WebPAD等,这类系统关键考虑是硬件成本,所以嵌入式系统CPU速度不如PC机,存放容量也小得多,所以GUI系统面临着另一个挑战,必需谨慎使用系统资源,不能有任何无谓浪费。系统独立嵌入式系统一大特色就是硬件差异很大,不像PC机全部全部是X86架构。尽管底层硬件差异很大,上层GUI系统仍然需要表现出统一界面,所以嵌入式GUI系统必需尽可能和硬件划清界限,最好设计是在GUI系统和硬件中间有一层系统负责隔离,在这方面,LinuxKernel已经能够饰演这个角色。可配置、可移植嵌入式系统往往是一个定制设备,它们对GUI需求也各不相同。举个简单例子,有系统只要求部分图形功效,而有些系统要求完备GUI支持。所以,GUI本身也必需是可定制。2、简述现在常见嵌入式GUI系统特点。(P207~210)答:现在主流嵌入式GUI系统关键有MicroWindows、Qt/Embedded、Tiny-XWindows、OpenGUI和MiniGUI等。因为嵌入式系统之间在特定应用环境下差异,这些GUI系统在其结构、实现方法、使用方法、应用范围等方面也全部有各自特点。(1)MicroWindowsMicroWindows是一个著名开源嵌入式GUI软件,目标是把现代图形视窗环境引入到运行Linux小型设备和平台上,作为XWindows替换品。它支持多线程,但必需使用PThread库。MicroWindows是一个经典基于Client/Server体系结构GUI系统,采取分层结构。(2)OpenGUIOpenGUI分为三层:最低层是由汇编编写快速图形引擎;中间层提供了图形绘制API,包含线条、矩形、圆弧等,而且兼容于BorlandBGIAPI;第三层用C++编写,提供完整GUI对象集。OpenGUI采取LGPL条款公布。OpenGUI比较适合于基于x86平台实时系统,可移植性稍差,现在发展也基础停滞。(3)Tiny-XWindows以XWindowsSystem搭配Tiny-XServer架构来说,最大优点就是弹性和开发速度。因为和桌面XWindows架构相同,所以相对于很多以Qt、GTK+、FLTK等开发软件来说,移植更轻易。但因为XWindows系统运行还需要其它程序和库支持,包含XWindows管理器、XLib、建立在XLib之上GTK和Qt等函数库,所以,即使是Tiny-XWindows系统,在运行期间所占用系统资源也很多,国外使用Tiny-XWindows环境也多是比较高端平台。另外,Tiny-XWindows是一个多进程GUI,它无法运行在很多仅支持多任务(线程)RTOS上,所以它对于操作系统兼容性较差,实时性不高。(4)Qt/EmbeddedQt/Embedded延续了Qt在X上强大功效,但在底层摒弃了XLib,仅采取FrameBuffer作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse等输入事件,底层接口支持键盘、鼠标、触摸屏和用户自定义设备等。(5)MiniGUIMiniGUI是由北京飞漫软件技术主持自由软件,遵照GPL条款公布(1.2.6及之前版本以LGPL条款公布),其目标是为实时嵌入式Linux系统建立一个快速、稳定和轻量级图形用户界面支持系统。3、比较MicroWindows、Qt/Embedded和MiniGUI功效特征。(P210)答:见表8-1。[略]4、Qt/Embedded图形引擎实现基础是什么,其实现结构是怎样?(P214)答:Qt/Embedded底层图形引擎是基于FrameBuffer之上。FrameBuffer是在Linux内核架构版本2.2以后推出标准显示设备驱动接口。采取mmap系统调用,能够将FrameBuffer显示缓存映射为能够连续访问一段内存指针。FrameBuffer驱动程序实现分为两个方面:首先是对LCD和其相关部件初始化,包含画面缓冲区创建和对DMA通道设置;其次是对画面缓冲区读写,具体代码为read、write、lseek等系统调用接口函数。至于将画面缓冲区内容输入到LCD显示器上,则是由硬件自动完成,对于软件来说是透明。5、简述Qt/Embedded窗口系统工作原理。(P215)答:Qt/Embedded窗口系统采取一个用户/服务器体系结构。一个经典嵌入式Qt窗口系统通常包含:一个服务器进程、一个或多个用户进程。服务器进程负责为用户和其本身分配显示区域、生成鼠标和键盘事件,它通常包含那些开启用户用户界面,比如应用程序发射台。而用户进程则经过和服务器通信来申请显示区域,接收鼠标和键盘事件。用户能够直接访问所分配显示区域,方便为用户提供GUI服务。服务器和用户经过共享内存方法来传输全部分配显示区域上信息,假如需要话还能够维护一个软光标。6、Qt/Embedded中信号和槽概念分别是什么?(P216)答:信号(signal)和槽(slot)是一个高级接口,应用于对象之间通信,它是QT关键特征,也是QT区分于其它工具包关键地方。当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做全部事情,对象并不知道另一端是谁在接收这个信号。这是真正信息封装,它确保对象被看成一个真正软件组件来使用。槽用于接收信号,但它们是一般对象组员函数。一个槽并不知道是否有任何信号和自己相连接。而且,对象并不了解具体通信机制。7、举例说明信号和槽是怎样连接。(P217~218)答:信号和槽连接模型以下图所表示:经过调用QObject对象connect函数来将某个对象信号和另外一个对象槽函数相关联,这么当发射者发射信号时,接收者槽函数将被调用。这个函数作用就是将发射者sender对象中信号signal和接收者receiver中member槽函数联络起来。8、自己动手建立QT/E开发环境(2.x或3.x系列)。(P220~222)答:[略]9、简述Qt/Embedded应用系统基础开发步骤。(P223)答:基于Qt/Embedded开发一个嵌入式应用通常过程以下图所表示。从图中能够看到,应用软件开发工作基础上是在工作站或是PC机上完成。在工作站或PC机上调试运行嵌入式应用,并将输出结果显示在一个仿真小型设备显示终端模拟器上。在开发后期,要依据选择嵌入式硬件平台,将嵌入式应用编译链接成适合在目标平台上运行二进制目标代码。另外因为应用系统使用到了Qt/Embedded库,所以还要对Qt/Embedded库源代码进行交叉编译,然后链接成为适合在目标平台上使用二进制目标代码库。当一个Qt/Embedded应用被下载到目标平台上,并能够可靠运行时,一个开发过程才宣告结束。10、试说明在Qt/Embedded中鼠标类设备和触摸屏设备异同点。(P226)答:Qt/Embedded中没有尤其针对触摸屏设备接口,不过触摸屏和鼠标类设备在功效上基础是一致,所以,在Qt库中通常把触摸屏模拟成鼠标设备来实现对触摸屏设备操作。因为触摸屏在实现原理上存在着A/D量化误差问题,所以全部触摸屏接口实现类需要从特殊类QCalibratedMouseHandler继承,并取得校正功效。另外,触摸屏和鼠标底层接口不一样,会造成对上层接口不一致。比如,从鼠标驱动接口中几乎不会得到绝对位置信息,通常只会得到相对移动量。鼠标接口需要考虑移动加速度,而触摸屏接口则几乎是清一色绝对位置信息和压力信息。针对这类差异,Qt/Embedded将同一类设备接口部分也给区分和抽象。第9章基于OMAP5912开发应用实例1、怎样构建基于OMAP5912嵌入式开发平台。答:[略]2、嵌入式Linux系统开启步骤分哪多个层次?(P244)答:通常来说,一个嵌入式Linux系统开启能够分为四个层次:(1)引导加载程序:Bootloader和包含固化在固件中boot代码(可选项)两大部分。(2)Linux内核:针对特定嵌入式系统专门定制Linux内核和内核开启参数。特定于OMAP平台,选择麦克泰企业MontavistaLinux。(3)文件系统:包含根文件系统和建立于FLASH内存设备之上文件系统。通常见Ramdisk作为根文件系统,它是提供管理系统多种配置文件和系统实施用户应用程序良好运行环境载体。(4)用户应用程序:特定于用户应用程序,而且在用户应用程序和内核层之间可能还会包含一个嵌入式图形用户界面。3、说明嵌入式操作系统MontavistaLinux内核在OMAP5912硬件平台上移植步骤。(P251~254)答:嵌入式操作系统MontavistaLinux内核在OMAP5912硬件平台上移植步骤为:(1)软件环境配置①安装MontavistaPreviewKit到/opt/montavista中。②安装成功后,进行当地用户一个备份操作。③接下来我们将做一个嵌入式内核源码树当地备份。④做一个指向linux-2.4.20_mv131逻辑链接,方便以后编译不一样内核时,只需修改对应链接,而无须对Makefile进行改动。(2)参数配置①根目录:根目录下只需修改Makefile文件。②arch目录:arch目录存放着和体系结构相关部分内核代码。③arch/arm/boot目录:编译出来内核是存放在这个目录中。(3)编译和移植当对内核配置或对应功效进行改动后,通常全部必需重新编译内核。编译内核同时也编译和链接用到各个模块。先设置好环境参量,然后更改目录到当地用户/home/hxh/montavista/kernel/linux中,并运行配置内核命令。还能够对各个设备驱动、多种提供功效进行选择和淘汰,方便达成我们最终应用需求。配置完成以后选择保留。4、怎样了解基于OMAP5912硬件平台MontavistaLinux下设备驱动程序设计和使用?答:略。5、设备驱动程序中需要完成任务包含哪些?(P255)答:设备驱动程序中需要完成任务包含:对设备和对应资源初始化和释放;读取应用程序传送给设备文件数据并回送应用程序请求数据。这需要在用户空间、内核空间、总线及外设之间传输数据。6、在嵌入式系统中使用Bootloader有哪些优点?(P245)答:大多数嵌入式系统还是采取了引导加载程序Bootloader,而不让可实施映像在EEPROM或FLASH中就地实施。这么做是出于多个方面考虑:(1)效率方面考虑即使CPU能够在ROM或FLASH空间就地实施操作系统(包含应用软件)映像,不过ROM和FLASH速度往往比不上RAM。所以先把映像从ROM或FLASH空间搬运到RAM空间,然后在RAM空间中运行这个映像,有利于提升系统运行效率。(2)操作系统多样性首先嵌入式系统能够采取很多不一样种类操作系统,同一个操作系统也能够有不一样版本。而且,嵌入式系统应用软件又常常和操作系统连成一体,这就更增加了系统映像多样性。其次,嵌入式系统硬件提供商所面正确通常是二次开发商而不是最终用户,往往并不清楚最终用是什么操作系统,或手中并无目标操作系统映像。所以,最好措施是先在硬件中装上一个引导加载程序,而让二次开发商提供具体操作系统映像,这么就为采取不一样版本,甚至完全不一样操作系统(和应用程序)映像提供了灵活性。(3)存放地和实施地分离尤其是在嵌入式系统调试阶段,更换系统可实施映像是很频繁事情,此时需要把新可实施映像写入对应EPROM或FLASH芯片中去。假如让可实施映像就地运行,那就变成要把新映像覆盖到正在实施老映像上,那样当然会带来部分技术上问题。这说明映像存放地和实施地应该分离。(4)调试/排错方面考虑调试/排错方面考虑也要求在RAM中实施系统映像。嵌入式软件开发在前期能够采取部分模拟、仿真调试/排错手段,可是最终总得要“来真格”,到实际运行环境中考察、调试。假如目标程序在ROM或FLASH中就地运行,就无法经过这种方法设置断点了。(5)嵌入式系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 太原师范学院《语言学纲要》2025-2026学年期末试卷
- 2026年成人高考土木工程(专升本)材料力学模拟单套试卷
- 2026年抖音美食行业内容创作分析报告
- COPD 主要炎症细胞
- 折叠问题题目及答案
- 2025-2026学年人教版七年级信息技术上册网络基础知识检测卷(含答案)
- 月牙模型题库及答案
- 51装修活动策划方案(3篇)
- 元旦抽奖活动策划方案(3篇)
- 医院寒冬活动策划方案(3篇)
- 社会责任培训精
- 部编版语文二年级下册第2单元核心素养教案
- 9F级立式余热锅炉模块吊装工法
- 《卢氏字辈总汇》
- 第三单元名著导读《经典常谈》课件-部编版语文八年级下册
- (完整)WORD-版本核心高考高频688词汇(高考高频词汇)
- MCS-51单片机技术项目驱动教程C语言第二版牛军课后参考答案
- 2018年河北公务员行测考试真题(含答案)
- 外科病人的代谢与营养治疗第八版
- GB/T 700-2006碳素结构钢
- 大型工业园区规划方案
评论
0/150
提交评论