0%

官方系统架构设计师教程-ch19-嵌入式系统设计

嵌入式系统设计

嵌入式软件是与硬件最为相关的软件系统。随着嵌入式设备的增长,嵌入式软件复杂度也不断增加。本章介绍了嵌入式系统的特点及针对嵌入式系统的软件设计。

嵌入式系统

嵌入式系统概念

嵌入式系统的基本概念

嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用对功能、可靠性、成本、体积和功耗等方面的要求,集可配置可裁减的软、硬件于一体的专用计算机系统。主要由嵌入式硬件平台、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。

嵌入式系统具有以下特点。

(1)系统专用性强。

(2)系统实时性强。

(3)软、硬件依赖性强。

(4)处理器专用。

(5)多种技术紧密结合。

(6)系统透明性。

(7)系统资源受限。

嵌入式系统的实时概念

兼有实时系统的特性和嵌入式系统特性的系统称为实时嵌入式系统。它们之间的关系如图19-1所示。

图19-1 实时嵌入式系统找不到图片(Image not found)
嵌入式系统的分类

按照嵌入方式、嵌入程度、实时性和系统的复杂程度4种准则可以对现有的嵌入式系统进行如下分类。

根据嵌入方式分类:整机式嵌入、部件式嵌入和芯片式嵌入。

根据嵌入程度分类:深度嵌入、中度嵌入和浅度嵌入。

根据实时性分类:实时嵌入式系统和非实时嵌入式系统。

根据系统的复杂程度分类:单微处理器嵌入式系统、组件式嵌入式系统和分布式嵌入式系统。

嵌入式系统的应用领域

嵌入式系统和嵌入式软件的主要应用领域如下。

(1)工业控制领域。

(2)家电领域。

(3)商业和金融领域。

(4)交通运输领域。

(5)通信领域。

(6)建筑领域。

(7)环境监测领域。

(8)医疗卫生领域。

嵌入式系统的基本架构

嵌入式系统

嵌入式系统一般由软件和硬件两个部分组成,其中嵌入式处理器、存储器和外部设备等(如图19-2所示)构成整个系统的硬件基础。嵌入式系统的软件部分可以分为多个层次(如图19-3所示),其中系统软件和支撑软件是基础,应用软件则是最能体现整个嵌入式系统的特点和功能的部分。

图19-2 典型嵌入式系统硬件架构找不到图片(Image not found)
硬件平台的系统架构

微处理器是整个嵌入式系统的核心,负责控制系统的执行。根据目前的使用情况,嵌入式处理器可以分为如下几类。

(1)嵌入式微处理器。

(2)嵌入式微控制器。

(3)嵌入式数字信号处理器。

(4)嵌入式片上系统。

嵌入式系统的软件架构

一个完整的嵌入式软件体系如图19-3所示。这个体系自底向上由以下部分组成:设备驱动管理层、嵌入式操作系统、支撑软件和应用软件。

图19-3 一种基于Linux的嵌入式软件架构找不到图片(Image not found)

例如,在Linux核心操作系统的架构中,文件系统、网络支持等部分都以模块化的方式与核心协调工作。整个Linux核心的源代码树可以通过工程手段根据需要进行剪裁,从中剔除掉不必要的设备驱动程序、文件系统、语言和显示等的支持,从而在保证核心具备必须功能的前提下达到精简核心尺寸的目的。

存储方案支持固化Flash、CF卡、DOC/DOM/DOF以及各种低噪音的嵌入式硬盘。在实际的开发过程中,存储方案的选择与具体的应用模式相结合,根据不同的应用模式来采用相应的存储方案。实际上,存储方案的选择就是在嵌入式Linux系统的可靠性、尺寸、功能、成本之间寻求最佳的平衡点。

因此,嵌入式软件需要通过裁减与组合,以适应各种应用场合和成本需要。嵌入式软件架构需要很好的可配置性和扩展性。

嵌入式操作系统

嵌入式操作系统的概念与特点

嵌入式操作系统是指运行在嵌入式计算机系统上支持嵌入式应用程序的操作系统,是用于控制和管理嵌入式系统中的硬件和软件资源、提供系统服务的软件集合。嵌入式操作系统是嵌入式软件的一个重要组成部分。

与通用操作系统相比,嵌入式操作系统主要有以下特点。

(1)微型化。

(2)代码质量高。

(3)专业化。

(4)实时性强。

(5)可裁减、可配置。

嵌入式操作系统的分类

从嵌入式操作系统的获得形式上,可以分为商业型和非商业型两类。

