购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 嵌入式系统的结构

嵌入式系统是一种专用的计算机应用系统,包括嵌入式系统的硬件和软件两大部分,其中软件部分包含负责硬件初始化的中间层程序、负责软硬件资源分配的系统软件和运行在嵌入式系统上面的应用软件,因此可以把嵌入式系统的结构分为4层:硬件层、硬件抽象层、系统软件层和应用软件层。参见视频。

第4章嵌入式系统层次及其对应的开发工作4.2节

4.2.1 硬件层

嵌入式系统的硬件层由电源管理模块、存储器模块、总线模块、时钟控制模块、处理器模块、多协议数据通信接口模块、可编程调试拓展模块、各种控制器电路,以及外部执行支持设备等组成。对于不同性能、不同厂家的嵌入式微处理器,与其兼容的嵌入式系统内部的结构差异很大,典型的嵌入式系统的硬件体系结构如图4-1所示。嵌入式系统的硬件以嵌入式处理器为核心,目前一般的应用场合采用嵌入式微处理器(ARM7或ARM9等)。在信息处理能力要求比较高的场合,可采用嵌入式数字信号处理器(DSP)芯片,以实现高性能的信号处理。

图4-1中给出了嵌入式硬件结构模型的基本模块,具体的嵌入式设备并不是包含所有的电路和接口。嵌入式系统的硬件要根据实际应用进行选择或剪裁,以便降低产品的成本和功耗。例如,有些应用场合要求具有USB接口,而有些应用仅仅需要红外数据传输接口等。

1.电源管理模块

电源管理模块的功能主要是为整个设备提供符合规格的、稳定的电源供应,将电源有效分配给系统的不同组件。通过降低组件闲置时的能耗,可以提高电池寿命,降低系统电源消耗,从而保证硬件系统的正常稳定运行,主要部分有复位电路、电源保护电路等。

图4-1 嵌入式系统的硬件体系结构

复位电路的主要功能是上电复位。为确保嵌入式系统中的电路稳定、可靠地工作,复位电路是必不可少的一部分。一般处理器电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于系统电路是时序数字电路,需要稳定的时钟信号,因此在电源上电时,只有当电压超过4.75V、低于5.25V,以及晶体振荡器稳定工作时,复位信号才被撤除,系统电路开始正常工作。

电源保护电路主要用于保证稳定电压的供应,防止过高或过低,以及不稳定的电流对设备中各部分电路的损坏。在嵌入式设备的应用环境中,恶劣的自然环境难免存在,比如说强烈的电磁环境、频繁的雷电影响或是潮湿的环境等,都会对设备的电源部分造成一定的影响甚至是损害。去除过高的电压冲击或是不稳定的电流成为嵌入式设备正常运行的一个基础保证。

2.时钟控制模块

时钟控制模块主要为嵌入式系统设备提供本地产生的稳定的时钟信号,以及为系统内部部分电路提供所需要的分频或是倍频之后的时钟需求。其中主要包括定时器/实时时钟芯片(Timer/RTC)、锁相环(PLL)和看门狗定时器(WDT)等。

Timer/RTC是指定时器和实时时钟电路。Timer定时器使用本地产生的时钟信号,根据控制信号能够产生在指定的时间间隔内反复触发指定窗口的定时器事件。一般的嵌入式设备中都有多于一个这样的定时器电路,用于产生时钟中断信号。实时时钟芯片(Real-Time Clock,RTC)是一种晶振及相关电路组成的时钟电路,用于产生稳定的时钟脉冲信号,为系统中的其他电路提供稳定的时钟信号。

锁相环(Phase Locked Loop,PLL)用来统一整合时钟脉冲信号,使内存能正确地存取数据。PLL采用振荡器中的反馈技术,许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步,利用锁相环电路就可以实现这个目的。

看门狗定时器(Watchdog Timer,WDT)也是一个定时器电路,主要用于防止程序发生死循环。WDT一般有一个输入称为喂狗,一个输出到处理器的复位端。处理器正常工作时,每隔一段时间输出一个信号到喂狗端,给WDT清零。如果超过规定的时间不喂狗(如死循环),WDT超时,就会发出一个复位信号到处理器,使处理器复位,防止处理器死机。

3.存储器模块

存储器模块包含可擦除和不可擦除的存储设备,用于存放运算中所需的数据,计算出的中间数据,以及存放嵌入式系统执行的程序代码。常用的存储模块按照读写功能可分为随机读写存储器(RAM)、只读存储器(ROM)和非易失性随机存储器(NVRAM)。

RAM存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序及计算处理过程中产生的中间数据。按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM),处理器附属的高速缓存Cache使用的就是SRAM,能够获得更高速的指令存取速率,而通用计算机使用的DDR2内存就是在DRAM技术上开发的DRAM。

