系统架构设计师学习笔记 第十二章 嵌入式系统设计

第十二章 嵌入式系统设计

12.1 嵌入式系统概论

是一种以应用为中心,以计算机技术为基础,可以使用不同应用对功能、可靠性、成本、体积、功耗等方面的要求,集可配置,可裁剪的软、硬件与一体的专用计算机系统。核心要素如下:

  1. 嵌入性:指计算机嵌入到对象系统中,且满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。
  2. 专用性:指软、硬件的裁剪性,满足对象要求的最小软、硬件配置等
  3. 计算机系统:指嵌入式系统必须是一个能满足对象系统控制要求的计算机系统。

归纳起来,典型的嵌入式系统具有以下特点:

  1. 系统专用性强。嵌入式系统是针对具体应用的专门系统。个性化很强,软件和硬件结合紧密。一般要针对硬件进行软件的开发和移植,根据硬件的变化和增减对软件进行修改。
  2. 系统实时性强。嵌入式系统中有相当一部分系统要求对外来事件在限定的时间内及时作出响应,具有实时性。
  3. 软、硬件依赖性强。
  4. 处理器专用。嵌入式系统的处理器一般是为某一特定目的和应用而专门设计的。通常具有功耗低、体积小、集成度高等优点。
  5. 多种技术紧密结合。嵌入式系统通常是计算机技术、半导体技术、电力电子技术及机械技术与各行业的具体应用相结合的产物。
  6. 系统透明性。
  7. 系统资源首先

12.2 嵌入式系统的组成

12.2.1 硬件架构

1. 嵌入式处理器

是嵌入式系统的核心部件,可以分为如下几类:

  1. 嵌入式微处理器EMPU。是由通用计算机的CPU演变而来。功能上跟普通的微处理器基本一致,但是它具有体积小、功耗低、质量轻、成本低及可靠性高的优点。通常,嵌入式微处理器和ROM、RAM、总线接口及外设接口等部件安装在一块电路板上,称为单板计算机。
  2. 嵌入式微控制器EMCU。又称单片机,就是整个计算机系统都集成到一块芯片中。一般以某一种微处理器内核为核心,芯片内部集成有ROM/EPROM/E2PROM、RAM、总线、总线逻辑、定时器/计数器、WatchDog(监督定时器)、并口/串口、数模/模数转换器、山村等必要外设。与嵌入式微处理器相比,最大特点是单片化,因而体积更小,工号和成本更低,可靠性更高。
  3. 嵌入式数字信号处理器EDSP。是一种专门用于信号处理的处理器,DSP芯片内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速实现各种数字信号的处理算法。
  4. 嵌入式片上系统ESOC。是一种在一块芯片上继承了很多功能模块的复杂系统,如微处理器内核、RAM、USB、IEEE 1394、Bluetooth等。大幅缩小了系统的体积、降低了系统的复杂度,增强了系统的可靠性。

2. 总线

是连接计算机系统内部各个部件的共享高速通路。嵌入式系统的总线一般分为片内总线和片外总线。片内总线是指嵌入式微处理器内的CPU与片内其他部件连接的总线;片外总线是指总线控制器集成在微处理器内部或外部芯片上的用于连接外部设备的总线。

  1. AMBA总线,先进微控制器总线架构。该总线规范独立于处理器和制造工艺技术,增强了各种应用中外设和系统单元的可重用性,提供将RISC处理器与IP核集成的机制。该规范定义了三种总线:
  • 先进性能总线AHB。AHB由主模块、从模块和基础结构三部分组成,整个AHB总线上的传输都是由主模块发起、从模块响应。基础结构包括:仲裁器、主从模块多路选择器、译码器、名义主模块、名义从模块等。AHB系统具有时钟边沿出发、无三态、分帧传输等特性。AHB也支持复杂的事务处理,如突发传送、主单元重试、流水线操作以及分批事务处理等。
  • 先进系统总线ASB。用于高性能模块的互连,支持突发数据传输模式,叫老的总线格式,逐步由AHB总线所替代。
  • 先进外设总线APB。主要用于连接低带宽外围设备,其总线结构只有唯一的主模块,即APB桥,它不需要中才气以及响应/确认信号,以最低能耗为原则进行设计,具有总是两周期传输、无等待周期和响应信号的特点。
  1. PCI总线,外围构件互连总线。该总线式地址数据复用的高性能32位与64位总线,是微处理器与外围设备互连的机构,它规定了互联协议、电器、机械以及配置空间的标准。PCI是不依赖于具体处理器的局部总线,从结构上看,PCI是在微处理器和原来的系统总线之间加入的以及总线,有一个桥接电路负责管理,实现上下接口和协调数据传送,管理器提供了信号缓冲,使多种外设能够在高时钟频率下保持高性能。PCI总线支持主控技术,允许智能设备在需要时获得总线控制权,以加速数据传输。
  2. Avalon总线。用于可编程片山系统中连接片上处理器和其他IP模块的一种简单总线协议,规定了主部件和从部件之间进行连接的端口和通信时序。

几种嵌入式总线技术的主要特点

总线类型 主要特点
AMBA总线 带宽高;采用地址与数据分离的流水线操作;支持固定长与不定长突发传送;兼容性好;支持多个总线主设备
PCI总线 速度快;支持线性突发传送;支持即插即用;兼容性好;可靠性高;可扩展性好
Avalon总线 支持字节、半字和字传输;同步接口;独立的地址线、数据线和控制线;设备内嵌译码部件;支持多个总线主设备;自动生成仲裁机制;多个主设备可同时操作使用一条总线;可自动调整总线宽度,以适应尺寸不匹配的数据。