根据嵌入式操作系统的实时性,可以分为实时嵌入式操作系统和非实时嵌入式操作系统两类。

嵌入式操作系统的一般结构

嵌入式操作系统的一般结构如图19-4所示。嵌入式操作系统主要由应用程序接口、设备驱动和操作系统内核等几部分组成。

图19-4 嵌入式操作系统的一般结构找不到图片(Image not found)

嵌入式操作系统是一个按时序方式调度执行、管理系统资源并为应用代码提供服务的基础软件。每个嵌入式操作系统都有一个内核。另一方面,嵌入式操作系统也可以是各种模块的有机组合,包括内核、文件系统、网络协议栈和其他部件。但是,如图19-5所示,大多数内核都包含以下三个公共部件:调度器、内核对象和内核服务。

图19-5 嵌入式操作系统的内核部件找不到图片(Image not found)
嵌入式操作系统的多任务调度

1)基本概念

(1)任务。

(2)任务对象。

(3)多任务。

(4)调度器。

(5)可调度实体。

(6)上下文切换。

(7)可重入性。

(8)分发器。

(9)调度算法。

(10)优先级。

目前,大多数内核支持两种普遍的调度算法,即基于优先级的抢占调度(Preemptive Priority-Based Scheduling)和时间轮转调度算法(Round-Robin Scheduling)。

2)调度算法

(1)任务优先级分配方法。

一般地,可以采用单调执行速率调度法RMS(Rate Monotonic Scheduling)来给任务分配优先级,执行最频繁的任务优先级最高。

(2)时间轮转调度。

基于优先级抢占式扩充时间轮转调度,对于优先级相同的任务使用时间片获得相等的CPU执行时间。内核在满足以下条件时,把CPU控制权转交给下一个就绪态的任务。

(3)任务操作。

内核提供任务管理服务,也提供一个允许开发者操作任务的系统调用。典型的任务操作有任务创建和删除、任务调度控制、任务信息获取。

嵌入式操作系统的内核对象

实时嵌入式操作系统的用户可以使用内核对象来解决系统设计中的问题,如并发、同步与互斥、数据通信等。内核对象包括信号量、消息队列、管道、事件与信号等。

实时嵌入式操作系统的内核服务

实时嵌入式操作系统的内核服务有异常和中断、计时器、I/O管理。

内存管理

不论嵌入式系统的类型如何,对内存系统的普遍要求是最高的内存利用率、最小的管理负载和确定的分配时间。管理内容如下。

(1)嵌入式系统中固定尺寸内存池的内存管理。

(2)阻塞与非阻塞的内存函数。

(3)硬件内存管理单元。

(4)同步与通信。

典型嵌入式操作系统

嵌入式操作系统分为从不同的通用操作系统发展来的通用嵌入式操作系统,如WinCE、Linux等,大多数是特定领域专用操作系统,如表19-1所示。

表19-1 主要嵌入式操作系统找不到图片(Image not found)
表19-1 主要嵌入式操作系统-续表找不到图片(Image not found)

以VxWrorks为例,VxWrorks是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。VxWrorks是专门为实时嵌入式系统设计开发的操作系统内核,为程序员提供了高效的实时多任务调度、中断管理、实时的系统资源以及实时的任务间通信。VxWrorks在各种CPU平台上提供了统一的编程接口和一致的运行特性,尽可能地屏蔽了不同CPU之间的底层差异。

VxWrorks以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空和航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导和飞机导航等。

VxWrorks操作系统的基本构成部件主要有以下5个部分:板级支持包BSP(Board Support Package)、微内核Wind、网络系统、文件系统和I/O系统。

VxWorks系统具有高性能的微内核设计、可裁剪的运行软件、综合的网络工具、兼容POSIX 1003.1b标准、平台的选择、方便地移植到用户硬件上及操作系统选件等特色。

嵌入式数据库管理

嵌入式数据库管理系统概述

通常,嵌入式数据库管理系统就是在嵌入式设备上使用的数据库管理系统。由于用到嵌入式数据库管理系统的系统大多数都是移动信息设备,所以,嵌入式数据库也称为移动数据库或嵌入式移动数据库。其作用主要是解决移动计算环境下数据的管理问题,移动数据库是移动计算环境中的分布式数据库。

嵌入式数据库管理系统使用环境的特点

嵌入式数据库系统是一个包含嵌入式数据库管理系统在内的跨越移动通信设备、工作站或台式机以及数据服务器的综合系统。其使用环境的特点可以简单地归纳如下。

(1)设备随时移动性。