ROM在嵌入式系统中主要用作外部程序存储器,其中的内容只能读出,不能被修改,断电情况下,ROM中的信息不会丢失。如早期的计算机启动用的BIOS芯片,同RAM相比,ROM的数据读取速度较低,因为ROM在出厂后只能写入一次数据,不能重写,所以现在使用比较少,因此在ROM基础上发展而来的具有电擦除可重写的EPROM(可擦除可编程ROM,通过紫外光的照射擦出原先的程序)和EEPROM(电子可擦除可编程ROM,通过电子擦出原先的程序),在一些单片机和早期的手机中有广泛的应用,这些ROM一般读出比写入快,价格很高,写入需要比读出更高的电压并且写入程序的时间相当长,比如常听到的将程序“烧”到板子了,就源于此。

NVRAM是指可电擦除的存储器,它们具有RAM的可读、写特性,又具有ROM停电后信息不丢失的优点,在嵌入式系统中既可作为程序存储器用,也可作为数据存储器用。这一分类是一种概括性的分类,它包含了ROM发展出的后续产品,如EPROM、EEPROM及RAM中的特殊的SRAM应用,如带电池的SRAM。随着可擦除技术的发展,目前NVRAM中使用量最大的就是闪存(Flash Memory)技术。闪存是一种长寿命的非易失性存储器,目前市场上的U盘、CF卡、SM卡、SD/MMC卡、记忆棒、XD卡、MS卡和TF卡都是在闪存技术的基础上生产和开发的,这些设备被广泛地应用在手机、数字式照相机和路由器等电子设备中。

4.总线模块

总线模块是嵌入式系统中各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。按照所传输的信息种类,总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。

控制器局域网(Controller Area Network,CAN)是国际上应用最广泛的现场总线之一。CAN是一种有效支持分布式控制或实时控制的串行通信总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。与一般的通信总线相比,CAN总线具有突出的可靠性、实时性和灵活性。

PCI是一种扩展总线,目前用于高性能的嵌入式系统。早期的PCI是一种并行总线,目前的PCI Express是串行总线,PCI-E 2.0的传输速率为5GB/s。

I 2 C(Inter-Integrated Circuit)和SPI总线同属于同步总线,即时钟信号独立于传输的数据。I 2 C是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。主要在服务器管理中使用,其中包括单个组件状态的通信。串行外设接口(Serial Peripheral Interface,SPI)总线系统是一种同步串行外设接口,它可以使处理器与各种外围设备以串行方式进行通信。

5.数据通信接口模块

数据通信接口模块是嵌入式系统与外部设备进行通信的渠道。数据接口模块中包含基于多种通信协议实现的多种通信方式,有USB、Ethernet、IrDA、蓝牙、Wi-Fi和NFC等。

通用串行总线(Universal Serial BUS,USB)最大的优势就是支持设备的即插即用和热插拔功能。USB协议版本发展至今经历了USB 1.0、USB 1.1和USB 2.0,目前USB 2.0被广泛应用于各种高速需求USB接口设备中,如高速扫描仪等。USB 3.0技术正在开发,还未公开发布。早期的USB 1.0版本指定的数据传输速率为1.5Mbit/s(低速)和12Mbit/s(全速)。USB 2.0版本的数据传输速率为480Mbit/s。USB 3.0版本的传输速率可达5Gbit/s,并且支持全双工。目前便携式移动设备如手机、平板电脑等使用的是欧盟统一的微型USB接口规格,即micro-USB,它比标准的USB接头小,具有高达10000次的插拔寿命和强度,并且支持目前USB的OTG功能,即在没有主机(如个人计算机)的情况下,便携设备之间可直接实现数据传输,同时兼容USB 1.1和USB 2.0,在传输数据的同时能够为设备充电。

以太网(Ethernet)是应用最为广泛的局域网,速率从10Mbit/s开始,按10倍递增,直至100Gbit/s。以太网的接口规格RJ45为8针连接器件。利用以太网,设备可以直接无缝接入互联网。

红外数据标准协会(Infrared Data Association,IrDA)表示各种由红外数据标准协会制定的使用红外线进行通信的协议标准,IrDA 1.1标准中补充的高速红外(Very Fast InfraRed,VFIR)技术能够达到16Mbit/s的数据传输速率。红外数据传输适合小型移动设备短距离、点对点、直线无线通信的场合,如机顶盒、手机、电视遥控器和仪器仪表等。随着USB设备和蓝牙的广泛应用,红外通信设备逐步淡出市场,但由于成本低廉,在遥控器中仍被广泛应用。