3. 存储器

主要包括主存和外存。

  1. 高速缓存。是存放当前使用最多的程序代码和数据的,即主存中部分内容的副本,在嵌入式系统中,Cache全部集成在嵌入式微处理器内部,可以分为:数据Cache、指令Cache和混合Cache。
  2. 主存。是处理器能够直接访问的存储器,用来存放系统和用户的程序和数据,系统上电后,主存中的代码直接运行,主存的主要特点是速度快,一般采用ROM、EPROM、NOR flash、SRAM和DRAM等存储器件。
  3. 外存。是不与运算器直接联系的后备存储器,用来存放不常用或暂时不用的信息,外存一般以非易失性存储器构成,数据能够持有保存,即使断电,也不消失。

4. I/O设备与接口

嵌入式系统中接口电路的设计需要首先考虑的是电平匹配问题,嵌入式系统微处理器所提供与接收信号的电平,必须与所连接的设备的电平相匹配,否则将导致电路损坏或逻辑判断错误。其次,还要考虑驱动能力和干扰问题等因素。

当前,在嵌入式系统中广泛应用的接口主要有:

  1. RS-232接口。是一种串行通信总线标准,是数据通信设备和数据终端设备间传输数据的接口总线,RS-232-C标准规定其最高速率为20kbps,在低码元畸变的情况下,最大传输距离为15米,通过使用增强器,其传输距离已经延长到1000米左右。
  2. USB接口。通用串行总线。支持USB外部设备到主机外部总线的连接。在USB系统中,必须有一个USB主控制器,USB设备通过四根电缆与USB主控制器直接或间接相连。最高速度可达480Mbps。
  3. 1394接口。由6根电缆组成,包括一堆电源线和两队双绞控制线。IEEE1394定义了三种传输速率:98.304Mbps、196.608Mbps、392.216Mbps,分别称之为S100、S200和S400,线缆的长度一般不会超过4.5米。
    该标准通过所有连接设备建立起一种对等网络,不需要主控结点来控制数据流,即跟USB技术相比,最大的区别是不需要主控制器,不同的外设之间可以直接传递信息,此外,采用该技术,两台计算机可以共享同一外部设备。
    该标准同时支持同步和异步传输两种模式。在异步传输模式下,信息的传递可以被中断,在同步传输模式下,数据将不受任何中断和干扰下实现连接传输。

12.2.2 软件架构

软件架构体系自底向上有三部分组成:嵌入式操作系统、应用支撑软件和应用软件。

  1. 操作系统。有操作系统内核、应用程序接口、设备驱动程序接口等几部分组成。嵌入式操作一般采用微内核结构。操作系统只负责进程的调度、进程间的通信、内存分配及异常与中断管理最基本的任务,其他大部分的功能则由支撑软件完成。
  2. 应用支撑软件。有窗口系统、网络系统、数据库管理系统及Java虚拟机等几部分组成。一般用于一些浅度嵌入的系统中。
  3. 应用软件。是系统整体功能的集中体现。

12.3 嵌入式开发平台与调试环境

12.3.1 嵌入式系统软件开发平台

1. 交叉平台开发环境

嵌入式系统的软件开发采用交叉平台开发方法CPD,即软件在一个通用平台上开发,而在另一个嵌入式目标平台上运行。这个用于开发嵌入式软件的通用平台通常叫做宿主机系统,被开发的嵌入式系统通常叫做目标机系统。而当软件执行环境和开发环境一致时的开发过程则成为北地开发ND。

通常包含三个高度集成的部分。

  1. 运行在宿主机和目标机上的强有力的交叉开发工具和实用程序
  2. 运行在目标机上的高性能、可裁剪的实时操作系统
  3. 连接宿主机和目标机的多种通信方式,例如,以太网、串口线、在线仿真器ICE或ROM仿真器等

2. 交叉编译环境

宿主机提供的基本开发工具是交叉编译器、交叉链接器和源代码调试器。作为目标机的嵌入式系统则可能提供一个动态装载器、链接装载器、监视器和一个调试代理等。在目标机和宿主机之间有一组连接,通过这组连接程序代码映像从宿主机下载到目标机,这组连接同时也用来传输宿主机和目标机调试代理之间的信息。

交叉编译器将用户编写的C/C++/Java源代码文件根据目标机的CPU类型生成包含二进制代码和程序数据的目标文件。在此过程中,交叉编译器会产成一个符号表,包含所产生的目标文件中指向映像地址的富豪命,当建立重定位输出时,编译器为每个相关的符号产生地址。

目前,嵌入式系统中常用的目标文件格式是COFF(公共对象文件)和ELF(可执行链接格式)。另外,一些系统还需要有一些专门的工具将上述格式转换成二进制代码格式才能使用。

通常,一个目标文件包含:

  1. 关于目标文件的通用信息,如文件尺寸、启动地址、代码段和数据段等。
  2. 机器架构特定的二进制指令和数据。
  3. 符号表和重定位表
  4. 调试信息

12.3.2 嵌入式开发调试

1. 直接调试法

就是讲目标代码下载到目标机上,让其执行,通过观察指示灯来判断程序的运行状态。基本步骤是:

  1. 在宿主机上编写程序。
  2. 在宿主机上变异、链接生成目标机可执行程序代码。
  3. 将可执行代码写入目标机的存储器中
  4. 在目标机运行程序代码
  5. 判断程序的运行情况,如有错误则纠正错误,重复以上步骤,直到正确为止。
  6. 将可执行代码固化到目标机,开发完成。

2. 调试监控法