(2)网络频繁断接。

(3)网络条件多样化。

(4)通信能力不对称。

嵌入式数据库管理系统组成与关键技术

1)嵌入式数据库管理系统组成

一个完整的嵌入式数据库管理系统包括主数据库管理系统、同步服务器、嵌入式数据库管理系统和连接网络等几个子系统,如图19-6所示。

图19-6 嵌入式数据库系统组成找不到图片(Image not found)

2)嵌入式移动数据库在应用中的关键

嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高效的事务处理和数据的安全性等问题。

3)移动数据库管理系统的特性

由于嵌入式移动数据库管理系统在移动计算的环境下应用在嵌入式操作系统之中,是一种动态分布式数据库管理系统,其特点和功能如下。

(1)微核结构。

(2)对标准SQL的支持。

(3)事务管理功能。

(4)完善的数据同步机制。

(5)支持多种连接协议。

(6)完备的嵌入式数据库管理功能。

(7)支持多种嵌入式操作系统。

还应考虑的因素有对断接操作的支持、对跨区长事务的支持、对位置相关查询的支持、对查询优化的特殊考虑以及对提高有限资源的利用率和对系统效率的考虑等。

嵌入式移动数据库管理系统的应用

嵌入式数据库管理系统主要用于以移动信息设备为终端、并需要定期汇总的金融、零售、医疗、公安、保险、工业制造、仓储以及电信等多个行业和领域。

嵌入式数据库管理系统案例

SQL Anywhere Studio是Sybase公司开发的一个嵌入式数据库系统,主要用于笔记本式计算机、手持设备和智能电器等领域。

Adaptive Server Anywhere嵌入式数据库管理系统具有支持多种操作系统、支持Java、支持Internet、支持多种应用程序接口、易于管理及系统规模配置灵活等主要特性。

嵌入式网络及其他

嵌入式网络是用于连接各种嵌入式系统,使之可以互相传递信息、共享资源的网络系统。嵌入式系统在不同的场合采用不同的连接技术,如在家庭居室采用家庭信息网,在工业自动化领域采用现场总线,在移动信息设备等嵌入式系统则采用移动通信网。此外,还有一些专用连接技术用于连接嵌入式系统。

现场总线网

现场总线(Field Bus)是将数字传感器、变换机、工业仪表及控制执行机构等现场设备与工业过程控制单元、现场操作站等相互连接而成的网络。它具有全数字化、分散、双向传输和多分支的特点,是工业控制网络向现场级发展的产物。

嵌入式现场控制系统将专用微处理器置入传统的测量控制仪表,使其具备数字计算和数字通信能力。

现场总线主要有总线型与星型两种拓扑结构。现场总线控制系统通常由以下部分组成:现场总线仪表、控制器、现场总线线路、监控、组态计算机,并通过现场总线网卡、通信协议软件连接到网上。

现场总线控制系统的优点如下。

(1)全数字化。

(2)全分布。

(3)双向传输。

(4)自诊断。

(5)节省布线及控制室空间。

(6)多功能。

(7)开放性。

(8)互操作性。

(9)智能化与自治性。

具有代表性的实例有德国BOSCH公司的CAN(Control Area Network),Echelon公司的LONGWORKS。

家庭信息网

家庭信息网是把家庭范围内的个人计算机,家用电器,水、电、气仪表,照明设备和网络设备及安全设备等连接在一起的局域网。其主要功能是集中控制上述设备并将其接入Internet,以共享网络资源和服务。

家庭信息网需要解决的两个基本问题如下。

(1)如何将家用电器,水、电、气仪表,照明设备等互相连接起来。

(2)如何实现这些连在一起的设备之间的互操作。

家庭信息网的拓扑结构有总线型和星型等。

目前,家庭信息网的传输技术有两类:一类是有线连接技术,包括以太网、电话线、电力线、IEEE1394以及USB等。另一类是无线连接技术,包括蓝牙(BlueTooth)、红外线(InfraRed)、无线USB以及802.11x等相关无线标准。

无线数据通信网

无线数据通信网是一种通过无线电波传送数据的网络系统。通过无线数据通信网,智能手机、PDA及笔记本式计算机可以互相传递数据信息,并接入因特网。

无线数据通信网分为短程无线网和无线因特网。短程无线网主要包括802.11、蓝牙、IrDA及HomeRF等。无线因特网或移动因特网主要采用两种无线连接技术:一种是移动无线接入技术,如GSM(Global System for Mobile)、GPRS(General Packet Radio Service)和CDPD(Cellular Digital Packet Data)等。另一种是固定无线接入技术,包括微波、扩频通信、卫星及无线光传输等。

