第一篇:嵌入式考试总结
嵌入式系统定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统应用:工业控制火控系统、飞行控制系统、测试仪器、医疗设备、游戏机 应用发展阶段:无操作系统的嵌入算法阶段、简单监控式的实时操作系统阶段、通用的嵌入式网络实时操作系统阶段
嵌入式系统已经有了近30年的发展历史,它是硬件和软件交替发展的双螺旋式发展
嵌入式系统特点:1 面向特定应用、2 可裁减、3.处理器体系结构和类型多样化。4.大多都有实时操作系统。5 一般有实时性要求。6资源比较少。7 软件固化在存储器芯片中。8 通常要求功耗小。9 集成度高。10嵌入式系统本身不具备自举开发能力 嵌入式系统的组成:硬件平台、板级支持包(BSP)、操作系统、应用程序 嵌入式系统硬件平台:嵌入式处理器、存储器件、外设接口
嵌入式CPU的特点:1 对实时多任务操作系统具有很强的支持能力。2具有功能很强的存储区保护功能。3 处理器结构可扩展。4 低功耗。嵌入式CPU的分类:嵌入式微控制器(EMCU)、嵌入式微处理器(EMPU)、嵌入式DSP处理器(EDSP)、嵌入式片上系统(ESoC)
MCU(MicroController Unit)MCU芯片内集成了ROM/EEPOM、RAM、总线、总线逻辑、I/O等必要功能和外设。已有20多年的历史。如51,98/96。
与MPU比,单片化、体积小,功耗、成本低,可靠性高,能节省系统开支、降低出错概率和减少高频干扰适合控制系统。
发展:内核化(内核 +IP、内核 +FPGA、内核+外围模块)、专用化(接口单片机、网络单片机、射频单片机、数采单片机、电力线载波…)
DSP(Digital Signal Processor)专用于信号处理,采用哈佛体系结构,指令系统特殊,具有较高的编译效率和指令执行速度。如数字滤波、快速傅立叶变换和离散余弦变换等DSP算法。
MPU(MicroProcessor Unit)由CPU演变而来,32位以上。与通用CPU比,MPU只保留与应用相关的功能和硬件,除去冗余的功能部分,实现最少的功耗和资源,满足嵌入式需求。与工业控制计算机比,MPU体积小,重量轻,成本低,可靠性高。常见的嵌入式处理器核:ARM、MIPS、PowerPC、68K、x86 SoC(System on Chip)是嵌入式系统多种形式的统一归宿SOC最大的特点,成功实现软硬件无缝结合,直接在处理器芯片内嵌入操作系统的代码模块。SOC具有极高的综合性。由于绝大部分系统构件都是在系统内部,整个系统特别简洁,不仅减少了功耗和体积,并且提高了可靠性,和设计效率。降低内部工作电压,减少芯片功耗;减少芯片引脚数目,简化制造过程;简化外围驱动单元,优化处理速度; 优化内部电路结构,降低系统噪声
冯.诺伊曼结构,也称普林斯顿结构、程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
哈佛结构:程序指令存储和数据存储分开的存储器结构。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。CISC:复杂指令集 特点是指令数量庞大臃肿,具有大量的指令和寻址方式每个指令不管执行频度高低都处于同一个优先级,程序员的编程工作相对容易。但它的致命弊端是执行效率低下,处理器的晶体管被大量低效的指令所占据,资源利用率颇为低下。
RISC:精简指令集 8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。在通道中只包含最有用的指令 确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单嵌入式处理器采用RISC 指令流水:执行指令的过程:(1)取指令(Fetch)(2)译码(Decode)(3)取操作数(Fetch Operant)(4)执行指令(Execute)(5)写回(Write Back)采用指令流水线技术,提高处理器的执行效率
嵌入式处理器的技术指标 :1.功能:集成的存储器、外设、接口等的种类和数量;2.字长:字长指数据总线位数;3.处理速度:4.寻址能力:寻址能力取决于地址总线的宽度;5.功耗:工作功耗、待机功耗等,功耗与频率,功耗与电压;6.温度:民用、工业用、军用、航天等级别。民用范围为0℃~70℃
嵌入式处理器的选择:
1、技术指标原则:首要考虑功能,其次考虑对其他芯片的支持情况,再次考虑处理器的字长、寻址空间、主频、功耗等;
2、熟悉原则: 降低开发风险和难度;
3、成本原则:处理器成本和额外成本;
4、支持工具原则:选择合适的软件开发工具;
5、整体原则:全盘考虑处理器和其他部件或软件的兼容和约束
嵌入式处理器的发展方向:
1、多核结构:在一个处理器中集成两个或多个完整的CPU核;提升处理器的并行性能。缩短核间的互连和通信延迟。多核结构简单,易于优化设计。
2、更低的功耗:功耗更小,工作方式:等待、暂停、休眠、空闲、节电等;
3、更先进的工艺和更小的封装;
4、更宽的工作电压范围:3.3~5.5 V 2.2~6 V。最低工作电压1.8 V。ARM(Advanced RISC Machines)公司是全球领先的16/32位RISC微处理器知识产权设计供应商
ARM优点:全新设计的RISC结构的32位处理器;因为是全新的设计,开始就是32位,没有历史遗留问题(比如x86)。所以,更便于对处理器结构进行优化;价格低廉;ARM公司不生产芯片,专心研究处理器内核的解决方案;低功耗
ARM架构:32位ALU31个;32位通用寄存器及6位状态寄存器;32X8位乘法器;32X32位桶型移位寄存器;指令译码及控制逻辑;指令流水线;数据地址寄存器 ARM的流水线结构:一条指令的执行可分成若干阶段:(1)取指,从存储器中取出指令(FETCH)(2)译码,指令译码(DEC)(3)取操作数,如从寄存器读取(REG)(4)执行计算(ALU)(5)存储器访问,操作数与存储器有关(Mem)(6)结果写回寄存器(RES)
程序执行时间:T(proc)=N(inst)*CPI/f(clk)T(proc):程序执行时间N(inst):一个程序的指令CPI:执行一条指令的平均周期f(clk):处理器的时钟周期,减少程序执行时间的关键是减少CPI 流水线除了加深流水线的深度和加快时钟频率来提高流水线的效率和吞吐率外,还要解决:结构相关:在流水线中重叠执行的指令,产生资源冲突。ARM中采用I-Cache,D-Cache,ALU采用单独加法器计算地址;数据相关:一条指令需要前面指令的执行结果。定向技术(将ALU结果直接送到ALU输入)、流水线互锁(通过硬件检测,暂停至定向技术可以解决)、编译器优化;控制相关:分支指令时。指令预测、计算分支转移成功的PC值
ARM存储结构:ARM架构处理器的存储器寻址空间有4GB;有的带有I-CACHE和D-CACHE;片内不带RAM和ROM。系统需要的RAM、ROM(包括FLASH)都通过总线外接;由于存储器寻址空间达4GB,有的片内带有MMU;允许外接 PCMCIA 存储器的分类:与CPU的联系:主存:直接和CPU交换信息;辅存:不能直接和CPU交换信息。按存储元件使用的材料:半导体存储器(常作主存);磁存储器(磁带,磁盘);光存储器(光盘)。(对半导体存储器)按读写工作方式可分:RAM(随机存储器),ROM(只读存储器)存储器技术指标:1.存储容量,2.存取速度3.易失性4.只读性5.功耗6.可靠性7.价格 存储空间的组织:实际存储器由多种类型和容量的存储芯片组成。合理安排每个存储芯片的地址范围。存储空间的组织问题实质是地址译码电路的设计问题。地址译码的过程包括两个步骤:先选中某个存储芯片(称为片选),其次选中片内的某个单元(称为片内寻址)。片选过程:由译码电路对高位地址进行译码后产生的片选信号;片内寻址:由地址译码电路对低位地址进行译码实现存储单元寻址。常用的片选方法:线选法、全译码法、部分译码法和混合译码法等。
RAM是一种可读可写的内存,在上电的情况下才能保持在存储器中。(1)存放当前正在执行的程序和数据。(2)存放I/O缓冲数据(3)作为中断服务程序中保护现场信息的堆栈 ROM分类:(1)掩膜型ROM:内容在芯片生产出来之前指定。(2)PROM:一次性编程的只读存储器,OTP(Once Time Program)。(3)EPROM:可以修改ROM中的数据,即重复烧录。紫外线照射。4)E2PROM:断电情况下保存数据,又能在应用系统中在线修改
Flash存储器概述:Flash存储器就是俗称的闪存,它是一种非易失性存储芯片,Flash存储器具有高密度、低价格、非易失性、快速(读取速度较快)及可用电擦除可编程等特点。Flash存储器被广泛应用于各类移动存储器卡、U盘、数码相机记忆卡、记忆棒等。
Flash存储器分类:Flash存储器主要有NOR Flash存储器和NAND Flash存储器两类。NOR Flash:基于Intel公司所开发的架构,可以随机读取任意单元的内容,读取速度较快。写入和擦除的速度较低,以块(Block)为单位进行数据的读/写。最大优点是可以直接从Flash中运行程序,缺点是工艺复杂,价格也比较贵。
NAND Flash:基于东芝公司(Toshiba)所开发的结构通过I/O指令的方式进行读取,因此需要通过驱动程序来读取。存储容量较大、成本较低,常用来制作记忆卡。存储空间是按照块和页(Page)的概念来组织的。
接口的功能:外设识别和寻址,速度匹配和缓冲,时序匹配,信息格式匹配和信息类型转换等。接口的结构:接口一般由数据存储(缓冲)电路,控制命令逻辑电路,状态设置和存储电路构成 接口数据传输的方式:1.程序查询方式。2.中断方式。3.DMA。
接口设计的过程:接口设计首先在硬件上分析接口两侧情况.然后考虑CPU总线与I/O设备之间信号的转换.合理选用I/O接口芯片.进行硬件连接.最后进行接口驱动程序分析与设计。总线:是各种信号线的集合,是嵌入式系统中各部件之间传输数据、地址和控制信息的公共通路.总线的主要参数:总线带宽、总线位宽、总线工作频率等几个.常用的总线:USB总线.I2C总线.DMA总线.SPI总线.I2S总线.CAN总线.RS232C/485总线.IEEE1394总线等
电路:电路是由若干相互连接、相互作用的基本电子器件组成的具有特定功能的电子系统 电路原理图:描述元器件或芯片引脚的逻辑连接的图纸,由元器件、连接、标号等组成。印制电路板(Print Circuit Board,PCB)描述元器件或芯片引脚的物理连接的图纸
采用嵌入式操作系统的必要性:1提高系统的可靠性2提高开发效率,缩短开发周期3能充分发挥32位CPU的多任务潜力
嵌入式操作系统的特点:具备一般操作系统的基本功能,如任务调度、同步机制、中断处理和内存管理等外,还有以下特点:(1)可拆装性(2)支持实时性(3)统一的接口(4)操作方便简单(5)提供强大的网络功能(6)强稳定性、弱交互性(7)固化代码(8)更好的硬件适应性
实时系统主要衡量指标:响应时间(Response Time)控制应用中最重要;生存时间(Survival Time)在此时间内数据有效;吞吐量(Throughout)一定时间内系统可以处理事件的总数 实时操作系统的分类:一.速度分,强实时系统、一般实时系统、弱实时系统.二.确定性分,硬实时系统、软实时系统.三.软件结构分,1、单线程程序(1)循环轮询:特点:对简单系统易于实现、没有中断,不会出现随机性问题、应用领域有限、对大量I/O服务的应用实现困难、大的程序不便调试,适合慢速系统(2)有限状态机:特点:小系统易于实现、可以执行快速、只通过输出功能改变机器的响应、应用领域有限、不能保证确定性、大系统难于调试。(3)事件驱动系统,事件驱动系统是能对外部时间直接响应的系统。包括前后台、实时多任务、多处理器。是RTOS的主要形式。四.开放性分
1、商用系统:特点:充分满足了模块化设计的要求,可把程序按照模块化的要求自然分解成若干独立的任务。启动监控任务程序,提高了系统的可靠性。良好的开发工具,提高了开发效率。特殊设计,避免系统崩溃。产品不断升级。
2、专用系统,一些专业厂家为本公司产品特制的OS,不提供应用开发者使用。如CISCO的网络产品的EPOC等。特点:操作系统功能较弱。针对性强、安全性高
3、开放系统,如:各类嵌入式LINUX(RT LINU、μCLINUX)、μC/OS等。特点:源码公开、功能简单、技术支持差、系统稳定性差、对开发者要求高。
典型的RTOS包括:
1、RTOS基本内核:RTOS基础和核心。包括任务管理、中断管理、基本的通信管理和内存管理。其中对外设的管理只提供中断管理,不提供具体的操作。
2、扩展内核:方便用户使用的扩展,建立在基本内核上。如GUI、TCP/IP、浏览器、电源管理、文件管理
3、设备驱动接口:在内核和IO间,定义软硬件的界线,方便RTOS移植和升级。有的统一于RTOS基本内核。
4、API RTOS与通用操作系统的(GPOS)比较:基本设计原则 :GPOS尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。RTOS:采用各种算法和策略,始终保证系统行为的可预测性(predictability),即在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求.任务调度策略:GPOS:基于优先级的抢先式调度策略,对于优先级相同的进程则采用时间片轮转调度方式,用户进程可以通过系统调用动态地调整自己的优先级,操作系统也可根据情况调整某些进程的优先级。RTOS :采用固定优先级抢先式调度方式,进程的优先级是固定不变的,并且该优先级是在运行前通过某种优先级分配策略来指定的。内存管理:GPOS:虚存管理机制 RTOS:在原有虚存管理机制的基础上增加页面锁。得到 了虚存管理机制为软件开发带来的好处,又提高了系统的可预测性。缺点是由于TLB等机制的设计也是按照注重平均表现的原则进行的,因此系统的可预测性并不能完全得到保障,采用静态内存划分的方式,为每个实时任务划分固定的内存区域。这种方式的优点是系统具有较好的可预测性,缺点是灵活性不够好。中断处理 GPOS:中断处理程序的优先级被设定为高于任何用户进程。RTOS:一种是除时钟中断外,屏蔽所有其它中断,中断处理程序变为周期性的轮询操作,这些操作由核心态的设备驱动程序或由用户态的设备支持库来完成。优点:充分保证了系统的可预测性。缺点:对环境变化的响应可能不如上述中断处理方式快,另外轮询操作在一定程度上降低了CPU的有效利用率。另一种是对于采用轮询方式无法满足需求的外部事件,采用中断方式,其它时间仍然采用轮询方式。此时中断处理程序与所以其它任务一样拥有优先级,调度器根据优先级对处于就绪态的任务和中断处理程序统一进行处理器调度。这种方式使外部事件的响应速度加快,并避免了上述中断方式带来第二个问题,但第一个问题仍然存在。共享资源的互斥访问 GPOS:采用信号量机制来解决共享资源的互斥访问 RTOS:对传统的信号量机制进行了一些扩展,引入了如优先级继承协议、优先级顶置协议以及Stack Resource Policy等机制,较好地解决了优先级倒置的问题。系统调用以及系统内部操作的时间开销 进程通过系统调用得到操作系统提供的服务,操作系统通过内部操作(如上下文切换等)来完成一些内部管理工作。为保证系统的可预测性,实时操作系统中的所有系统调用以及系统内部操作的时间开销都应是有界的,并且该界限是一个具体的量化数值。而在通用操作系统中对这些时间开销则未做如此限制
系统的可重入性 在通用操作系统中,核心态系统调用往往是不可重入的,当一低优先级任务调用核心态系统调用时,在该时间段内到达的高优先级任务必须等到低优先级的系统调用完成才能获得CPU,这就降低了系统的可预测性。因此,实时操作系统中的核心态系统调用往往设计为可重入的。
辅助工具 实时操作系统额外提供了一些辅助工具,如实时任务在最坏情况下的执行时间估算工具、系统的实时性验证工具等,可帮助工程师进行系统的实时性验证工作。
操作系统的移植:嵌入式操作系统还有一个特点是,针对不同的平台,系统不是直接可用的,一般需要经过针对专门平台的移植操作系统才能正常工作。嵌入式操作系统移植的目的是指使操作系统能在某个微处理器或微控制器上运行
操作系统的移植大体可以分为三个层次:结构层次的移植。如果待移植处理器的结构不同于任何已经支持的处理器结构。平台层次的移植。如果待移植处理器是某种操作系统已支持体系的处理器。板级移植。如果所用处理器已被操作系统支持,就只需要板级移植了。包括驱动程序的编写和环境变量设置等内容等
Windows CE系统架构:Windows CE属于比较典型的微内核操作系统。在内核中仅仅实现进程、线程、调度及内存管理等最基本的模块,而把图形系统、文件系统及设备驱动程序等等都作为单独的用户进程来实现
WinCE系统包括四层结构:应用程序、WinCE内核映像、板级支持包(BSP)、硬件平台。BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,它主要的功能是给上层提供统一接口,同时屏蔽各种硬件底层的差异,以及提供操作系统的驱动及硬件驱动。简单的说,就是BSP包含了所有与硬件有关的代码,为操作系统提供了硬件平台无关性
BSP组成:是一个包括启动程序Bootloader、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备的驱动程序和配置文件的软件包。
WinCE BSP组成:OEM改编层,Bootloader,设备驱动,配置文件
Windows CE开发环境搭建:1安装ActiveSync4.5用于连接WindowsCE设备和安装桌面Windows的PC机的工具2安装Visual Studio 2005开发套件3安装Visual Studio 2005 SP1 4安装目标设备SDK:Windows Mobile 6 professional SDK,Windows Mobile 6 professional image(CHS)
嵌入式系统的开发模式:嵌入式的开发与通用计算机系统的开发的最大不同是嵌入式系统采用交叉开发的架构。首先,利用主机系统上丰富的资源及良好的开发环境开发和仿真调试目标系统上的软件。然后通过接口将交叉编译的目标代码传输到目标系统上,并用交叉调试器在监控程序或实时内核/操作系统的支持下进行实时分析和调度。最后,目标系统在特定的环境下运行
嵌入式系统交叉开发环境:指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器,交叉编译器,交叉调试器,仿真器,下载器等,由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。
嵌入式开发环境的建立:1根据目标系统的处理器体系结构选择合适的工具和仿真器2根据目标系统上的接口资源,选择合适的开发主机和目标系统的联系方式3选择合适的开发主机操作系统(WINDOWS,LINUX)4在目标机和主机系统安装相应开发工具,建立开发环境5嵌入式软件开发工具根据不同的阶段分类:需求分析工具,软件设计工具,编码调试工具,测试工具,配置管理工具、维护工具等。
嵌入式软件开发工具根据嵌入式软件开发分类:与嵌入式QS相关的开发工具,用于开发:基于嵌入式OS的应用,部分驱动程序等;与嵌入式QS无关的开发工具,用于开发:基本的驱动程序,辅助硬件调试程序,系统软件等
交叉调试器:调试程序和被调试程序运行在不同机器上的调试器。调试器通过某种方式能控制目标机上被调试程序的运行方式。通过调试器能查看和修改目标机上的内存、寄存器以及被调试程序中的变量等。典型的交叉调试器方法:Crash and Burn,ROM Moniter。ROM Emulator,In Circuit E mulator,On Chip Debugging ROM Moniter:ROM Monitor是被固化且运行在目标机上的一段程序,负责监控目标机上被调试程序的运行,与宿主机端的调试器一起完成对应用程序的调试。调试器与ROM Monitor之间的通信遵循远程调试协议。
ROM Monitor能配合调试器完成:程序映像下载;对目标机系统内存的读写;对寄存器的读写;设置和清除不同类型的断点;单步执行指令;复位系统等调试功能
调试过程(1)启动目标机,监控器掌握对目标机的控制,等待和调试器建立连接;(2)启动调试器,并和监控器建立起通信连接;(3)使用调试器将应用程序下载到目标机上的RAM空间中;(4)使用调试器进行调试,发出各种调试命令,监控器解释并执行这些命令,通过目标机上的各种异常来获取对目标机的控制,将命令执行结果回传给调试器;(5)如果程序有问题,在调试器的帮助下定位错误;修改之后再重新编译链接并下载程序,开始新的调试,如此反复直至程序正确运行为止。
ROM Emulator:ROM Emulator是一种用于替代目标机上的ROM芯片的设备,即ROM仿真器。利用这种设备,目标机可以没有ROM芯片,但目标机的CPU可以读取ROM Emulator设备上ROM芯片的内容:ROM Emulator设备上的ROM芯片的地址可以实时地映射到目标机的ROM地址空间,从而仿真(Emulation)目标机的ROM。
ICE(In-Circuit Emulator)是一种用于替代目标机上CPU的设备,即在线仿真器。它比一般的CPU有更多的引出线,能够将内部的信号输出到被控制的目标机。ICE上的Memory也可以被映射到用户的程序空间,这样即使目标机不存在的情形下也可以进行代码的调试。连接ICE和目标机时,一般是将目标机的CPU取下,而将ICE的CPU引出线接到目标机的CPU插槽。用ICE进行调试时,在Host端运行的调试器通过ICE来控制目标机上运行的程序。适用于:调试实时的应用系统;调试设备驱动程序;对硬件进行功能和性能的测试;实时性能分析
OCD(On Chip Debugging)是CPU芯片提供的一种调试功能(片上调试),可以认为是一种廉价的ICE功能:OCD的价格只有ICE的20%,但提供了ICE 80%的功能。调试方法:1)将CPU的模式分为一般模式和调试模式2)一般模式下,CPU从内存读取指令执行3)调试模式下,CPU首先从调试端口读取指令,通过调试端口可以控制CPU进入和退出调试模式;Host端的调试器可以直接向目标机发送要执行的指令,读写目标机的内存和各种寄存器,控制目标程序的运行以及完成各种复杂的调试功能。
软件仿真器调试的特点:优点:最大好处就是可以不用真正的目标机,可以在目标机环境并不存在的条件下开发目标机上的应用系统,并且在调试时可以利用Host资源提供更详细的错误诊断信息。缺点:和实际的运行环境差别很大;设备模拟的局限性较大;实时特性较差;对Host的资源要求较高。适用范围:对时间特性没有严格要求、没有特殊外设、只需要验证逻辑正确的应用程序
嵌入式软件测试工具:能够用来辅助测试的工具,主要用来支持测试人员的工作。一般有内存分析工具,性能分析工具,覆盖分析工具,缺陷跟踪工具等。
软硬件分开设计存在问题:缺少统一的软硬件表示方法;划分依靠先验定义;不能够验证整个系统;通过HW/SW边界时很难发现不兼容问题;缺少成熟的设计流程;上市时间问题;描述更改变得困难
软硬件协同设计定义:软硬件共同设计目的是为硬件和软件的协同描述,验证和综合提供一种集成环境
软硬件协同设计的基本需求:统一的软硬件描述方式;交互式软硬件划分技术 ;完整的软硬件模型基础;正确的验证方法 软件硬件协同设计的设计流程:用HDL语言和C语言进行系统描述并进行模拟仿真和系统功能验证;对软硬件实现进行功能划分,分别用语言进行设计并将其综合起来进行功能验证和性能预测等仿真确认(协调模拟仿真);如无问题则进行软件和硬件详细设计;最后系统测试 软件硬件协同设计的特点:缩短开发周期;取得更好的设计效果;满足苛刻的设计限制 ; 这种平台的推出将不仅包含芯片本身,还必须包含完整的开发系统和典型应用实例,而供应商提供的服务和技术支持也当然要成为产品不可分割的一部分 缺点:典型的手动划分(manual Partition);固定应用领域(carefully very specialized);逐渐增长的评估需求支持很弱(no abstract models);主要强调性能;模型的连贯性在设计重用中不被支持;商业系统更强调协同验证(co-verification)方面(more achievable goal)
嵌入式系统典型的接口(RS232RS484USB、同步串口及其他串口、I2C、I2S、AC97、LAN等的应用特点): RS232:采用RS232的三根线进行通信。接口为D型的9针阳性的插头。低速红外异步通信接口,支持使用红外的双向无线通信,提供发送编码器和接收解码器,支持IrDAV1.11的物理链路。不支持IR LED驱动器和接收放大器。支持半双工,最高波特率115.2Kb/s。蓝牙 I2C总线接口:由PHILIPS创建的双线方式串行总线.双向数据线用于输入输出,双向时钟线用于控制和采样,每个设备有一个地址,采用主从方式通信。实现主机与外设间通信.允许多主机,此时采用裁决控制器。I2C单元是处理器内部总线上的设备。USB:Host控制器基于PCI,提高了系统性能,即插即用,无需手动设置地址、中断……热插拨,系统不需重启便可工作.易于扩展,理论上可连接多达127个设备,但一般都只限于连接两三个设备,真正组网后的系统稳定因素需要探讨.USB2.0以低成本实现高达480Mb/s的传输率(USB1.0的全速设备可达12Mb/s)接口标准统一、端口供电 AC97控制器:支持AC97 V2.实现话音数字化
内部集成电路声音控制器(I2S)用于数字立体声的规程 多媒体卡控制器(MMC)
Boot Loader技术:嵌入式系统中的 OS 启动加载程序.引导加载程序(包括固化在固件(firmware)中的boot代码,和Boot Loader两大部分,是系统加电后运行的第一段软件代码).相对于操作系统内核来说,它是一个硬件抽象层,系统的加载启动任务就完全由 Boot Loader 来完成,在操作系统内核运行之前运行一段小程序
功能:初始化硬件设备,建立内存空间的映射图,调整系统软硬件环境,以便操作系统内核启动
不通用:依赖于硬件,依赖于具体的板级配置 不同的 CPU有不同的Boot Loader 多阶段的 Boot Loader:提供更为复杂的功能,以及更好的可移植性,从固态存储设备上启动的 Boot Loader 大多都是 2 阶段的启动过程,启动过程可以分为 stage 1和stage2两部分 两种不同的操作模式:一.启动加载模式:自主(Autonomous)模式,从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,Boot Loader 的正常工作模式
二.下载模式:通过串口连接或网络连接等通信手段从主机(Host)下载文件,如:下载内核映像和根文件系统映像等。从主机下载的文件通常首先被 Boot Loader 保存到目标机的 RAM 中,然后再被 BootLoader 写到目标机上的FLASH 类固态存储设备中。通常在第一次安装内核与根文件系统时被使用系统更新也会使用 Boot Loader 的这种工作模式,通常都会向它的终端用户提供一个简单的命令行接口
第二篇:嵌入式考试笔试
基于双核处理器的视频观瞄设备,同时实现标清分辨率的红外和可见光两路模拟复合信号采集和处理,且由两个内核中的CoreA完成红外通道视频信号处理,CoreB完成可见光通道视频处理,系统需要按照嵌入式系统模式实现“通道关联”实时红外信号检测与目标型号判别。
要求:
1.画出实现此功能的硬件流程图和软件流程图
2.程序会用到数据结构和数据传输流程
3.在多任务情况下,进程和线程的区别与联系。以及如何保持同步
4.影响实时性的主要参数,以及如何改善。
解:
12数据结构会用到乒乓双缓冲
3进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.联系:线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
区别:进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
多任务下的同步:在多任务操作系统下,要保持线程和进程的同步利用:1临界区2互斥锁3信号量4事件机制
4.所谓的实时性,也就是从系统发生到系统响应的时间。或者,更广泛一点,也就是从用户输入一个信息到系统处理完以后,返回给用户的这个反应时间。影响实时性一般有一下几个方面:
1>中断响应时间
2>RTOS进程调度响应时间
3>任务切换时间
4>应用程序响应时间
改善:
中断的响应时间是有处理器决定的,可以有系统设置来改善。或者寻找更好的处理器。
对于进程调度本身,有很多经典的算法,可参考操作系统的理论部分,有些算法的实时性稍高,但整体性就稍差,有些则相反,可以选择高效的进程调度策略,来提高进程响应速度。另外,尽量减少系统的进程数,进程越少,处理器的负担越小,响应就越快。进程中屏蔽中断的地方就越少,则整体响应时间就越快。
采用抢占式内核处理形式
提高应用程序的执行效率
第三篇:嵌入式总结
一、嵌入式系统原理与应用课程总结
这个学期我学习了《嵌入式原理与应用》这门课程,虽然这个学期马上就要结束了,对嵌入式的学习也要告一段落了,但是我觉得收获还是很大的。学期开始,我开始学习《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概念都比较模糊,真是茫然无从下手。虽然一个学期的学习时间不是很长,但是我觉得对嵌入式系统也已经有了一个大致的概念。对它的历史发展与今后展望都有了一定的了解。嵌入式技术的掌握是需要一个过程的,对嵌入式技术的全面掌握是有相当难度的。如果要真正掌握的话还是需要一步步积累才能熟练掌握的,所以我们还要自己多加学习,不断地回顾以前学到的知识,也要吸收新的概念与技术,使自己的学习目标更加明确,学习方法更加完善,也体会到软件开发的乐趣,更加清楚的认识到自己在软件开发学习上的一些不足之处,并且不断改进以提高自己。
通过这门课程的学习,我了解到了嵌入式系统是一种为特定设备服务,软硬件可裁剪的计算机系统,其英文名称是Embedded System。嵌入式系统的范围很广,特点是形式变化多样、体积小,可以灵活地适应各种设备的需求。嵌入式系统的一些例子:手机、汽车、ATM、数字电视、医疗仪器等等。嵌入式系统本身是一个相对模糊的定义,一个手持的MP3和一个PC104的微型工业控制计算机都可以认为是嵌入式系统。总体来说,嵌入式系统是“用于控制,监视或者辅助操作机器和设备的装备”。一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。嵌入式系统的发展是从电子计算机诞生以来,计算机的发展有两个方向:一个方向是体积大型化、处理能力超强的大型计算机;另一个是向体积小型化,功能多样化的方向发展。嵌入式微控制器,即传统意义上的单片机,是目前嵌入式系统的前身。一般都是8位或者16位。嵌入式微处理器,单片机的发展时间较早,处理能力很低,只能应用在一些相对简单的控制领域。嵌入式微处理器是近几年随着大规模集成电路发展同步发展起来的。与单片机相比,嵌入式微处理器的处理能力更强,主流的嵌入式微处理器都是32位的。嵌入式微处理器在一个芯片上集成了复杂的功能,有的还把常见的外部设备控制器也集成到芯片内部。未来嵌入式系统的发展方向,随着微电子技术的发展和电子制造工艺的进步,嵌入式系统硬件的体积会不断缩小,系统稳定性也在不断增强,可以把更多功能集成到一个芯片上;同时功耗方面也不断降低。随着网络的普及和IPv6技术的应用,IPv6技术主要解决了IPv4的IP地址数目紧缺的现状,越来越多的嵌入式设备也会加入到网络中。典型的嵌入式系统的组成,嵌入式系统包括硬件和软件。硬件包括了嵌入式微处理器和嵌入式微控制器以及一些外围元器件和外部设备;软件包括了嵌入式操作系统和应用软件。嵌入式系统硬件种类繁多,有许多硬件和软件的解决方案,不同嵌入式系统软硬件很难兼容,软件必须修改而硬件必须重新设计才能使用。不仅如此,我们还要对软件硬件都有所了解才可以逐渐有所领悟。软件和硬件都是学习嵌入式系统必不可少的方面。其实我现在仍旧觉得在嵌入式系统这个博大精深的领域,我还有太多太多不懂的地方,需要学习的还有很读。嵌入式软件开发应用广泛而且前景很好,目前正处于人才紧缺的关口,嵌入式技术在未来能够得到更加广泛的应用。学好嵌入式,C语言很重要,所以感觉自己有必要在学习、积累一下这方面的知识。很多东西的学习不死一帆风顺也是比较耗时的,嵌入式也不例外,要想学好还必须下大力气,还必须坚持。这次的课程让我明确了一点:嵌入式开发对于提升我们的系统知识有很大的帮助,尤其是操作系统的知识。嵌入式系统开发对于我们的知识面要求非常的广,且要有一定的深度。,平时上完理论课很少有时间上机进行时间或者隔几天才上机练习,等到上机时一些东西可能遗忘了,比较耗费时间。在课上,有老师在前面演示我们感觉看得懂或感觉没问题,可轮到我们独立完成的时候,因为实际操作的少,跟着问题就来了。有些即使老师讲了很多遍的问题,我们不会,老师还是会走进我们给我们耐心的指导,还给我们讲一些学习的方法,一些软件开发需要注意的细节,让我们知道自己在哪方面不足,需要加强,也让我们了解到哪些需要认真的学习,那些是重点,不是没有方向的乱学一通,结果什么也学不好。经过这次的课程,我真真确确地感受到了嵌入式在我们生活中工作中的运用,这些软件、程序能让我们提高工作的效率,更直观更便捷的切入主题。当然,在学习的过程中并不是一帆风顺的,在这之中,因为要操作的东西很多,有时错一步,后面的结果就无法显示,而自己的水平根本检查不出来是哪里出了错。这时候,老师都会耐心的过来帮助我们一起去解决。在平时我们就需要好好的查阅书籍或者上网搜集相关资料去解决问题。
在了解了基础知识的情况下,我们还同步地进行了上机操作,当然,其中遇到很多的难题,很多东西都是第一次接触,又没有很多的指导操作,主要还是要凭借自己去摸索练习。其中的困难可想而知。然而坚持就是胜利,只要坚持做下去。通过这学期的实验课程,我感觉收获还是蛮多的。可能我对于嵌入式的知识学习的还是不太多,但是这之外的东西收获颇丰。它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓“一份耕耘,一份收获”。没有付出,何谈回报呢?再者,通过这学期的实验课程,我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学习的过程。当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。
其实,我觉得最大的收获不仅仅是我学习到了多少知识,还有学习给我的感悟。首先是心态。一定要有一个积极的心态,独立解决问题的意识,培养扎实基础的认识。不要什么东西都感觉跟简单,很多东西可能是看似简单,就不去做了或者不屑一做,以至于性网上搜搜就可以了,这样很不好。有自己的东西有自己的付出才会有程序运行成功时的喜悦和小自豪,这样也有助于培养自己的兴趣。要时刻牢记态度决定一切。其次是兴趣,感觉学习工作中兴趣很关键,只是一个引发人积极性的问题,有了兴趣就自觉了,效率自然就高了。再次要敢于尝试和挑战。不要安于现成的程序,而且不要害怕失败,在程序调试的过程中这点尤为重要,“发现出问题然后解决问题”是一个积累经验的过程,而且很高效。最后要不懈追求。对于源代码进行不断的完善,要尽可能的实现课题所要求的功能。对于初学者或者开发较少的人来说,大量大写程序还是有必要的,但同时要注意思考,理解其实现的内在意义。还可以自己添加一些有意义的功能来实现。当看到自己编写的程序正常运行时,兴趣也会随之而来,乐此不疲,形成一个良性循环。我相信在以后的学习工作中,我也会端正自己的学习态度,一丝不苟的去对待每一件事。只有做好足够的准备,才能事半功倍!
第四篇:嵌入式Linux考试习题总结
第1章
1.嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。嵌入式系统一般有3个主要的组成部分:硬件、实时操作系统以及应用软件。
2.嵌入式系统的三要素是嵌入、专用、计算机;即以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3.目前国际较为知名的有:VxWorks、NeutrinoRTOS、Nucleus Plus、OS/
9、VRTX、LynuxOS,RTLinux、BlueCat RT等。
4.嵌入式系统一般由硬件层、中间层、软件层和功能层组成。其作用分别如下:
(1)硬件层 :由嵌入式微处理器、外围电路和外设组成。操作系统和应用程序都可以固化在ROM或者Flash中。为方便使用,有的模块在此基础上增加了LCD、键盘、USB接口,以及其他一些功能的扩展电路。
(2)中间层 :硬件层与软件层之间为中间层,其作用将系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关;
(3)软件层 :主要是操作系统,有的还包括文件系统、图形用户接口和网络系统等。操作系统是一个标准的内核,将中断、I/O、定时器等资源都封装起来,以方便用户使用。(4)功能层 :由基于操作系统开发的应用程序组成,用来完成对被控对象的控制功能。5.非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了。6.在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,这样的系统被称硬实时系统。在弱实时系统中,超时却不会发生致命的错误。其实时性的要求比硬实时系统要差一些。
7.嵌入式系统的设计步骤及各部分的主要工作如下。(1)需求分析阶段,罗列出用户的需求;
(2)体系结构设计阶段,描述系统的功能如何实现;
(3)详细设计阶段,进行硬件系统与软件系统的分类划分,以决定哪些功能用硬件实现,哪些用软件实现;
(4)系统集成,把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进在设计过程中的错误;
(5)系统测试,对设计好的系统进行测试,看其是否满足给定的要求。8.Linux作为嵌入式操作系统的优势主要有以下几点:
(1)可应用于多种硬件平台。
(2)Linux的高度模块化使添加部件非常容易。
(3)Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件的一种通用操作系统。
(4)Linux可以随意地配置,不需要任何的许可证或商家的合作关系。
(5)Linux带有Unix用户熟悉的完善的开发工具。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。9. Linux执行进程调度一般是在以下情况发生的:(1)正在执行的进程运行完毕;
(2)正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态;(3)正在执行的进程调用了P原语操作,从而因资源不足而被阻塞;(4)执行中的进程提出I/O请求后被阻塞;(5)系统分配的时间片已经用完;
(6)就绪队列中的某个进程的优先级变得高于当前运行进程的优先级。
第4章
1、Linux 内核的编译菜单有好几个版本,运行:
(1)make config:进入命令行,可以一行一行的配置,但使用不十分方便。
(2)make menuconfig:大多数开发人员使用的Linux 内核编译菜单,使用方便。
(3)make xconfig:在2.4.X 以及以前版本中xconfig 菜单是基于TCL/TK 的图形库的。
2、在完成内核的裁减之后,内核的编译就只要执行以下几条命令: make clean
编译内核之前先把环境给清理干净。make dep
编译相关依赖文件 make zImage
创建内核镜像文件 make modules 创建内核模块。
make install
把相关文件拷贝到默认的目录。
3、此命令是装载压缩映像文件zImage到flash存储器中,地址是kernel分区,并采用xmodem传输协议。
4、此命令是设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0。
5、此命令将nfs服务的共享目录sharedir加载到/mnt/nfs。
6、此命令是装载根文件系统root.cramfs到flash存储器中,地址是根文件系统分区,并采用xmodem传输协议。
7、这个命令的操作同时进行了分区和格式化,0~128K存放vivi,128K~192K存放VIVI控制台指令,192K~1216K存放kernel,1216K~4288K存放root,其余部分存放应用程序。
第6章
1.使用虚拟地址寻址整个系统的主存和辅存的方式在现代操作系统中被称为虚拟内存。虚拟内存的管理方法使系统既可以运行体积比物理内存还要大的应用程序,也可以实现“按需调页”策略,既满足了程序的运行速度,又节约了物理内存空间。2.进程内存区域涉及到5种数据段,即:
①代码段:代码段是用来存放可执行文件的操作指令。
②数据段:数据段用来存放可执行文件中已初始化全局变量。③BSS段:BSS段包含了程序中未初始化的全局变量。④堆(heap):用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。
⑤栈:栈是用户存放程序临时创建的局部变量。3.在Linux系统中,内核在最高级执行,也称为“系统态”,在这一级任何操作都可以执行。而应用程序则执行在最低级,即所谓的“用户态”。在这一级处理器禁止对硬件的直接访问和对内存的未授权访问。模块是在所谓的“内核空间”中运行的,而应用程序则是在“用户空间”中运行的。它们分别引用不同的内存映射,也就是程序代码使用不同的“地址空间”。4.共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。5.内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。
第9章
1.参考答案:
Mutex互斥量,用于操作某个临界资源时对该资源上锁,以实现互斥地对独占资源的使用。Semophore信号灯,信号灯内有一计数器,可以用于对多个同类资源的分配。当资源用完时,申请资源的线程会在信号量上睡眠,有线程释放资源时,再将该线程唤醒继续运行。
Condition条件变量,条件变量用于等待信号。当一个线程需要等待某个信号时,就可到条件变量上等待,当信号具备时,系统会唤醒该线程继续运行。2.参考答案:
本地:共享内存+信号量,适合于大量数据传输。Linux支持系统V和POSIX的共享内存和信号量。(5分)
远程:Socket+应用协议。适合于跨网络的(大量)数据传输。Linux支持BSD的socket。应用层协议需要自行设计。(5分)
3.答案要点:程序是编译后形成的可执行代码,是静止的。进程是程序的一次执行,是活动的。线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。4.两种实现方法,一种是继承Thread,另外一种是实现接口Runnable。
同步的实现方法有两种,分别是synchronized, wait与notify。用synchronized可以对一段代码、一个对象及一个方法进行加锁。用wait与notify可以使对象处于等待及唤醒方式导致同步,因为每个对象都直接或间接的继承了Object类。
5、什么是BootLoader?主要有几种工作模式及主要功能是什么? 答:
Bootloader就是操作系统内核运行的一段小程序,完成进行初始化系统硬件设置的任务,(2分)
分为启动加载模式和下载模式。(1启动加载模式
启动加载(Boot laoding)模式是指 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。(2分)(2)下载模式
在下载模式下,目标机上的 Bootloader 将先通过串口连接或网络连接等通信手段从宿主机下载文件。(2分)
6、简述Bootloader有何作用? 答案要点:(1)首先,bootloader是在特定硬件平台运行的程序,严重依赖于硬件平台,需要移植;(2)是系统上电之后,第一个运行的程序,系统在上电或复位时通常都从地址 0x0 处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序;(3)bootloader程序的设计目标是启动嵌入式操作系统,嵌入式操作系统的启动需要一定的条件,这些条件由bootloader来满足;(4)Bootloader一般具有对存储器和网络接口操作的功能;如擦除、读写Flash,通过USB、串口下载文件等
第五篇:嵌入式工程师考试题目
笔试题(60分钟)
姓名:
成绩:
嵌入式系统
1.
2.
3.
4.
5.
简述什么是嵌入式系统。简述ARM的版本及特点。简述INTEL XSCALE架构的主要组成。简述INTEL PXA255的逻辑结构。简述你了解的嵌入式操作系统有哪些,各有何特点。
WinCE
1. 简述WinCE系统的完整开发流程。
2. 简述Platform Builder的功能。
3. 简述WinCE内核的构成及各模块的主要功能。
4. 简述Eboot和NK下载到目标板的基本流程及工具。
5. 简述你在WinCE平台上所开发的一个软件项目的(a)功能,(b)软件逻辑结构,(c)所使用的开发工具的情况。
Symbian
1. 简述在进行Symbian OS C++应用开发过程中,你使用哪些技巧以提高你的代码质量。
2. 解释Symbian操作系统手机上构成Java平台的MIDP和CLDC特性。3. 简述Symbian OS上对象如何创建和销毁。
4. 解释Symbian OS上活动对象的概念。
5. 简述你在Symbian OS上所开发的一个软件项目的(a)功能,(b)软件逻辑结构,(c)所使用的开发工具的情况。
Linux
1. 简述BOOTP协议的功能及工作流程。
2. 简述Linux Bootloader的功能及工作流程。
3. 简述Linux的完整启动流程及所需的软件模块。
4. 简述嵌入式Linux上经常使用的文件系统类型及各自的特点。
5. 简述你在嵌入式Linux平台上所开发的一个软件项目的(a)功能,(b)软件逻辑结构,(c)所使用的开发工具的情况。