也叫插桩法。目标机和宿主机一般通过串行口、并行口或以太网相连接,采用这种方法还需要在宿主机的调试器内和目标机的操作系统上分别启动一个功能模块,然后通过这两个功能模块的相互通信来实现对应用程序的调试。在目标机上添加的模块叫做桩,也叫调试服务器或调试监控器,主要有两个作用:其一,监视和控制被调试的程序;其二,跟宿主机上调试程序通信,接收控制指令、返回结果等。

基本步骤是:

  1. 在宿主机上编写程序的源代码。
  2. 在宿主机上编译、链接生成目标机可执行程序。
  3. 将目标机可执行程序下载到目标机的存储器中。
  4. 使用调试器进行调试
  5. 在调试器帮助下定位错误
  6. 在宿主机上修改源代码,纠正错误,重复上述步骤直到正确为止。
  7. 将可执行代码固话到目标机上。

相对于直接测试法,插桩法明显的提高了开发效率,降低了调试的难度,缩短了产品的开发周期,有效的降低了开发成本。但是仍有明显的缺点,主要体现在以下几个方面:

  1. 调试监控器本身的开发是个技术难题。
  2. 调试监控器在目标机中药占用一定的系统资源。
  3. 调试时,不能响应外部中断,对由时间特性的程序不适用
  4. 在调试过程中,被调试的程序实际上是在调试监控器所提供的环境中运行,这个环境可能会与实际目标程序最终的运行环境有一定的差异,这种差异可能导致调试通过的程序最终仍不能运行。

为了克服插桩法的缺点,出现了一种改良的方法,即ROM仿真器法

ROM仿真器法可以被认为是一种用于替代目标机上ROM芯片的硬件设备,ROM仿真器一端跟宿主机相连,一端通过ROM芯片的引脚插座与目标机相连。对于嵌入式处理器来说,ROM仿真器像是一个只读存储器,而对于宿主机来说,像一个调试监控器。该方法有如下优点:

  1. 不必再开发调试监控器
  2. 由于是通过ROM仿真器上的串行口、并行口或网络接口与宿主机连接,所以不必占用目标机上的系统资源。
  3. ROM仿真器代替了目标机上原来的ROM,所以不必占用目标机上的存储空间来保存调试监控器
  4. 另外,即使目标机本身没有ROM,调试依然可以进行,并且不需要使用专门工具向ROM写入程序和数据。

3. 在线仿真法

ICE是一种用于替代目标机上CPU的设备。对于目标机来说,在线仿真器就相当于他的CPU,在线仿真器本身就是一个嵌入式系统,有自己的CPU、内存和软件。即使没有目标机,仅用在线仿真器也可以进行程序的调试。

在线仿真器和宿主机一般通过串行口、并行口或以太网相连接。在连接在线仿真器和目标系统时,用在线仿真器的CPU引出端口替代目标机的CPU。

在线仿真器能实时的检查运行程序的处理器的状态,设置硬件断点和进行实时跟踪,所以提供了更强的调试功能。支持多种时间的触发断点,这些时间包括内存读写、I/O读写及中断等。一个重要特性就是实时跟踪。但是,在线仿真器的价格一般都比较昂贵。

4. 片上调试法

ICD是CPU芯片内部的一种用于支持调试的功能模块。按照实现的技术,片上调试器可以分为仿调试监控器、后台调试模式BDM、连接测试存取组JTAG和片上仿真OnCE等几类。

该方法的主要优点是:不占用目标机的通信端口等资源;调试环境和最终的程序运行环境基本一致;无需在目标机上增加任何功能模块即可运行;支持软、硬断电;支持跟踪功能,可以精确计量程序的执行时间;支持时序逻辑分析等功能。

该方法的缺点是:实时性不如在线仿真器法强;使用范围受限,如果目标机不支持片上调试功能,则该方法不适用;实现技术多样,标准不完全统一,工具软件的开发和使用均不方便。

5. 模拟器法

模拟器是运行在宿主机上的一种纯软件工具,它通过模拟目标机的指令系统或目标机操作系统的系统调用来达到在宿主机上运行和调试嵌入式应用程序的目的。

适合于调试非实时的应用程序,这类程序一般不与外部设备交互,实时性不强,程序的执行过程是时间封闭的,开发者可以直接在宿主机上验证程序的逻辑正确性。当确认无误后,将程序写入目标机上即可正确运行。

模拟器有两种主要类型:一类是指令级模拟器,在宿主机模拟目标机的指令系统;另一类是系统调用级模拟器,在宿主机上模拟目标操作系统的系统调用。

使用模拟器的最大好处是在实际的目标机不存在的条件下就可以为其开发应用程序,并且在调试时利用宿主机的资源提供更消息的错误诊断信息,但模拟器有许多不足之处。

  1. 模拟器环境和实际运行环境差别很大,无法保证在模拟条件下通过的应用程序也能在真实环境中正常运行。
  2. 模拟器不能模拟所有的外部设备,嵌入式系统通常包含诸多外设,但模拟器只能模拟少数部分。
  3. 模拟器的实时性差,对于实时类应用程序的调试结果可能不可靠。
  4. 运行模拟器需要较高的宿主机配置。

12.4 嵌入式网络系统

12.4.1 现场总线网

是一种将数字传感器、变换器、工业仪表及控制执行机构等现场是被与工业控制单元,现场操作站等互相连接而成的网络。

是一种低带宽的底层控制网络,位于生产控制和网络结构的底层,因此也被称为底层网。主要应用于生产现场,在测量控制设备之间实现双向的、串行的、多节点的数字通信。