无线局域网(Wireless LocalArea Network,WLAN)是计算机网络与无线通信技术相结合的产物。无线局域网的传输媒体是红外线(IR)或者无线电波(RF),目前无线电波的使用更广泛一些。

目前常见的无线网络标准以IEEE802.11x系列为主。

嵌入式因特网

随着Internet和嵌入式技术的飞速发展,越来越多的信息电器都要求与Internet连接,来共享Internet所提供的方便、快捷、无处不在的信息资源和服务,即嵌入式Internet技术。嵌入式Internet技术在智能交通、家政系统、家庭自动化、工业自动化、POS及电子商务等领域具有广阔的应用前景。

嵌入式因特网有直接接入因特网和通过网关接入因特网两种接入方法。

嵌入式系统的其他支撑软件

嵌入式系统的支撑软件通常包括窗口系统、网络系统、数据库管理系统及Java虚拟机等几个部分。

嵌入式窗口系统

嵌入式窗口系统是用于控制嵌入式系统中的位映像显示设备与输入设备的软件系统,管理屏幕、窗口、字体、光标、图形图像以及输入设备等资源。

图形用户界面系统是指计算机系统以图形方式向用户提供的人机交互的操作环境,如图19-7所示。

嵌入式窗口系统实例分析

嵌入式系统往往是一种定制的设备,它们对图形用户界面的需求也各不相同,因此很多嵌入式系统需要自己特定的嵌入式图形用户界面。常用的嵌入式图形用户界面有MiniGUI、Microwindows、OpenGUI和Qt/Embedded。

嵌入式系统的Java虚拟机

Java最初是由Sun公司开发的编程语言,可以在网络环境下为不同类型的计算机和操作系统开发软件。目前,在智能手机、机顶盒等嵌入式系统中得到了广泛的应用。

运行J2ME(Java 2 Platform Micro-Edition)微型版的嵌入式设备主要有两大类:受限连接设备(Connected Limited Device)和连接设备(Connected Device)。如图19-8所示,J2ME的结构分为4个层次:框架、配置、Java虚拟机及嵌入式操作系统,J2ME的核心是Java虚拟机。

图19-7 图形用户界面系统的层次模型找不到图片(Image not found)
图19-8 J2ME的层次结构找不到图片(Image not found)

KVM(K Virtual Machine)和CVM(C Virtual Machine)都是JVM的子集,均可被看做是一种Java虚拟机,它们是J2SE JVM的压缩版。框架、配置、虚拟机与嵌入式操作系统之间的关系如图19-9所示。

图19-9 框架、配置、虚拟机与嵌入式操作系统之间的关系找不到图片(Image not found)

目前,在J2ME中,主要有MIDP、Personal、PDA、Foundation和RMI等框架。

移动信息设备框架(Mobile Information Device Profile,MIDP)是一个Java API集合,它处理诸如用户界面、持久存储和联网等问题。

嵌入式系统的设计

嵌入式系统分析与设计

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

嵌入式系统的核心技术有三种:处理器技术、IC技术和设计/验证技术。

1)处理器技术

处理器技术与实现系统功能的计算引擎结构有关,不可编程的数字系统也可以视为处理器,这些处理器的差别在于其面向特定功能的专用化程度,导致其设计指标与其他处理器不同。

(1)通用处理器。

这类处理器可用于不同类型的应用,一个重要的特征就是存储程序,由于设计者不知道处理器将会运行何种运算,所以无法用数字电路建立程序。另一个特征就是通用的数据路径,为了处理各类不同的计算,数据路径是通用的,其数据路径一般有大量的寄存器以及一个或多个通用的算术逻辑单元。设计者只需要对处理器的存储器编程来执行所需的功能,即设计相关的软件。

在嵌入式系统中使用通用处理器具有设计指标上的一些优势:上市时间快和成本较低;设计者只需编写程序,而不需要做任何数字电路设计;灵活性高,功能的改变通过修改程序进行。与自行设计处理器相比,小批量时单位成本较低。

当然,这种方式也有一些设计指标上的缺陷,数量大时的单位成本相对较高。因为数量大时,自行设计的成本分摊下来,可降低单位成本。同时,对于某些应用,性能可能很差。由于包含了非必要的处理器硬件,系统的体积和功耗可能变大。

(2)单用途处理器。