蓝牙(Bluetooth)是一种短距离无线电技术,采用分散式网络结构,以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,采用时分双工传输方案实现全双工传输,数据速率为1Mbit/s。目前最新的蓝牙协议版本是蓝牙4.0。全球近100%的智能手机使用了蓝牙技术。

NFC是一种短距离的高频无线通信技术,连接建立时间小于0.1s,允许电子设备之间进行非接触式点对点数据传输(在10cm内)交换数据。NFC在门禁、公交、RFID读写器及手机支付等领域有着广泛的应用前景。目前Android嵌入式系统的2.3.3版本已经全面支持NFC技术,并向开发人员全面开放了NFC读/写功能。iOS系统也将在即将发布的iOS 4.3系统中增加NFC技术的支持。

Wi-Fi(Wireless Fidelity)是一种无线局域网技术,最新版本是802.11n,可以将WLAN的传输速率由目前802.11a及802.11g提供的54Mbit/s,提高到300Mbit/s甚至600Mbit/s。

6.可编程开发调试模块

可编程开发调试模块包含了一组可以进行单独定制开发及测试的拓展设备,在没有操作系统的设备上,可以使用可编程拓展模块开发出所需要的文件系统、图形系统等,这部分模块包含FPGA和CPLD,以及专门用来进行测试的JTAG接口。

现场可编程门阵列(Field-Programmable Gate Array,FPGA)是一种半定制电路,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出/输入模块IOB(Input Output Block)和内部连线(Interconnect)3部分。FPGA是由存放在片内RAM中的程序来设置其工作状态的,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中的数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。断电后,FPGA恢复成白片,内部逻辑关系消失,因此FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只需用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。

复杂可编程逻辑设备(Complex Programmable Logic Device,CPLD)是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(针对于系统编程)将代码传送到目标芯片中,实现设计的数字系统。CPLD具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无须测试、保密性强和价格大众化等特点,可实现较大规模的电路设计,因此被广泛应用于网络、仪器仪表、汽车电子、数控机床和航天测控设备等方面。同FPGA相比,在编程方式上,CPLD主要是基于EEPROM或闪存编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为编程器编程和在线编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中,其优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。

联合测试行动小组(Joint Test Action Group,JTAG)是一种国际标准测试协议,主要用于芯片内部测试。多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI和TDO,分别为模式选择、时钟、数据输入线和数据输出线。JTAG最初是用来对芯片进行测试的,JTAG的基本原理是在器件内部定义一个测试访问口(Test Access Port,TAP)通过专用的JTAG测试工具对内部结点进行测试。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。现在,JTAG接口还常用于实现在线编程(In-System Programmable,ISP),对闪存等器件进行编程,可以有效提高工程的开发效率。

7.处理器模块

处理器模块是嵌入式系统的核心,主要用于处理数据、执行程序等,与通用的PC处理器相比,嵌入式处理器具有体积小、重量轻、成本低、可靠性高、功耗低、适应性强和功能专用性强等特点。

嵌入式微处理器(EMPU)目前主要包括ARM系列,后面将介绍各种嵌入式处理器。目前很多嵌入式微处理器已经包含了内存管理单元(Memory Management Unit,MMU)、高速缓存(Cache)和浮点运算协处理器。

MMU负责虚拟地址与物理地址之间的映射,提供硬件机制的内存访问授权。高速缓存用于存放由主存调入的指令与数据块,加快处理器的存取速度。浮点运算协处理器用于提高浮点运算的能力。

嵌入式数字信号处理器(Embedded Digital Signal Processor,EDSP)对系统结构和指令进行了特殊设计,更适合于执行数字信号处理(DSP)算法,编译效率较高,指令执行速度也较快,在数字滤波、快速傅里叶变换和谱分析等方面有广泛的应用。

8.各种控制电路

控制电路集成于嵌入式系统中,用于控制功能模块正常运行及完成信号形式的转换,包含中断控制器、总线控制器、DMA和ADC/DAC转换器等。

中断控制器是一种集成电路芯片,它将中断接口与优先级判断等功能汇集于一身,可以中断CPU当前运行的任务,执行终端服务程序,如定时器中断等。

总线控制器(System Management Bus,SMBus)主要用于低速系统的内部通信,它是由两条线组成的总线,用来控制主板上的器件并收集相应的信息。通过总线,器件之间发送和接收消息,而无须单独的控制线,这样可以节省器件的管脚数。

直接内存存取(Direct Memory Access,DMA)允许不同速度的硬件装置之间进行数据传输,将数据从一个地址空间复制到另外一个地址空间,而无须处理器的直接参与。当处理器给DMA发出传输指令后,传输动作本身是由DMA控制器来完成的。DMA传输对于高效能的嵌入式系统算法和高速网络的数据传输非常重要。