现场总线控制系统FCS是运用现场总线连接各控制器及仪表设备而构成的控制系统,该控制系统将控制功能彻底下放到现场,降低了安装成本和维护费用。现场总线控制系统把单个分散的测量控制设备变成网络节点,以现场总线为纽带,使这些分散的设备称为可以互相沟通信息共同完成自动控制任务的网络系统。

12.4.2 家庭信息网

是一种把家庭范围内的个人计算机、家用电器、水、电、气仪表、照明设备和网络设备、安全设备连接在一起的局域网。

12.4.3 无线数据通信网

是一种通过无线电波传送数据的网络系统。

12.4.4 嵌入式Internet

1. 嵌入式Internet的接入方式

嵌入式设备上集成了TCP/IP协议栈及相关软件,这类设备可以作为Internet的一个节点,分配有IP地址,与Internet直接互联。

或通过接入设备接入Internet。

2. 嵌入式TCP/IP协议栈

  1. 嵌入式协议栈的调用接口与普通的协议栈不同。普通协议栈的套接字接口是标准的,应用软件的兼容性好。
  2. 嵌入式协议栈的可裁剪性。嵌入式协议栈多数是模块化的,如果存储器的空间有限,可以在需要时进行动态安装,并且都省去了接口转发、全套的Internet服务工具等几个针对嵌入式系统非必须的部分。
  3. 嵌入式协议栈的平台兼容性。
  4. 嵌入式协议栈的高效率。

12.5 嵌入式数据库管理系统

是指在嵌入式设备上使用的数据库管理系统。也称为移动数据库或嵌入式移动数据库。作用主要是解决移动计算环境下数据的管理问题。移动数据库是移动计算环境中的分布式数据库。

在嵌入式系统中引入数据库技术,主要是因为直接在嵌入式操作系统或裸机智商开发信息管理应用程序存在如下缺点:

  1. 所有的应用程序都要重复进行数据的管理工作,增加了开发难度和代价。
  2. 各应用之间的数据共享性差。
  3. 应用软件的独立性、可以执行差、可重用度低。

12.5.1 使用环境的特点

  1. 设备随时移动性
  2. 网络频繁断接
  3. 网络条件多样化
  4. 通信能力不对称

12.5.2 系统组成与关键技术

  1. 嵌入式数据库管理系统。是一个功能独立的单用户数据库管理系统,可以独立于同步服务器和主数据库管理系统运行,对嵌入式系统中的数据进行管理,也可以通过同步服务器连接到主服务器上,对主数据库中的数据进行操作,还可以通过多种方式进行数据同步。
  2. 同步服务器。是嵌入式数据库和主数据库之间的连接枢纽,保证嵌入式数据和主数据库中数据的一致性。
  3. 数据服务器。数据服务器的主数据及数据库管理系统可以采用Oracle或Sybase等大型通用数据库系统
  4. 连接网络。主数据库服务器和同步服务器之间一般通过高带宽、低延迟的固定网络进行连接。移动设备和同步服务器之间的连接根据设备的具体情况可以是无线局域网、红外连接、通用串行线或公众网等。

1. 嵌入式移动数据库在应用中的关键

  1. 数据的一致性
  2. 高效的事务处理
  • 根据网络连接情况来确定事务处理的优先级,网络连接速度高的事务优先处理
  • 根据操作时间来确定事务是否迁移,即长时间的事务操作将全部迁移到服务器上执行,无须保证网络的一直畅通。
  • 根据数据量的大小来确定事务是上载执行还是下载数据副本执行后上载;
  • 完善的日志记录策略
  • 事务处理过程中,网络断接处理时采用服务器发现机制还是采用客户端声明机制。
  • 事务移动过程中的用户位置属性的实时更新。
  1. 数据的安全性

2. 移动数据库管理系统的特性

  1. 微核结构,便于实现嵌入式功能。
  2. 对标准SQL的支持
  3. 事务管理功能。
  4. 完善的数据同步机制。应具有以下几个特点:
  • 提供多种数据同步方式,具有上载同步、下载同步和完全同步三种方式。
  • 具有完善的冲突检测机制和灵活的冲突解决方案,具有冲突日志记录功能
  • 支持快速同步,系统同步时,只传递变化的数据,节省了大量的同步时间
  • 支持标的水平分割和垂直分割复制,最大限度降低了嵌入式数据库的大小。
  • 支持异构数据源连接同步,可以用支持ODBC的异构数据源作为主数据库和嵌入式设备上的数据库进行数据同步。
  • 具有主动同步的功能。允许用户对系统提供的同步事件自定义过程实现,提供了最大灵活度的同步过程。
  1. 支持多种连接协议
  2. 完备的嵌入式数据库管理功能
  3. 平台无关性与支持多种嵌入式操作系统。
  4. 零管理特性

12.6 实时系统与嵌入式操作系统

实时系统可以看成是对外部事件能够及时响应的系统。这种系统最重要的特征是时间性,也就是实时性,实时系统的正确性不仅依赖于系统计算的逻辑结果,还依赖于产生这些结果的时间。

12.6.1 嵌入式系统的实时概念

  1. 逻辑(或功能)正确,是指系统对外部事件的处理能够产生正确的结果。
  2. 时间正确,是指系统对外部事件的处理必须在预定的周期内完成。
  3. 死线或时限、死亡时限、截止时间,是指系统必须对外部事件进行处理的最迟时间界限,错过此界限可能产生严重的后果。
  4. 实时系统。是指功能正确和时间正确同时满足的系统,二者同等重要。