单用途处理器是设计用于执行特定程序的数字电路,也指协处理器、加速器和外设等。如JPEG编码解码器执行单一程序,压缩或解压视频信息。嵌入式系统设计者可通过设计特定的数字电路来建立单用途的处理器,也可以采用预先设计好的商品化的单用途处理器。

在嵌入式系统中使用单用途处理器,在指标上有一些优缺点。这些优缺点与通用处理器基本相反,性能可能更好,体积与功率可能较小,数量大时的单位成本可能较低,而设计时间与NRE成本可能较高,灵活性较差,数量小时的单位成本较高,对某些应用性能不如通用处理器。

(3)专用处理器。

专用指令集处理器(ASIP)是一个可编程处理器,针对某一特定类型的应用进行最优化。这类特定应用具有相同的特征,如嵌入式控制、数字信号处理等。在嵌入式系统中使用ASIP,可以在保证良好的性能、功率和大小的情况下,提供更大的灵活性,但这类处理器仍需要昂贵的NRE成本建立处理器本身和编译器。单片机和数字信号处理器是两类应用广泛的ASIP,数字信号处理器是一种针对数字信号进行常见运算的微处理器,而单片机是一种针对嵌入式控制应用进行最佳化的微处理器。通常控制应用中的常见外设,如串行通信外设、定时器、计数器、脉宽调制器及数/模转换器等都集成到了微处理器芯片上,从而使得产品的体积更小、成本更低。

2)IC技术

(1)全定制/VLSI。

在全定制IC技术中,需要根据特定的嵌入式系统的数字实现来优化各层设计人员从晶体管的版图尺寸、位置、连线开始设计,以达到芯片面积利用率高、速度快、功耗低的最优化性能。利用掩膜在制造厂生产实际芯片,全定制的IC设计也常称为大规模集成电路设计(VLSI),具有很高的成本,很长的制造时间,适用于大量或对性能要求严格的应用。

(2)半定制ASIC。

半定制ASIC是一种约束型设计方法,包括门阵列设计法和标准单元设计法。它是在芯片上制作一些具有通用性的单元元件和元件组的半成品硬件,设计者仅需要考虑电路的逻辑功能和各功能模块之间的合理连接即可。这种设计方法灵活方便、性价比高,缩短了设计周期,提高了成品率。

(3)可编程ASIC。

可编程器件中所有各层都已经存在,设计完成后,在实验室里即可烧制出设计的芯片,不需要IC厂家参与,开发周期显著缩短。可编程ASIC具有较低的成本,单位成本较高,功耗较大,速度较慢。

3)设计/验证技术

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

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

软件设计技术的核心是软件语言。软件语言经历了从低级语言(机器语言、汇编语言)到高级语言(如结构化设计语言、面向对象设计语言)的发展历程,推动其发展的是汇编技术、分析技术、编译/解释技术等诸多相关技术。

早期,随着通用处理器概念的逐渐形成,软件技术迅速发展,软件的复杂度也开始增加,软件设计和硬件设计的技术和领域完全分开。设计技术和工具在这两个领域同步得到发展,也使得行为描述可以在越来越抽象的级别上进行,以适应设计复杂度不断增长的需要。采用UML等建模,进行分析与设计已成为统一共识。

系统的设计流程

嵌入式系统软件的开发过程可以分为项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固化、测试及运行等几个阶段,这些阶段的次序和关系如图19-10所示。

图19-10 嵌入式软件开发的一般过程找不到图片(Image not found)

(1)评估用户的需求采用计算机的必要性。从经济效益和社会效益这两个侧面来考虑。

(2)用户需求调查与分析,并提炼出规格说明。

(3)选择处理器。在用户需求调查清楚的基础上,再仔细进行分析。理解满足用户需求所需什么样的速度、什么样的精度、什么样规模的嵌入式系统可以实现用户的需求。在此基础上,首先确定作为系统的核心部件的处理器。选择合适的处理器对实现用户需求、提高系统性能、降低系统成本以及缩短开发周期都是十分重要的。选择处理器可从字长、速度、中断能力、环境的适应能力、硬件和软件的支持能力、开发和调试手段几个方面来考虑。

(4)制订系统方案。在系统的核心部件处理器确定后,便可以根据需求来制订系统的总体方案。这包括硬件系统方案和软件系统方案两个方面,并对总体方案进行评审。

(5)软、硬件分别设计。

(6)实验室联调。

(7)现场调试和试运行。

(8)鉴定或验收。

1)需求分析阶段