模拟-数字转换/数字-模拟转换(ADC/DAC)用于将系统内部的数字信号转换为模拟信号输出,或是将外部输入的模拟信号转换为系统所需的数字信号。

9.外部执行设备模块

外部执行设备模块是嵌入式系统的支撑部分,可分为输入设备和输出设备。

输入设备作为嵌入式系统的外围电路之一,为系统提供原始数据、电源供应等多种输入任务,如为嵌入式设备提供电源的外接太阳能电池板、获取产品信息的RFID电子阅读器、条码扫描仪,以及采集各种环境变化量的传感器设备等。

输出设备也是嵌入式系统的组成部分,作为嵌入式系统的外围电路之一,用于将嵌入式设备处理之后的结果表现出来,如液晶显示器、铃声报警器等。

4.2.2 硬件抽象层

硬件抽象层(Hardware Abstract Layer,HAL)也称为中间层或板级支持包(Board Support Package,BSP),它在操作系统与硬件电路之间提供软件接口,用于将硬件抽象化,也就是说用户可以通过程序控制处理器、I/O接口及存储器等硬件部件,从而使系统的设备驱动程序与硬件设备无关,提高了系统的可移植性。

硬件抽象层包含系统启动时对指定硬件的初始化、硬件设备的配置、数据的输入或输出操作等,为驱动程序提供访问硬件的手段,同时引导和装载系统软件或嵌入式操作系统。

4.2.3 系统软件层

根据嵌入式设备类型及应用的不同,系统软件层的划分略有不同。部分嵌入式设备考虑到功耗、应用环境的不同,不具有嵌入式操作系统。这种系统通过设备内部的可编程拓展模块,同样可以为用户提供基于底层驱动的文件系统和图形用户接口,如市场上大部分的电子词典及带有液晶屏幕的MP3等设备。这些系统上的图形界面软件及文件系统软件同样属于系统软件层的范围。而对于装载有嵌入式操作系统(Embedded Operating System,EOS)的嵌入式设备来说,系统软件层自然就是EOS。在EOS中,包含有图形用户界面、文件存储系统等多种系统层的软件支持接口。当然,对于嵌入式系统而言,EOS并不是必不可少的部分,但是随着对嵌入式系统功能的要求越来越高,EOS逐渐成为嵌入式系统必不可少的组成部分,如目前广泛流行的各种智能手机等电子设备。

嵌入式操作系统是嵌入式应用软件的开发平台,它是保存在非易失性存储器中的系统软件,用户的其他应用程序都建立在嵌入式操作系统之上。嵌入式操作系统使得嵌入式应用软件的开发效率大大提高,减少了嵌入式系统应用开发的周期和工作量,并且极大地提高了嵌入式软件的可移植性。为了满足嵌入式系统的要求,嵌入式操作系统必须包含操作系统的一些最基本的功能,并且向用户提供应用程序编程接口(API)函数,使应用程序能够调用操作系统提供的各种功能。

嵌入式操作系统通常包括与硬件相关的底层驱动程序软件、系统内核、设备驱动接口、通信协议、图形界面及标准化浏览器等。设备驱动程序用于对系统安装的硬件设备进行底层驱动,为上层软件提供调用的API接口。上层软件只需调用驱动程序提供的API方法,而不必关心设备的具体操作,便可以控制硬件设备。此外,驱动程序还具备完善的错误处理函数,以便对程序的运行安全进行保障和调试。

典型的嵌入式操作系统都具有编码体积小、面向应用、实时性强、可移植性好、可靠性高及专用性强等特点。随着嵌入式系统的处理和存储能力的增强,嵌入式操作系统与通用操作系统的差别将越来越小。后面将具体介绍一些典型的嵌入式操作系统实例。

4.2.4 应用软件层

应用软件层就是嵌入式系统为解决各种具体应用而开发出的软件,如便携式移动设备上面的电量监控程序、绘图程序等。针对嵌入式设备的区别,应用软件层可以分为两种情况。一类是在不具有嵌入式操作系统的嵌入式设备上,应用软件层包括使用汇编程序或是C语言程序针对指定的应用开发出来的各种可执行程序;另一类就是在目前广泛流行的搭载嵌入式操作系统的嵌入式设备上,用户使用嵌入式操作系统提供的API函数,通过操作和调用系统资源而开发出来的各种可执行程序。 6Z2uh45prxEN5NjaWQ8h3w5gIzaO8ftAIoZZC3wV2rKE38C0D4ByZTmwYrnXVkv4

点击中间区域
呼出菜单
上一章
目录
下一章
×