对于实时系统的划分,通常还可以根据实时性的强弱,即系统必须对外部事件作出响应的时间长短,将实时系统分为:

  1. 强实时系统,其系统的响应时间非常短,通常在毫秒级或微秒级。
  2. 一般实时系统,其系统响应时间比强实时系统要求姚笛,通常在秒级
  3. 弱实时系统,其系统响应时间可以更长,也可以随系统负载的轻重而变化。

根据对错失时限的容忍程度,可以将实时系统分为软实时系统和硬实时系统。

  1. 硬实时系统,指系统必须满足其灵活性接近零时限要求的实时系统。时限必须满足否则就会产生灾难性后果,并且实现之后得到的处理结果或是零级无用,或是高度编制。
  2. 软实时系统,指必须满足时限的要求,但有一定灵活性的实时系统。时限可以包含可变的容忍等级、平均的截止时限,甚至是带有不同程度的、可接受性的响应时间的统计分布。在软实时系统中,时限错失通常不会导致系统失败等严重后果。

12.6.2 嵌入式操作系统概述

1. 嵌入式操作系统的特点

  1. 微型化:嵌入式操作系统的运行平台不是通用计算机,而是嵌入式计算机系统。这类系统一般没有大容量的内存,几乎没有外存,因此,嵌入式操作系统必须做的小巧,以尽量少占用系统资源。为了提高系统的执行速度和可靠性,嵌入式系统中的软件一般都固话在存储器芯片中,而不是存放在磁盘等载体中。
  2. 代码质量高:在大多数应用中,存储空间依然是宝贵的资源,者就要求程序代码的质量要搞,代码要尽量精简。
  3. 专业化:嵌入式系统的硬件平台多种多样,处理器更新速度快,每种都是针对不同的应用领域而专门设计。因此,嵌入式操作系统需要有很好的适应性和移植性,还要支持多种开发平台
  4. 实时性强:嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此实时性称为嵌入式操作系统的又一特点。
  5. 可裁剪、可配置:应用的多样性要求嵌入式操作系统具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合理裁剪,以适应微型化和专业化的要求。

2. 嵌入式操作系统的分类

  1. 商业型。

  2. 免费型。典型的由Linux

  3. 实时嵌入式操作系统RTEOS。支持实时系统工作,首要任务是调度一切可利用资源,以满足对外部事件响应的实时时限,其次着眼于提高系统的使用效率。主要用子啊控制、通信等领域

  4. 非实时嵌入式操作系统。不特别关注单个任务响应时限,平均性能、系统效率和资源利用率一般较高,适合于实时性要求不严格的消费类电子产品,如个人数字助理、机顶盒等。

12.6.3 实时嵌入式操作系统

  1. 实时内核型的RTEOS:这类操作系统,驱动程序传统嵌在内核之中,应用程序和中间件实现在标准的应用程序接口之上。
  2. 实时通用型的RTEOS:这类操作系统,驱动程序并非晨读嵌入到讷河中,而是在内核之上实现,并且仅包含少数必须的驱动程序,应用程序和中间件可以直接在驱动程序之上实现,而不必在标准的APIs上实现。

1. 嵌入式实时操作系统的关键特性

  1. 满足嵌入式应用的高可靠性
  2. 满足应用需要的可裁剪能力
  3. 内存需求少
  4. 运行的可预测性
  5. 采用实时调度策略
  6. 系统的规模紧凑
  7. 支持从ROM或RAM上引导和运行
  8. 对不同的硬件平台均有更好的可移植性。

2. 嵌入式实时操作系统的实时性能指标

  1. 任务切换时间:指CPU控制权由运行太的任务转移给另外一个就绪任务所需要的时间,包括在进行任务切换时,保存和恢复任务上下文所花费的时间及选择下一个待运行任务的调度时间,该指标跟微处理器的寄存器数目和系统结构有关。相同的操作系统在不同微处理器上运行时所花费的时间可能不同。
  2. 中断处理相关的时间指标。
  • 中断延迟时间,指从中断发生到系统获知中断的时间,主要受系统做大关中断时间的影响,关中断时间越长,中断延迟也就越长。
  • 中断处理执行时间,改时间由具体的应用决定
  • 中断响应时间,指从中断发生到开始执行用户中断服务例程的时间。
  • 中断恢复时间,指从用户中断服务例程结束回到被中断的代码之间的时间。
  • 最大关中断时间,包含两个方便,一是内核最大关中断时间,及内核在执行临界区代码时关中断;二是应用关中断时间,关中断最大时间是这两种关中断时间的最大值。
  • 任务响应时间,指从任务对应的中断产生到该任务真正开始运行的时间。
    对于可抢占式调度,中断恢复的时间还要加上进行任务切换和恢复新的任务上下文的时间。
  1. 系统响应时间,指系统在发出处理请求到系统做出应答的时间,即调度延迟,这个时间的大小主要有内核任务调度算法所决定。

12.6.4 主流嵌入式操作系统介绍

12.7 嵌入式系统开发设计

主要任务是定义系统的功能、决定系统的架构,并将功能映射到系统实现架构上。

12.7.1 嵌入式系统设计概述

1. 嵌入式系统设计的特点

  1. 软、硬件协同并行开发
  2. 微处理器的类型多种多样
  3. 实施嵌入式操作系统具有多样性
  4. 与通用系统开发相比,可利用系统资源很少
  5. 应用支持少
  6. 要求特殊的开发工具
  7. 软、硬件都要很健壮
  8. 调试很困难