当确定要为用户设计开发嵌入式计算机系统后,接下来重要的一步就是对用户的需求进行认真仔细的调查和分析。这一步极为重要,因为此后系统设计的所有工作都是以用户的需求为依据的。用户的需求没有做好,则设计一定是失败的;用户没有要求的功能在设计中做了,有可能是锦上添花,也可能是画蛇添足。因此,最重要的在于满足用户的需求。

用户的需求调查一定要仔细进行,全面详细地了解要求,仔细地倾听用户的解释,经分析以文字的形式写出来并形成文档。而且使设计者的理解与用户的解释完全一致,不能存在二义性。

在需求调查时,除了仔细了解用户的需求外,还要对用户使用嵌入式系统的环境进行调查。这些内容也许用户没有意识到它们的重要性,但系统设计者必须予以高度重视。

一般都将形成文档的用户需求报告作为系统开发研制合同的附件,因为它既是开发的依据,又可在出现争议时备查。

2)规格说明

对用户需求进行提炼便可得到系统的规格说明。规格说明里包含了进行系统体系结构设计所需要的足够信息。将客户的描述转化为系统设计者的描述的结构化方法就是从客户的需求中获取一组一致性的需求,然后从中整理出正式的规格说明。

规格说明起到客户和生产者之间合同的作用,所以规格说明必须小心编写,以便精确地反映客户的需求并且作为设计时必须明确遵循的要求。

规格说明还应该足够明晰,以便别人可以验证它是否符合系统需求并且是否能完全满足客户的期望,它亦不能有歧义。

3)设计阶段

稍具规模的嵌入式系统设计过程都是系统工程,需多个技术人员齐心协力共同以最快的速度加以实现。单靠一个人,即使有能力解决所有问题,但一个系统设计做出来可能就需好多年。当几年后系统完成时也就成为落后和无用的东西了,因为这个领域的技术发展非常快。

在硬件好分割的地方将硬件分割成若干模块。在软件好分割的地方、界面比较简单的地方将软件分割成若干模块,然后将硬件模块和软件模块分别交给不同的技术人员同时进行设计。

在设计过程中,规定设计进度,限定时间将各自的模块设计并调试出来。在此过程中,对出现的问题要进行协调。若有方案上的变更,要以文字的形式通知设计人员。各设计人员在设计和调试自己的模块过程中要做必要的记录。

4)系统集成与测试阶段

当软、硬件各模块都设计调试完成后,便可在实验室进行联调。

将硬件模块逐块加到硬件系统上,逐块模板进行调试。直到所有硬件模块都调试出来,证明它们可以正常工作。

同时,对各自设计的软件模块逐块进行连接并调试,证明软件系统可以工作。

将软、硬件结合在一起,对整个系统进行调试,并在实验室里进行模拟试运行。在实验室模拟试运行中,如果需要,可在实验室里产生模拟信号。例如,称重传感提供0~20mV的称重信号,也许实验室里没有称重传感器,但实验室里一定可以产生0~20mV的信号代替传感器的输出。同样,实验室里可能没有需要0~5mV的执行机构,但用万用表便可测量出系统硬件是否能够输出执行机构所需要的0~5mV的信号。

经过不断的模拟试运行,仔细观察并分析出现的现象和状态。判断系统工作是否正常,决不要放过任何的异常,对出现的问题随时加以解决。

由于用户需求的复杂性、多样性,使得系统的硬件和软件变得复杂得多。因此,在实验室里进行模拟试运行时,一定要想办法使用户程序的每一条路径都能走到,即测试用户程序的各种可能。同时,要使系统连续运行较长的时间,以便发现可能隐藏的软、硬件故障。

5)现场调试和试运行

在实验室模拟试运行确认系统工作是正确的情况下,便可将系统运往用户现场,在现场进行安装和调试。这时,系统所连接的专用外设都是系统真正要使用的,在调试时也应逐个进行外设的连接,逐个进行调试。

在调试通过后,即可使系统开始试运行。在试运行的过程中,一定要密切注视系统运行的状态,不要放过任何的异常情况;对系统运行的状态和数据进行详细记录;如果出现问题,应立即予以解决;要使系统无故障地、正常运行半年或更长的时间。

如果可能,最好多做几套样机,并将它们安装在不同的用户现场上,进行半年或更长时间的试运行,以便确定系统的工作性能。

嵌入式软件设计模型

状态机模型

有限状态机(FSM)是一种描述系统状态及其状态转换的节点网,包括节点和边,节点表示状态,边表示状态之间的转换关系。边上面标注事件,表示状态转换对该事件敏感。在一个典型的有限状态机中,系统总是处于单个状态,事件通信可以是广播、同步和非阻塞方式。图19-11显示了一个有限状态机的示例。