2. 嵌入式系统的技术指标

  1. NRE成本(非重复性工程成本):设计系统所需要支付的一次性货币成本,即一旦设计完毕,不需要额外支付的设计费用,就可以制造任意数的产品。
  2. 单位成本:生产单个产品所需要支付的货币成本,不包含NRE成本。
  3. 大小:指系统所占的空间,对软件而言,一般用字节数来衡量;对硬件而言,则用逻辑门或晶体管的数目来衡量。
  4. 性能:系统完成规定任务所需的时间,是设计时最常用的设计指标,主要有两种衡量方式,一是响应时间,即开始执行到任务结束之间的时间。二是完成量,即单位时间内所完成的任务量。
  5. 功率:系统所消耗的功率,决定了电池的寿命或电路的散热需求。
  6. 灵活性:在不增加NRE成本的前提下,改变系统功能的能力
  7. 样机建立时间:建立系统可运行版本所需的时间,系统样机可能比最终产品更大更昂贵,但可以验证系统的额用途和正确性,改进系统的功能。
  8. 上市时间:从系统开发到可以上市卖给消费者的时间,最主要的影响因素包括设计时间、制造时间和检测时间
  9. 可维护性:系统推出或上市后进行修改的难易程度,特别是针对非原始开发人员进行的修改。
  10. 正确性:正确实现了系统的功能,可以在整个世界过程中检查系统的功能,也可以插入测试电路检验是否正确。
  11. 安全性:系统不会造成伤害的概率。

3. 嵌入式系统的设计挑战

  1. 需要多少硬件
  2. 如何满足时限
  3. 如何减少系统的功耗
  4. 如何保证系统的可升级性
  5. 如何保证系统的可靠性
  6. 测试的复杂性
  7. 可视性和可控制性有限
  8. 开发环境受限

12.7.2 开发模型与设计流程

1. 常用开发模型

  1. 瀑布模型。由五个主要阶段组成:需求分析阶段确定目标系统的基本特点;系统结构设计阶段将系统的功能分解为主要的构架;编码阶段主要进行程序的编写和调试;测试阶段检测错误;最后一个阶段是维护阶段,主要负责修改代码以适应环境的变化,并改正错误、升级。各个阶段的工作和信息总是由高级的抽象到较详细的设计步骤单向流动是一个理想的自顶向下的设计模型。
  2. 螺旋模型。假定要建立系统的多个版本,早起的版本是一个简单的实验模型,用于帮助设计者建立对系统的直觉和积累开发此系统的经验,随着设计的进展,会创建更加复杂的系统。在每一层设计中,设计者都会经过需求分析、结构设计、测试三个阶段。在后期,当构成更复杂的系统版本时,每一个阶段都会有更多的工作,并需要扩大设计的螺旋。
  3. 逐步求精模型。是一个系统被建立多次,第一个系统被称为原型,其后逐个将系统进一步求精。
  4. 层次模型。从最初的完整系统设计到个别部件的设计,设计的流程随着系统的抽象层次的变化而变化,从最高抽象层次的整体设计到中间抽象层次的整体设计,再到每个具体模块的设计,都是逐层展开的。

2. 嵌入式系统的设计方法

一个良好的嵌入式系统设计方法是十分重要的,这是因为:

  1. 良好的设计方法可以使设计者清楚的了解他们所做工作的进度,这样可以确保不遗漏其中任何一项工作。
  2. 允许使用计算机辅助工具帮助设计者进行工作,将整个过程分成几个可控的步骤进行。
  3. 良好的设计方法方便设计团队的成员之间相互交流,通过定义全面的设计过程,使团队里的每个成员可以很好的理解他们所要做的工作及完成分配给他们的任务时所达到的目标。

嵌入式系统软件的开发过程可以分为项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固话、测试及运行等几个阶段。

12.7.3 嵌入式系统设计的核心技术

1. 处理器技术

  1. 通用处理器。这类处理器可以用于不同类型的应用,一个重要的特征就是存储程序,由于设计者不知道处理器会运行何种运算,所以无法用数字电路建立程序。另一个特征就是通用的数据路径,为了处理各类不同的运算,数据路径是通用的,其数据路径一般有大量的寄存器及一个或多个通用的算术逻辑单元。
  2. 单用途处理器。是设计用于执行特定程序的数字电路,也指协处理器、加速器、外设等。嵌入式系统设计者可通过设计特定的数字电路来建立单用途的处理器。设计者也可以采用预先设计好的商业化的单用途处理器。
  3. 专用处理器。专用指令集处理器是一个可编程处理器,针对某一特定类型的应用进行最优化。这类应用具有相同的特征,如嵌入式控制、数字信号处理等。

2. IC技术

从系统的集成电路设计描述得到实际芯片的物理映射过程的实现技术就是IC(集成电路)技术,当前在半导体领域的三类实现技术,即全定制、半定制和可编程技术均可应用于嵌入式系统的硬件设计。

  1. 全定制/VLSI(超大规模集成电路)。在全定制IC技术中,需要根据特定的嵌入式系统的数字实现来优化各层设计人员从晶体管的版图尺寸、位置、连线开始设计以达到芯片面积利用率高、速度快、功耗低的最优化性能。利用掩膜在制造厂生产实际新品,全定制的IC设计也成为VLSI,具有很高的NRE成本、很长的制造时间,适用于大量或对性能要求严格的应用。
  2. 半定制/ASIC(专用集成电路)。是一种约束型设计方法,包括门阵列设计法和标准单元设计法,他是在芯片制作好一些具有通用性的单元元件和元件组的半成品硬件,设计者仅需要考虑电路的逻辑功能和各功能模块之间的合理连接即可。这种设计方法灵活方便、性价比高,缩短了设计周期,提高了成品率。
  3. 可编程/ASIC。可编程器件中所有各层都已经存在,设计完成后,在实验室里即可烧制出设计的芯片,不需要要IC厂家参与,开发周期显著缩短。可编程ASIC具有较低的NRE成本,单位成本较高,功耗较大,速度较慢。