图19-11 有限状态机示例找不到图片(Image not found)

有限状态机适合于对控制领域的系统建模。但是,由于缺乏并发和层次化支持,创建系统的规模受限,无法对并发系统建模,这是由于有限状态机总是假设系统处于单个状态而造成的。

状态机被描述为:输入事件的集合;输出事件的集合;状态集合;把状态和输入事件映射到输出事件的集合;把状态和输入事件映射到状态的集合;对初始状态的描述;有限状态机是有限状态的机器。有限状态机可被用作提出和解决问题的开发工具,也可被用作为以后开发者描述解决方案的正式工具。有很多种显示状态机的方法,从简单的表格到图形示例。所谓状态机模型,是一个描述状态变迁的方法,它总是将一种状态向另一种状态的变迁视为由输入消息激励所产生的结果。这样,每当消息促使事务需要做出某种操作时,有限状态机的当前状态也随之改变,这种改变是根据预先制定好的规则来实现的。

状态机模型具有如下特点。

(1)输出由当前的输入和当前的状态决定。这是状态机模型和组合模型之间的最大区别。

(2)当前的状态由过去的输入决定。很显然,一个对象之所以拥有当前状态,是因为它在此前经历过初始化并响应过若干次外界的操作请求(即接受了外界的输入)。

(3)当前的状态是上一步输出的反映。被测对象处于当前状态的直接原因是对象对上一次的输入做了有效的回应,即产生了上一步的输出。

(4)输出受输入顺序的影响。因为对状态机模型而言,当前状态加上当前输入才可以得到预期的输出。如果把当前输入放在上一步输入之前,那时状态机既然不是处于当前状态之下,就无法得到预期的输出了。

数据流模型

数据流图允许系统作为操作网进行建模,特别适合于对实现进行分区的系统模型。这些模型的长度能够描述系统控制和数据域,这使得它们能够适合于对异构系统的建模。

数据流模型主要包括布尔数据流、层次化的流图和Petri网。

1)布尔数据流

布尔数据流克服了同步数据流模型中数据依赖操作的缺陷,引入了开关结点,能够根据输入值选择输出,支持对复杂算法的建模和实现。图19-12显示了一个布尔数据流模型。

图19-12 布尔数据流模型示例找不到图片(Image not found)

2)层次化的流图

层次化的流图包括节点和边,节点表示操作,边表示依赖。操作可以是条件、计算、等待和循环操作。条件操作支持在图模型中使用数据依赖。通信可以是阻塞式(Wait)和非阻塞式(Receive)。层次化的流图用于在系统中执行分区、调度和综合。

3)Petri网

Petri网是一种流程建模机制,其基本形式是由Petri提出的,所以命名为Petri网。目前,Petri网得到了广泛应用,特别是在离散事件仿真、实时调度、工业控制和工作流等方面。基本Petri网通常包括库所(Places)、操作(Transitions)和有向边(弧)。库所上的数据称为令牌(Tokens)。输入库所上的令牌可以触发迁移,消耗输入库所上的令牌,并为输出库所生成令牌。图19-13显示了一个Petri网的示例。

图19-13 Petri网示例找不到图片(Image not found)
并发进程模型

并发进程模型包括CSP与CCS等。

1)CSP模型

CSP(Communicating Sequential Processes)通信顺序进程是C. A. R. Hoare于1978年提出的一种并发、分布式程序设计语言模型。CSP一经出现就被广泛地应用于计算机科学的诸多领域,如网络通信协议的形式化描述等。

CSP将输入、输出操作列为程序语言的基本要素,而将实现顺序进程间通信的并行组合作为基本的程序控制结构。用这种语言设计的一个程序,就是一组进程,它们通过一个通信网络彼此通信。

CSP模型的目的是描述一种在计算机应用的广泛领域中适用的最简单的数学理论,其主要贡献是把计算机所涉及的各种计算形式及其性质建立在一套严密的形式系统上。其新版本TCSP在并发和通信方法及语义的研究方面与Milner的CCS很类似,对“失效语义”给出了精确的数学描述,使CSP理论更加可靠完善。

2)CCS模型

CCS(Calculus of Communicating System)通信演算系统是R. Milner于1980年发表的一个建立于极小原语集上的函数式程序设计语言模型,为通信的、非确定的并发系统提供了一个通用数学模型。

CCS模型是在一种较弱条件下建立起来的并发进程模型,企图俘获并发性及通信的一般数学性质。其主要贡献是关于并发系统构成的等价性研究,其中有代表性的是建立在双模拟基础上的等价概念。

CCS从简单的事实出发,以严谨、优美的数学形式,建立了并发系统行为的形式理论。

面向对象模型

面向对象模型的出发点,就是要把现实世界中物与物的关系怎样不变地用程序表示出来,并把现实世界的组织结构在计算机上再现。这种结构直观、易懂。现实世界中的万物都有自己的功能和任务,自己能干的事情自己完成,自己不能干的事情托他人代办,只要取得结果就可以了。因此,就要注意现实世界中各事物——即对象之间的联系,为每个对象分配任务,对象之间也相互传递任务,进行工作。这就是面向对象的方法。

面向对象的基本结构可用6个术语来描述,即对象、类、属性、消息、操作和关系。系统的结构中心是对象,每个对象中有属性和操作,属性和操作封装在一个盒子里。对象之间通过传送消息来协调工作。每个对象又进一步抽象为类,类是对象实体的模板。对象之间的相互地位用关系表示。关系大致分为三大类,即关联关系、Part-Of关系和Is-a关系。关联关系表示对象之间对等访问或利用关系。对象之间存在关联,表示相连的对象之间可以传递消息。Part-Of关系表示一方是他方对象的一部分的包含关系,是对象间的集约关系。Is-a关系则是类间的包含关系。在Is-a关系中,子类既继承父类的性质,又有自己独有的性质。这里的性质是指属性、操作和关系。

面向对象的模型特征可以从以下几个方面体现。

1)抽象化

通过对象来抽象现实世界有两点好处:首先是能自然地表示现实世界,通过对现实世界的模仿,就可以类推出需要的功能和操作;其次,是很容易明确分析焦点,只要把现实世界的一个重要侧面模型化,在以后的分析中必须注重的焦点就自然明确了。抽象化除把现实世界的事物抽象为对象外,还把性质相同的对象群进一步抽象为类。通过这种层次式的抽象,便可构造事物的体系,很自然地把握现实世界。

2)封装化

封装化可以把对象内部的数据和操作过程隐藏起来,可以控制模块间信息公开和隐藏的范围。对外,只让看到过程的规格说明,使得对象的规格说明和实现相分离。封装化的最大效果是把对象的提供者和对象的使用者分开,对象的使用者只知道在对象中定义的操作的规格说明,对象内部的数据结构和操作过程是不知道的。有些过程群是为了访问特定的数据结构而设置的,可以集中放在类中,也不会影响到对象使用者的信息,为需求的变更带来方便,同时还可以拒绝非法使用者的访问,达到保密的目的。

3)继承化

面向对象模型中,父类的概念可继承到子类,且子类还可以有自己的新性质,这就叫继承性。继承性可有效地重用资源、提高生产效率,具体体现在两点上:一是可以把类作为体系化的手段,即多个子类的共同性质抽象为一个父类。由此,父类容易明白子类之间性质的不同及分类观点,也便于子类追加自己的性质。二是可利用继承性来定义新类,只要定义出与现有类的不同点就可以了,有利于产品重用和更改管理。

4)状态

对象中所定义的过程能否使用,实际上是通过内部的属性值来决定的。根据属性值,可以把对象分成多个不同的状态。每种状态下,都标识出此刻可使用的过程。把状态的概念放入对象规格说明中,使得对象的提供者能把正确接收消息的过程作为状态转移图,提供给使用者。

由面向对象模型的分析可看出,面向对象方法论的特征是能在早期获取模型结构和现实世界结构的对应关系,所有的软件都可以看成是现实世界的模拟。

类—责任—协作者(Class-Responsibility-Collaborator,CRC)模型是面向对象建模的对象描述工具,用于标识类、指明类的责任(属性和操作)以及类之间的协作(多个类协同完成某些操作)。面向对象模型还包括对象信息、行为模型等,它们从不同侧面(静态、动态)描述系统。

嵌入式系统软件开发环境

嵌入式系统开发概述

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

调试方法

在嵌入式系统的实际开发实践中,经常采用的调试方法有直接测试法、调试监控法、在线仿真法、片上调试法及模拟器法等。

开发环境分类

嵌入式系统的开发环境可以分为如下几类。

(1)与嵌入式操作系统配套的开发环境。

(2)与处理器芯片配套的开发环境。

(3)与具体应用平台配套的开发环境。

(4)其他类。

开发环境举例

目前业界应用最广泛的集成开发环境为Tornadoll,美国WindRiver公司的VxWorks操作系统是Tornadoll嵌入式开发环境的关键组成部分。