3. 设计/验证技术

设计技术主要包括硬件设计技术和软件设计技术两大类。其中,硬件设计领域的技术主要包括芯片级设计技术和电路板级设计技术两个方面。

芯片级设计技术的核心是编译/综合、库/IP(知识产权)、测试/验证。编译/综合技术是设计者用抽象的方式描述所需的功能,并自动分析和插入实现细节。库/IP将预先设计好的低抽象级实现用于高级抽象。测试/验证技术确保每级功能正确,减少各级之间反复设计的成本。

12.7.4 嵌入式开发设计环境

  1. 与嵌入式操作系统配套的开发环境。
  2. 与处理器芯片配套的开发环境。这类开发环境一般由处理器厂商提供。
  3. 与具体应用平台配套的开发环境。
  4. 其他类的开发环境

12.7.5 嵌入式软件设计模型

嵌入式系统常用的计算模型有如下几种:时序计算模型、通信进程模型、状态机模型、数据流模型、面向对象模型、并发进程模型

1. 状态机模型

有限状态机FSM是一个基本的状态模型,可以用一组可能的状态描述系统的行为,系统在任何时刻只能处于其中一个状态,也可以描述由输入确定的状态转移,最后可以描述在某个状态下或状态转移期间可能发生的操作。

当FSM被用于嵌入式系统设计时,其输入和输出的类型都是布尔类型,而函数表示含有布尔运算的布尔函数,这种模型对于没有数据输入或输出的很多纯控制系统而言已经足够。如果要处理数据,则将FSM扩展为带有数据路径的状态机FSMD。另外,对状态机模型可以进一步扩展以支持分级和并发,这种模型称为分级/并发FSM模型

2. 数据流模型

是并发多任务模型派生出的一种模型,该模型将系统的行为描述为一组结点和边,其中结点表示变换,边表示从一个结点到另一个结点的数据流向。每个结点使用来自其输入边的数据,执行变换并在其输出边上产生数据。

每个边可能有货没有数据,出现在边上的数据称为令牌。当每个结点的所有输入边都至少有一个令牌时,该结点可触发。结点触发后,将使用来自每条输入边上的一个李竞拍,对所有使用的令牌进行数据变换,并在输出边上产生一个令牌,结点的触发仅决定于令牌出现的情况。

同步数据流模型中,在结点的每条输入边和输出边上分别标注每次触发所使用和产生的令牌数。该模型的优点是,在实现时不需要将其转换为并发多任务模型,而是用静态方式调度结点,产生时序程序模型。该模型可以使用时序程序语言来表达,不需要实时操作系统就可以执行,因此其执行效率更高。

3. 并发进程模型

是由一组进程构成,每个进程是一个顺序执行的过程,各进程间可以并发执行。并发进程模型提供创建、终止、暂停、恢复和连接进程的操作。进程在执行中可以相互通信,交换数据。进程间通信可以采用两种方式:共享变量和消息传递。信号量、临界区、管程和路径表达式等用来对并发进程的操作进行同步。

4. 面向对象模型

是以一种更加直接的方式刻画客观世界中的活动,模型中存在着潜在的并发执行能力。一个对象向另一个对象发送消息后,若不需要或不立即需要消息的执行结果,前者不必等待后者处理消息,消息发送者和消息接受者可以并发执行。对象不都是处于被动的提供服务状态,他们中的一些除了能通过接收消息向外提供服务外,还可以有自己的事务处理。一个对象往往可以同时处理多个消息。

对象是数据和操作的封装体,数据存放在对象的局部变量中,对象的状态由对象所有的局部变量在某一时刻的取值来表示。在并发环境中,还要考虑对象并发状态的描述问题,因为对象的并发控制是根据对象的并发状态来进行的。

把并发和面向对象相结合,归结起来可分为两条途径:

  1. 在面向对象模型中引入并发机制,充分利用面向对象刻画客观世界的良好模型能力和面向对象的各个重要特性,同时把其潜在的并发能力描述出来,使其适合于描述并发计算。
  2. 在传统并发模型中引进面向对象思想。

面向对象的并发模型可以分为两种类型:

  1. 隐式并发模型。特点是推迟并发设计,将对象建模作为建模基础。在进入运行阶段之前,将对象看成自主单元,各种对象的活动看成立项并发方式完成的特定工作。就像每个对象拥有一个自己的处理器,这个处理器可以为对象提供一个执行线程。进入系统的外部事件可以看成是一个处理请求,以广播方式传给一些对象,这些对象接着向其他对象进一步提出处理请求。理论上,对应一个请求,可以由任意多个对象执行响应的处理。在实现时,由调度程序最终决定其对象的操作顺序。
  2. 显示并发模型。特点是首先考虑并发,应先把并发概念和对象概念分开。在建立对象以后,用实时操作系统支持的进程概念来表示并发,形成对象和进程两个抽象层次,即先将系统分解为准兵法进行作为开始,而在每个进程的内部采用个面向对象的技术。对象间交互表示成嵌套的函数调用,通过加入锁、监视器、信号量等显示同步机制,来保证对象的完整。该模型将进程置于对象之上,对象中不必考虑并发、对象串行化。

12.7.6 需求分析

需求分析阶段最重要的文档输出就是系统的规格说明。

规格说明是精确反映客户需求并且作为设计时必须遵循的要求的一种技术文档。规格说明应该是清晰的、无歧义的,否则由该规格说明建造系统可能不符合实际要求。流行的方法是采用UML进行规格说明的描述。

在需求分析阶段,通过用例来捕获用户需求。通过用例建模,描述对系统感兴趣的外部角色及其对系统(用例)的功能要求,分析阶段主要关心问题域中的主要概念和机制,需要识别这些类及它们相互间的关系,并用UML类图来描述。在分析阶段,只对问题域的对象建模,而不考虑定义软件系统中技术细节的类。

12.7.7 系统设计

  1. 协同合成工具。
  • POLIS。交互式嵌入系统的软、硬件协同设计框架,适用于小型控制系统的设计,系统描述支持基于FSM的语言。不支持共享内存。
  • COSYMA。一种探索硬件和软件协同设计合成进程的平台,面向软件系统的描述较简单,支持自动分割和协同处理器合成,在合成时期可以对设计空间进行探索,系统合成取决于硬件限制,不支持并发模块。
  • Chinook。为控制系统而设计的,整个系统的描述作为一个输入提供给Chinook,它的内部模式基于类似等级状态的模式,不对代码进行分割,为整个设计提供单一的模拟环境。
  1. 协同模拟工具。不仅提供检验,而且为用户提供各系统的性能信息,这有助于在系统的早期提出变更方案,不至于造成重大损失。目前,主要的协同模拟工具有如下两种:
  • PTOLEMY。关键思想是混合使用面向对象内核的计算模型,可用于模拟多种的系统,在各种应用中被过饭使用,但不适合于系统合成,硬件模拟也是它的一项功能。
  • TSS。是模拟复杂硬件的工具,采用C语言编写,单个模块的提取可由用户控制,可以方便的进行添加和删除模块。但不支持分级模块,没有用于同步各处理器存取共享数据结构的机制,模块间的通信通过端口和总线进行,并且,支持多核系统的模拟。

1. 系统架构设计

先考虑系统的软件架构,然后再考虑其硬件实现。

  1. 原始框架。
  2. 软件系统架构
  3. 硬件系统架构

2. 硬件子系统设计

嵌入式系统的开发环境由四部分组成:目标硬件平台、嵌入式操作系统、编程语言和开发工具。

  1. 选择处理器技术。
  2. 通用嵌入式处理器的选择。根据用户的需求和项目的需要选择合适的通用的嵌入式处理器,选择时需要考虑如下指标:
  • 处理器的速度。一个处理器的性能取决于多个方面的因素:时钟频率、内部寄存器的大小,指令是否对等处理所有的寄存器等。
  • 技术指标
  • 开发人员对处理器的熟悉程度
  • 处理器的I/O性能是否满足系统的需求
  • 处理器的相关软件支持工具
  • 处理器的调试,即处理器是否集成了调试功能
  • 处理器制造商的支持可信度。
  1. 硬件设计的注意事项。首先,将硬件划分为部件或模块,并绘制部件或模块连接框图。其次,对每个模块进行细化,把系统分成更多可管理的小块,可以被单独实现。设计时需要注意以下几点:
  • I/O端口:列出硬件的所有端口、端口地址、端口属性、使用的命令和序列的意义、端口的状态及意义。
  • 硬件寄存器:对每个寄存器设计寄存器的地址、寄存器的位地址和每个位表示的意义,以及对寄存器读写的说明、使用该寄存器的要求和时序说明。
  • 内存映射:共享内存和内存映射I/O的地址,对每个内存映射,说明每个I/O操作的读/写序列、地址分配。
  • 硬件中断
  • 存储器空间分配

3. 软件子系统设计

根据需求分析阶段的规格说明文档,确定系统计算模型,对软件部分进行合理的设计即可。

  1. 操作系统的选择。在选择嵌入式操作系统时,需要做多方面的考虑K
  • 操作系统的功能
  • 配套开发工具的选择
  • 操作系统的移植难易程度
  • 操作系统的内存需求如何
  • 操作系统附加软件包
  • 操作系统的实时性如何
  • 操作系统的灵活性如何
  1. 编程语言的选择。在选择编程语言时,也需要做多方面的考虑:
  • 通用性
  • 可移植性
  • 执行效率
  • 可维护性
  • 基本型恩能够
  1. 软件开发过程。主要有如下步骤:
  • 选择开发语言,建立交叉开发环境
  • 根据详细设计说明编写源代码,进行交叉编译、链接
  • 目标代码的重定位和下载
  • 在宿主机或目标机调试、验证软件功能
  • 进行代码的优化
  1. 软件开发文档。在嵌入式产品的开发设计过程中,开发阶段完成系统产品的实现,这一阶段同时需要完成一系列的文档,这些文档对完成产品设计、维护相当重要,这些文档分别为技术文件目录、技术任务书、技术方案报告、产品规格、技术条件、设计说明书、实验报告、总结报告等。

12.7.8 系统集成与测试

通常嵌入式系统测试主要包括软件测试、硬件测试、单元测试三个部分。差别如下:

  1. 嵌入式软件必须长时间稳定运行
  2. 嵌入式徐如那件一般不会频繁的版本升级
  3. 嵌入式软件通常使用在关键性的应用中
  4. 嵌入式软件必须和嵌入式硬件一起对产品的故障和可靠性负责
  5. 现实世界的条件是异步和不可预测的,使得模拟测试非常困难。

嵌入式测试主要集中在以下4个不同的方面:

  1. 因为实时性和同时性很难满足,所以大多数测试集中于实施测试。
  2. 大多数实时系统都有资源约束,因此需要更多的性能和可用性测试。
  3. 可以使用专用实时跟踪工具对代码覆盖率进行测试。
  4. 对可靠性的测试级别比通用软件要高得多。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容