嵌入式软件系统

2024-07-19

嵌入式软件系统(共12篇)

嵌入式软件系统 篇1

0引言

随着电网的不断发展, 控制中心在电网分析与控制方面的需求也越来越丰富, 这些具体的应用模块往往由不同的开发厂商提供, 并部署在控制中心的能量管理系统 (EMS) 之上, 为此需要各种应用模块与EMS进行有效的集成。在各种集成方案中, 嵌入式集成方案有以下显著优势:①功能分工清晰, 应用模块负责核心计算等功能, 而进程管理、人机交互、数据存储等由EMS平台统一提供;②数据源唯一, 便于维护;③可最大程度减少软硬件投资;④人机界面风格一致, 符合用户使用习惯。

随着未来智能电网调度技术支持系统在国家电网体系内的全面推广, 如何在此平台上实现应用软件的嵌入式集成已经成为业界关注的热点。本文提出了“即插即用”式嵌入式软件开发的框架与方法, 并以嵌入式自动电压控制 (AVC) 主站系统为实际案例进行详细阐述。

1设计思想

“即插即用”概念来源于硬件芯片设计思想, 芯片的核心电路功能可以采用不同方法实现, 只要保证芯片各引脚的功能 (与主板交互的数据) 相同即可。而这种“即插即用”的设计思想也一直是嵌入式软件系统设计所追求的目标。

嵌入式软件系统分为核心模块 (类似于芯片核心电路) 和接口模块 (类似于芯片引脚) 2部分, 针对不同的EMS (类似于外围设备, 如主板等) , 只需要改变相应的接口模块, 相当于构造嵌入式“软件芯片”, 如图1所示。

为实现上述软件框架, 需要解决以下关键问题:

1) 如何封装核心模块

核心模块完成数据处理与计算功能, 封装核心模块的目标是保证其独立于外部EMS。为此, 核心模块必须通过接口模块间接与EMS交互, 并将所有与外部EMS相关的代码在接口模块中实现。

2) 如何实现接口模块

作为核心模块与EMS的唯一交互接口, 需要对交互数据类型和可能的交互方式进行整理, 确保针对不同的EMS, 接口模块的功能定义不变, 改变的只是实现方式, 从而固化核心模块。

为解决上述2个关键问题, 需要对被嵌入的软件系统进行充分的分析和整理, 构建嵌入式接口并应用于实际应用系统。

2构建嵌入式系统接口

结合现场开发经验, 本文对控制中心应用软件与EMS的数据交换进行整理, 构建嵌入式系统接口。

2.1数据交换方式及交换内容

为构建嵌入式系统接口, 首先应明确双方需要交换的数据及可能的交换方式。嵌入式系统接口可以通过标准化、应用程序接口 (API) 、双方约定等3种方式来实现。

1) 标准化

IEC 61970系列标准化接口为实现不同系统间的数据交换提供了一种标准途径[1,2]。典型的标准化接口应用包括使用公共信息模型 (CIM) 标准文件交换模型数据、使用E语言文件格式交换实时数据, 使用组件接口规范 (CIS) 接口交换实时数据等。

使用标准化接口方式是实现系统间数据交换的重要方式, 已经得到了广泛应用[2,3]。但标准化接口只能对特定内容、特定格式的数据进行交互, 而且不同EMS对标准化接口的支持能力、标准化接口的稳定可靠性差别较大, 目前仅依靠标准化接口难以完全满足嵌入式应用数据交换的需要。

2) API

基于EMS提供的API完成相应的数据交换。在这种情况下, 嵌入式系统需要针对不同的EMS开发相应的接口模块。

EMS提供的API接口为EMS所有应用模块服务, 其稳定可靠性可以保障。但这种方式要求EMS本身具有较好的开放性。在这种方式下, 所有开发工作都在嵌入式系统侧完成, 不需要EMS进行改造。

3) 双方约定

受EMS自身平台功能的限制, 难以保证所有接口都可以使用API接口方式来实现, 对一些特殊数据, 需要EMS与嵌入式系统双方约定交换方法及数据格式。在这种情况下, 交换双方均需要进行相应的程序开发工作, 一般采用文件或者TCP/IP报文方式。

表1给出了3种接口方式在灵活性和使用工作量上的对比情况。在实际应用系统中, 应根据EMS功能及现场需要选择最合适的接口方式。

表2整理并分析了嵌入式系统与EMS所需要交互的数据, 同时针对各种数据交换类型提出了建议的接口实现方式。

2.2接口实现方式

接口模块实现的关键是将核心模块与EMS分离, 使它们都可以独立地变化。为此, 采用Bridge模式来设计实现接口模块:将EMS抽象接口和它的实现部分分别放在独立的类层次结构中。其中一个类层次结构针对EMS接口, 另外一个类层次结构针对平台相关的EMS实现部分[3]。图2以数据采集接口为例说明Bridge模式。

其中:类CEMS提供了嵌入式系统与EMS进行交互的接口并维护一个指向虚类CEMSImpl的指针;接口GetData () 用于描述CEMS提供的实时数据采集接口;虚类CEMSImpl定义了实现类的虚接口;CEMS通过调用CEMSImpl提供的接口来完成功能;CEMSImpl各子类 (CEMS1Impl, CEMS2Impl) 负责实现类的具体实现, 该实现通过上文提供的3种数据交换方式完成接口的具体实现。

图3以获取实时数据功能为例描述了嵌入式系统如何与EMS进行交互。

在嵌入式系统中, 专门启动数据采集进程从EMS获取实时数据。该数据采集进程调用CEMS类提供的GetData () 接口;具体的交互实现由CEMSImpl子类的EMSGetData () 接口来完成。

3嵌入式AVC主站实现方案

随着经济的发展和人民生活水平的提高, 电压质量问题日益突出, 使用AVC系统实现电网电压自动控制的需求日益迫切[4,5]。AVC系统最近几年刚刚起步, 并在国内多家网省调得到广泛应用[6,7,8,9]。一般来说, 在建设AVC主站系统时, 控制中心EMS及相关的软硬件条件已经比较成熟, 而且AVC主站系统与EMS往往由不同生产厂商提供, 因此不可避免地要在现有EMS运行环境中实现AVC主站系统的相关功能。在各种AVC主站系统的实现方案中, 嵌入式AVC主站系统由于嵌入式方案的显著优势脱颖而出。下文重点阐述嵌入式AVC主站系统的实现方案。

3.1数据流程

嵌入式AVC系统的数据流程如图4所示。

AVC系统从EMS获取模型类数据 (包括电网模型及AVC控制模型) 和实时数据, 通过控制计算生成实时控制策略;控制策略通过EMS提供的遥控、遥调接口下发给子站系统;AVC计算结果通过EMS人机接口在EMS人机界面上显示;AVC需要长时间保存的历史数据通过EMS提供的商用库访问接口保存在EMS商用数据库中。

3.2嵌入式AVC系统开发实现

AVC主站系统核心模块通过调用类CEMS提供的接口完成与EMS的交互。为提高系统稳定性, 各核心功能模块以独立进程方式运行, 进程间通过基于文件映射机制的实时数据库[10]进行通信, 充分保证了系统的运行速度, 并通过进程锁和流程控制机制对各功能模块进行组织和协调。

对于AVC主站系统, 主要在模型数据获取、实时数据采集、指令下发、历史数据管理、消息处理、结果显示等6个方面涉及与EMS的交互。为此, 在接口模块的类CEMSImpl中对该6大类接口功能进行封装, 并针对不同的EMS在CEMSImpl子类中完成相应的实现。表3描述了类CEMSImpl定义的各接口所交互的数据及接口实现方式。

3.3工程应用实施情况

本文设计的嵌入式AVC主站系统已经在多家网/省级电网得到实际应用, 包括南方电网总调、华东网调、江苏省调和湖北省调等。

从用户使用角度考虑, 嵌入式AVC主站系统相当于EMS应用的一个模块:AVC主站系统核心模块可以部署在EMS的某一应用服务器上 (比如电网应用软件 (PAS) 主机) , 无需新增硬件投资;AVC系统使用EMS提供的人机界面, 已有的EMS工作站都可以根据一定权限浏览和使用AVC功能;采用与EMS风格一致的人机界面, 符合用户使用习惯;维护界面一体化, 极大地减少了维护的难度和工作量;AVC系统使用EMS提供的API来完成历史数据存储, 不需要额外的历史数据服务器、商用数据库软件、磁盘阵列等硬件、软件设备。

从开发角度考虑, 对每一个新的工程项目, AVC系统主体框架和核心程序不需要改动, 只需要重新实现接口模块即可, 减少了程序代码的开发量, 并且各程序版本具有向下兼容性, 减少了程序版本的维护工作。

4结语

本文提出了“即插即用”的嵌入式系统框架和实现方法, 并根据该设计框架研究并实现了嵌入式AVC主站系统, 将EMS的平台优势与AVC系统的控制算法优势相结合, 提高了AVC系统的实用化水平。随着未来控制中心功能的不断扩展和用户需求的不断增加, 嵌入式的软件系统在控制中心调度自动化领域有着广阔的应用前景。

参考文献

[1]IEC61970Energy management system application program interface (EMS-API) :PartⅠCCAPI guidelines preli minary draft.1999.

[2]孙宏斌, 吴文传, 张伯明, 等.IEC61970标准的扩展在调度控制中心集成化中的应用.电网技术, 2003, 29 (16) :21-25.SUN Hongbin, WU Wenchuan, ZHANG Boming, et al.Application of extension of IEC61970standardin control center integration.Power System Technology, 2003, 29 (16) :21-25.

[3]GAMMA E, HELM R, JOHNSON R, et al.Design patterns:elements of reusable object-oriented software.New York, NY, USA:Pearson Education, 2002.

[4]孙宏斌, 张伯明, 郭庆来, 等.基于软分区的全局电压优化控制系统设计.电力系统自动化, 2003, 27 (8) :16-20.SUN Hongbin, ZHANG Boming, GUO Qinglai, et al.Design for global opti mal voltage control system based on soft identification of secondary control zones.Automation of Electric Power Systems, 2003, 27 (8) :16-20.

[5]张伯明.现代能量控制中心概念的扩展与前景展望.电力系统自动化, 2003, 27 (15) :1-6.ZHANG Boming.Concept extension and prospects for modern energy control centers.Automation of Electric Power Systems, 2003, 27 (15) :1-6.

[6]郭庆来, 孙宏斌, 张伯明, 等.江苏电网AVC主站系统的研究和实现.电力系统自动化, 2004, 28 (22) :83-87.GUO Qinglai, SUN Hongbin, ZHANG Boming, et al.Research and development of AVC systemfor power networks of Jiangsu province.Automation of Electric Power Systems, 2004, 28 (22) :83-87.

[7]郭庆来, 王蓓, 宁文元, 等.华北电网自动电压控制与静态电压稳定预警系统应用.电力系统自动化, 2008, 32 (5) :95-98.GUO Qinglai, WANG Bei, NI NG Wenyuan, et al.Applications of automatic voltage control systemin North China power grid.Automation of Electric Power Systems, 2008, 32 (5) :95-98.

[8]丁晓群, 黄伟, 章文俊, 等.基于电压控制区的主导节点电压校正方法.电网技术, 2004, 28 (14) :44-48.DI NG Xiaoqun, HUANG Wei, ZHANG Wenjun, et al.Apilot bus voltage correction method based on voltage control area.Power System Technology, 2004, 28 (14) :44-48.

[9]李端超, 陈实, 吴迪, 等.安徽电网自动电压控制 (AVC) 系统设计及实现.电力系统自动化, 2004, 28 (8) :20-22.LI Duanchao, CHEN Shi, WU Di, et al.Design and i mplementation of AVC system for power networks of Anhui province.Automation of Electric Power Systems, 2004, 28 (8) :20-22.

[10]吴文传, 张伯明, 徐春晖.调度自动化系统实时数据库模型的研究与实现.电网技术, 2001, 25 (9) :28-32.WU Wenchuan, ZHANG Boming, XU Chunhui.Study and i mplementation of real-ti me database management system (RTDBMS) model applied in EMS.Power System Technology, 2001, 25 (9) :28-32.

嵌入式软件系统 篇2

摘要:嵌入式实时多任务操作系统在软件编程上有一定的相似性。这种相似的特性,使得我们可以将个别系统的编程经验推广到更多的系统上。本文就μC/OS-II内核的任务管理和内存管理进行基本的介绍,并介绍一个通用的应用软件结构。然后,与之相对应,提供两个不同操作系统下的应用实例。

关键词:嵌入式系统 多任务 编程

引言

嵌入式系统的面向应用特性,使得大多数程序员沉陷于不同的应用中。在进入新的一轮开发后,往往只有一些简单的经验可供参考。为了加快应用的开发进度,有必要研究一种统一的应用软件结构,使开发人员能够通过简单模式套用,简化大量系统研究方面的工作,以加快嵌入式开发人员对新系统的理解和使用。

操作系统μC/OS-II和ECOS(Embedded Configurable OS)是我在研发过程中使用过的两个系统。这两个源码公开的系统是我们研究的基础。开发平台依次是PC机和EP7212开发板。

1μC/OS-II内核

对于一个嵌入式系统内核,我们最关心的是:任务调度、内存管理及时间特性等。这里,只介绍与多任务编程联系最多的任务调度和内存管理。

1.1 任务调度

任务的状态有休眠、就绪及运行几种。任务调度就是遵循一定的.原则,使多个任务共同使用同一处理机的过程。这一过程主要是通过对任务控制块(TCB)的管理来实现的。

当一个任务建立时,μC/OS-II系统为其所对应的OS_TCB赋值;当任务的CPU使用权被剥夺时,系统用OS_TCB来保存该任务的状态;当任务重新得到CPU使用权时,系统就可通过任务控制埠来使任务从被中断处继续执行下去。

在μC/OS-II中,TCB内包含如下基本项:

*OSTCBStkPtr是一个指向当前任务栈顶的指针,通过允许每个任务拥有自己的栈来减小系统的内存开销;

*OSTCBNextOSTCBPrev用于任务控制块的双重链接;

*OSTCBDly用于任务延时或超时限制;

*OSTCBStat任务的状态字,0表示就绪态;

*OSTCBPrio任务的优先级,值越小,优先级越高。

在μC/OS-II中,还有两个与任务调度相关的结构就绪表和估级判定表。就绪表中有两个变量用来存放每个任务的就绪标志。通过分组与优先级表中的项实现一一对应,进而确定进入就绪态的优先级最高的任务。

任务调度算法原型:

*关中断;

*取优先级最高的就绪任务;

*若不是当前任务,则进行任务切换;

*开中断。

任务切换中两步完成:将被挂起的任务的微处理器寄存器堆入栈,然后,将较高优先级的任务的寄存器值从栈中恢复到寄存器中。

1.2 内存管理

在嵌入式系统中,为了更高效地使用内存,除了常规的malloc和free外,通常提供不同的内存组织形式,以满足特殊应用的需求。ΜC/OS-II中,操作系统把连续的大块内存按分区来管理,每个分区中包含整数大小相同的内存块。利用这种机制,μC/OS-II对malloc()和free()进行改造,使得它们可分配和释放固定大小的内存块,并且使这两个函数的执行时间也固定下来。

为了使用户能得到需大小的内存块,在一个系统中可以多个内存分区,应用程序可以从不同的内存分区中取得不同大小的内存块。唯一要注意的是,不同的内存块在释放时必须重新放回它以前所属的内存分区。采用上述的内存管理算法,解决了内存碎片的问题。

为了跟踪每一个内存分区,μC/OS-II使用了内存控制块的数据结构,主要有:

OSMemAddr―指向内存分区起始地址的指针;

OSMemFreeList―指向下一个空闲控制块或下一个空闲内存块的指针;

OSMemBlkSize―内存分区中内存块的大小,是用户建立该内存分区时指定的;

OSMemB1ks―内存分区中总的内存块数量,是用户建立该内存分区时指定的;

OSMemNFree―内存分区中当前可以得到的空闲内存块数量。

在μC/OS-II中,也可以使用常规的malloc()和free()内存管理函数来增强其可移植性,但在使用更严格的场合,应使用系统提供的特殊的内存管理。

2 应用软件

2.1 应用软件原型

对于8051单片机系统的编程,最基本的架构是一个无限循环,应用的所有事情基本上都是在这个超循环中实现的。在这种系统中,系统上只有一个任务在运行,应用就是整个系统,而整个系统就是一个应用。

与这种简单系统相似,超循环结构在复杂的实时操作系统μC/OS-II中也是一个基本结构;但不再是系统级的,而只是任务级的。图1为超循环的结构示意。

(本网网收集整理)

在一个应用中,至少有一个这样的任务,它包含这样一个超循环,以使其拥有与应用相同的生存期,并由它完成应用的全部或部分功能。图2为应用软件结构框图。

2.2 基本应用软件结构

应用软件结构存在不同性,是由应用本身决定的;但作为基本结构,则是相似甚至是相同的。因为对于不同的系统,所调用的函数是不同的。下面给出基本应用软件结构的文字描述。

①声明系统的包含文件。

②声明全局数据:任务数、任务的栈空间等。

③主函数:

*系统初始化;

*创建主任务;

*启动多任务执行。

④主任务:

*主任务初始化;

*若必要,可创立多个子任务;

*进入超循环或退出主任务。

⑤子任务:

*子任务初始化;

*进入超循环或退出子任务。

2.3 应用软件实例

(1)样例1

为了简要说明软件结构思想,我们在PC平台、Windows 98系统下,采用了Borland公司的C++命令行编译环境,说明我们的第一应用。

其中文件的主要功能,就是显示一个HelloμC/OS-II embedded world!字符串。由于其是在μC/OS-II下实现的,与原理有相通性,这里就不再更多介绍了。

(2)样例2

使用Cirrus Logic公司的开发板EP7212,运行的操作系统是RedHat公司的ECOS。本应用的主要功能是,把从串口2接收到的数据再发送回去,并且在初始化时加发一个“Hello eCos World!”字符串。

ECOS是一个比μC/OS-II更复杂的系统,其支持的软件结构更丰富,但其对我们所抽象的软件结构依然支持得很好;只是在我们应用的主函数中,已更好地将系统的初始化部分隐藏了起来。

嵌入式软件系统 篇3

关键词:嵌入式软件;开发模式与软件架构;系统安全

中图分类号:TP311 文献标识码:A 文章编号:1006-8937(2016)06-0064-01

信息社会的互联网在发展过程中面临着越来越复杂的问题,嵌入式软件在开发和架构过程中随着功能需求的加大,嵌入式软件也更加广泛地应用于各种设备上,这种广泛的应用对嵌入式软件操作和运行过程中的稳定性和安全性问题提出了更高的要求,然而受到当前技术水平的制约,在软件开发和研制的过程中还存在着较多的问题,它与其他的软件比如说桌面软件等存在着较大的差异,由于其技术还不够成熟,因此在开发和软件架构的过程仍旧是嵌入式软件需要进行解决的关键问题。

1 嵌入式软件开发开发和架构问题简述

首先,在软件的开发阶段,为了减少系统资源的过度消耗,嵌入式的软件在代码的制作过程中主要针对的是用户使用过程中的问题,其复用度比较低,这就导致了软件在实际使用过程中实现用户多项的应用要求时发生困难,这是在开发过程中必须要进行统筹的问题。

其次,嵌入式软件在具体的应用过程中通过与硬件驱动的接口进行对接操作,由于面对的对象硬件驱动等应用对象的差别比较大,在这个过程中不同的设备之间的差异需要嵌入式软件要有与之比较高的兼容性,这需要在软件的开发过程中对常见的的对接的硬件进行操作系统进行代码的编写。

在软件的使用过程中为了解决使用过程中软件本身存在的问题以及满足新的用户要求需要对软件进行升级扩展其功能,并且保证在使用过程中软件的工作效率和安全性,需要向被嵌入的操作系统进行代码的植入,这个问题降低了软件在使用过程中的效率问题,在研发过程中,这造成软件的开发周期延长和开发效率的降低。

2 开发模式和软件架构

嵌入式软件的开发模式与一般的桌面型软件的开发模式的开发过程存在着较大的差异,它首先表现在开发过程中,它首先要考虑到代码在不同接入的硬件系统的兼容性,同时需要在代码的编译过程中交叉编译,这些问题给软件的研发带来很多问题和要求,导致在软件的研发过程中,无法灵活地适应市场的变化随时发生调整。

利用多平台的研发条件以及套件式交付的方式能够最大限度上利用研发平台和实现资源的共享,有效提高产品的质量和减少研发的时间以适应市场的需求,降低研发成本,这是未来嵌入式软件研发的趋势。

在嵌入式软件的研发过程中,准备阶段包括获取开发套件和与开发环境集成,编码的阶段是一个利用终端模拟器进行反馈的系统,在这个过程中,工程师进行相关的应用程序的编写以及进行运行程序的编译,完成后进行初步的运行和调试,通过自动写入终端模拟器进行反馈,如果有缺陷则会重新进行缺陷的部分程序的重新编写。

集成调试的反馈建立在编码基础,调试正常的编码进行应用程序的归档,归档完成后进行集成的编译,并进行运行和调试,集成的编译通过编入目标系统完成试运行,并完成整个过程的试用报告,在运行过程中如果存在漏洞则会重新进入终端模拟器寻找发生漏洞的编码并进行漏洞的修复。

嵌入式软件在应用架构过程中分为三个层面:接入层、应用层和基础层。用户通常通过三种常见的方式进入软件构架实现多种功能的应用层面,电脑接入、手机接入和遥控接入进入用户的数据管理、节能优化、充值服务以及安全控制等应用层面,应用层面通过控制、采集以及通讯等手段实现对电子锁、电器、仪表等接入系统中的控制实现用户的所要求的功能。嵌入式软件系统结构图,如图1所示。

嵌入式软件的各个层面通过协调完成设备的预定功能,通过接入目标设备的接口以及各个设备之间的实现整个系统的运行。在接口层首先存在着接入的要求,这些要求是实现功能的预设。可以通过接入以及用户的功能要求进行具体的配置制定出符合特定要求的软件系统。

进行功能控制和管理的是内核层,这个层面主要进行任务的管理和分配调度,而其他的应用组件比如网络协议和数据库等可以通过存储实现复用以尽量减少软件的进行系统烧入的时间,同时用户可以根据自己的需求进行配置,这就使得软件的应用范围更加广阔。

设备的操作层中对硬件的功能进行封装,通过提供对各种操作系统的硬件功能提供统一的软件接口能够保证软件在烧入的过程中中成功移植的关键所在,这个过程实际上也是实现了硬件操作过程中代码的复用的过程。这种方式可以应用到其他的嵌入嵌入系统的开发利用中,针对不同的芯片进行对应的编码的编写并进行存放实现对不同系统中同一功能元件的代码复用。

3 嵌入式软件开发模式和架构中有关升级和升级的 效果评估

在软件的开发模式和软件架构过程中必须考虑的关键问题就是在后期用户使用过程中的软件升级问题,嵌入式的软件适用不同类型的设备,但是其自身并不存在升级的功能,因此在使用过程中出现的缺陷和漏洞系统无法进行修复,而且在使用过程中,用户会逐渐产生新的功能需求而这种需求在软件的开发和架构过程中往往是无法预期的,这就需要利用远端进行软件的升级。

目前市场上运用的方式需要在软件在开发和架构过程中就进行控制,远端接收到嵌入软件运行过程中的漏洞以及用户发送的升级要求,针对这些问题进行相关的代码的改写以及增加功能代码的写入,这个过程中主机实现了二进制的解析以及命令的下达,需要升级的软件所在的设备实现了与主机的通信并进行数据包的传送,通过数据的传送进行软件升级的准备以及进行必要的软件漏洞和缺陷地弥补等,目前主要通过多次的数据的传输来保证传输数据的完整,同时也对文件长度进行确定保证软件省局数据的准确。

4 结 语

嵌入式软件目前已经占据了较大的市场份额,但是过高的软件研发的经费阻碍了其研究发展的进程,随着市场对于嵌入式软件功能的需求的扩大以及软件质量要求的提高,这对软件的开发模式和软件架构方式的革新提出更高的要求,这要求在软件靠法过程中实现缩短产品的开发周期和成本,另外软件复用通过在计算机系统中进行控制来实现软件研发过程中的大规模应用问题,这对软件的研发成本的降低以及更好地满足用户更为复杂的功能要求具有非常重要的意义。因此,对于软件的开发模式和软件架构的问题的研究还需要进一步的投资和工程人员投入,以实现其大规模的应用。

参考文献:

[1] 吴慧婷,綦志勇.一种简单可靠的嵌入式软件升级方法[J].信息技术与 信息化,2015,(9).

嵌入式系统的未来方向:智能系统 篇4

智能系统:下一个机遇

从能够识别驾驶员的汽车, 到能够实现客流量统计的数字安全监控系统, 以及能够无缝安全地与现有企业和通信基础架构集成的智能网络, 甚至于具备社交功能的健身设备, 具有计算体验的智能设备如今已是无处不在。

英特尔中国区智能系统事业部曾明总监指出, 智能系统必须具备三大要素:互联性、安全性和可管理性。它们可以自主地连接互联网、执行本地或基于云的应用以及对所收集的数据进行分析。这意味着, 传统的嵌入式系统必须采用包括微处理器、图形处理器和硬件加速器等在内的高性能与高度可编程异构架构, 将所有这些都集成至一个系统芯片 (So C) 当中。

传统的嵌入式系统向智能系统的转变, 为整个电子行业带来了前所未有的发展机遇。据市场调查公司IDC预测, 从2011年到2016年, 全球智能系统设备的数量将从230亿台激增至460亿台, 行业总体收入将从1.3万亿美元攀升至2.3万亿美元。2016年, 智能系统设备的出货量将占所有出货电子系统设备的37.1%以上。

在这种转变过程中, 可以发现几个关键的发展趋势。第一, 传统的嵌入式系统将获得类似于PC、服务器、智能手机和平板电脑等通用系统所具备的智能性, 而智能系统在未来的发展速度将远远超过这些通用系统。第二, 这种转变将成为不可阻挡的潮流。自然友好的用户界面、安全技术和传感器技术将变得至关重要, 将确保用户在智能设备上也能够获得在PC和智能手机上一致的消费电子和计算体验。第三, 这种转变的实现有赖于大规模的跨行业协作。第四, 功能日益强大的处理器将满足智能网络不断增长的需求, 能够同时满足物理端口和虚拟机的计算需求。第五, 随着大量移动设备被连接至互联网和云中, 企业和服务提供商网络的安全性问题将日益凸显, 这将是未来向更加智能系统迁移的关键因素。

体验推动智能系统发展

各行业不断变化的用户需求, 是推动智能系统在更加广泛的领域应用的内在驱动力。以数字标牌和英特尔公司为例, 英特尔智能系统事业部数字标牌市场营销全球总监Raj Maini称, 现代智能互动数字标牌能够带给消费者沉浸式的体验、互动性, 同时保证匿名性。这些对计算能力的要求较高。英特尔在此的贡献是:AIM套件及酷睿第三代处理器。数字标牌主要应用在九大垂直行业, 40%是定制的, 鉴于数字标牌的多样性, 英特尔正和中国的厂商合作, 提供交钥匙的软硬件数字标牌方案, 使客户很快上手应用。英特尔还提出了OPS (开放式可插接规范) , 使不同的厂商播放器模块/板卡能够接入到不同规格的平板显示器上, 受到了很多面板生产商和硬件厂家的支持, 例如, 国内最大的主板厂商——深圳智微智能科技公司的副总经理刘迪科称, 已经有50家以上的电视厂家、数字标牌厂家的产品带OPS接口。

从智能标牌的出现及发展可见, 良好的用户体验, 是智能系统时代的动力之源。

参考文献

[1]王莹.2015年, 中国的数字标牌将占全球40%. (2012-7-18) .http://www.eepw.com.cn/article/134757.htm

嵌入式软件系统 篇5

嵌入式实时软件可以运用在计算机软件的预测指令执行、动态分配、缓存机制等设计中,以此来提升计算机软件系统设计的科学合理性和实时处理功能。当然,嵌入式实时软件之所以能够在计算机软件中充分发挥作用,主要是其核心嵌入式微处理器可以实时支持软件系统的多任务,且在短时间内快速中断,实现多任务操作及计算机存储区保护。嵌入式实时软件应用到计算机软件设计中,包括软件部分和硬件部分,在嵌入式微处理器的作用下,软件与硬件之间可以交互,促使计算机软件系统具有修复功能、检测功能等,从而大大提高计算机软件系统的应用性[2]。

1.2应用原理

嵌入式实时软件在计算机软件中之所以能够有效应用,主要是计算机科学技术和实时处理技术相融合,如此可以形成CORBA模型,加之嵌入式实时软件在计算机软件中可以远程调节等作用的支持,使得计算机软件设计的过程中可以合理地运用CORBA模型,进而科学、合理地规划计算机软件的个各方面,促使计算机软件充分发挥作用。

1.3嵌入式软件的技术特征

基于以上对计算机软件设计中嵌入式实时软件的概述,确定嵌入式实时软件具有以下技术特征。

1.4可靠性

相对于计算机操作系统来说,嵌入式实时软件是一种操作方式,在计算机软件系统中科学、合理地设计嵌入式实时软件,可以提高计算机软件系统的可靠性。因为计算机软件系统中的嵌入式实时软件可以结合计算机软件系统的实际情况,对系统操作任务进行合理分配与调整,并且有效地强化计算机软件系统,如此可以使计算机软件系统在规定的时间内完成各项任务[3]。

1.5系统可靠性

只有安全的工作环境,嵌入式实时软件系统在计算机运行的过程中,才能保证计算机软件系统安全、可靠;反之,将会影响嵌入式实施软件系统的工作效果。所以,为了保证嵌入式实时软件系统在计算机运行中充分发挥作用,一定要设置安全的、良好的外界环境。

1.6时限性

ARM嵌入式系统分析 篇6

关键词:ARM嵌入式系统;体系结构,RISC;运行模式

中图分类号:TP368.1文献标识码:A文章编号:1007-9599 (2011) 16-0000-01

ARM Embedded Systems Analysis

Jiang Rongping

(Henan Zhoukou Normal University,Zhoukou466000,China)

Abstract:The embedded system is the core of embedded processors,ARM processors is widely recognized as the industry's leading 32-bit embedded RISC microprocessor.ARM core-based chips with low power consumption,high performance,widely used in embedded products.Starting from the ARM architecture,this paper,by contrast detailed structural features of the system of the RISC and ARM processor operation mode,thereby ARM embedded system into an in-depth analysis.

Keywords:ARM embedded system;Architecture;RISC;Operation mode

一、嵌入式系统定义

嵌入式系统是相对于通用计算机系统而言的,它简称为嵌入式计算机系统。目前在国内学术界,专家普遍接受的定义是:“嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁减,满足应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。”它属于计算机系统的一个重要分支,它是将先进的计算机技术、半导体技术和电子技术与各行业的具体应用相结合的产物。它可以实现对其他设备的控制,监视或者管理等功能。

二、ARM体系结构

ARM(Advanced RISC Machines)体系结构目前被公认为是业界领先的32位嵌入式RISC微处理器结构。作为典型的32位RISC架构处理器,ARM微处理器被广泛用于工控设备、智能仪表、网络设备、信息家电、通信设备以及均是电子等领域。

嵌入式系统中CPU往往都是RISC(reduced instruction set computer)结构的。所谓RISC是指“精简指令集计算机”,也称“简约指令集”,与之相对应的CPU系统结构就是CISC,即传统的“复杂指令集”相对应的概念与系统结构。

在CISC计算机中,各种指令的使用率相当悬殊:总指令的20%的简单指令却在程序调用中指令数占到了80%,而占总指令数80%的复杂的指令却只有20%的机会被使用到。而复杂的指令系统必然带来结构的复杂性,这不但增加了设计的时间成本还容易造成设计失误。尽管VLSI技术现在已经到达很高的水平,但是也很难把CISC的全部硬件做在一个芯片上,这增加了微处理器集成电路的成本。此外,为了提高运行的速度,在微处理器中采用了“预取指令”等“流水线操作”技术。但是为了照顾这些不是很经常要使用的复杂指令只好降低了简单指令的运行速度。因而针对这些缺点,精简指令集计算机,即RISC的概念与技术便应运而生。

RISC体系结构的基本思路是抓住了CISC指令系统指令繁多,指令格式不规范、寻址方式复杂的缺点,通过了减少指令种类,规范指令格式和简化寻址方式,以方便处理内部的并行处理,提高VLSI器件的使用效率,从而大幅度的提高处理器的性能。RISC设计的基本目的在于使计算机结构更加简单、更加合理、更加有效。正是因为如此,RISC的提出引起了计算机体系架构的一次影響深远的革命。

三、RISC系统结构特点

(一)RISC系统结构中的指令系统都比较小、即不同指令的数量比较小,并且只提供简单的指令。这些指令的执行都能在四、五个时钟周期中完成。所谓“简约指令集”,一方面指的是指令集比较小,另一方面是说每条指令复杂程度,两个条件缺一不可。

(二)当指令要访问主存储器的信息的时候,机器的执行速度将会降低。RISC的Load/Store指令只有在访问内存的时候才使用,所有的其他的指令都是在寄存器内对数据进行运算。

(三)不光指令的执行长度和寻址方式整齐划一,连指令的格式也很整齐划一,一般在32位的RSIC系统中,每条指令的长度都是32位。这有力于简化指令系统,简化了寻址方式,缩短了译码时间,确保了单周期执行指令,也有利于流水线操作的执行。

(四)RISC微处理器由于指令的操作数都必须事先存在寄存器中,计算的中间过程不需要访问内存,而是存在寄存器中。所以RISC系统结构一般都拥有比较多的寄存器,通常是32个寄存器。

四、ARM处理器简述

ARM处理器核当前主要产品系列:ARM7、ARM9、ARM9E、ARM10E、SecurCore以及ARMll系列,另外还有公司的XScale微体系结构和StrongARM产品。其中ARM7是低功耗的32位核,最适合应用于对价位和功耗敏感的产品,它又分为应用于实时环境的ARM7TDMI、ARM7TDMI-S,以及适用于开发平台的ARM72OT和适用于DSP运算及支持Java的ARM7EJ等。

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的模式称之为非用户模式,或特权模式(Privi1eged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Excption Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

在系统异常时,通常进入数据访问中止模式或者未定义指令中止模式。系统异常通常是程序错误的访问了非法地址,这时系统就会进入数据访问中止模式。当系统因为某些异常原因跑飞,飞到了非代码区取指并执行,此时系统取到的并不是合法的ARM指令,ARM检查到该类错误后就会进入未定义指令中止模式。

参考文献:

[1]刘岚.嵌入式软件开发环境中远程调试技术的研究与应用.西北工业大学,2002:20-31

[2]张静.嵌入式软件任务级调试技术研究与工具实现.电子科技大学,2003:41-45

[3]张群忠.ARM嵌入式系统调试技术研究与实现.华东师范大学.2006:32-46

嵌入式系统软件设计方法应用分析 篇7

1 嵌入式系统的发展历程

自从在上世纪七十年代最早的嵌入式系统的前身单片机问世之后, 经过无数科学研究人员的不屑努力, 各种各样的嵌入式微处理器和嵌入式微控制器相继出现, 正式标志着嵌入式系统进入了发展阶段, 也成为了时代发展的一部分。到现在, 嵌入式系统的发展已经有了将近四十年的历程, 在这四十年当中, 嵌入式系统已经陆陆续续的渗透到工程设计、科学研究、军事技术以及网络技术中, 成为人们生活所必不可少的一部分。而且, 随着科学技术以及计算机网络技术的不断发展, 对嵌入式系统的功能和运行的可靠性要求也变得越来越高, 使得嵌入式系统的设计和开发也变得越来越困难。

2 嵌入式系统软件设计流程

虽然嵌入式系统软件的整体设计流程跟通用软件的设计没有太大的区别, 但是在具体的性能要求上, 嵌入式系统软件的设计却有着更为严格的要求, 比如, 嵌入式系统软件对系统所具有的实时性能和可控性能就有着十分严格的要求, 设计精度要求也更高。总的来说, 嵌入式系统软件的设计共可以分为五个阶段。

2.1 确定驱动接口

嵌入式系统软件的设计主要都是在硬件驱动层的基础上进行设计的, 也就是说, 在嵌入式系统软件的设计过程中, 当在系统硬件上确定了驱动软件的接口之后, 软件的设计就已经开始了。在嵌入式系统软件的设计过程中, 首要任务就是确定软件驱动接口的有效性, 要能够满足硬件通过驱动接口对软件进行有效操作。

2.2 按照实时性划分软件功能模块

嵌入式系统的软件设计对实时性有着很高的要求, 因此, 在对软件进行设计的过程中, 一定要对软件设计的实时性引起足够重视。软件设计的实时性主要可以分为实时和分时两个部分, 由于这两个部分拥有不同的系统功能, 所以它们对设计也有着不同要求。因此, 针对这种特性, 在软件设计过程中, 可以根据实时性的不同将软件设计分成实时和分时两个部分, 然后分别对两个阶段进行设计。

2.3 生成软件代码

软件代码生成是嵌入式系统软件设计的重要阶段之一, 是根据各个模块的不同功能要求编写具体的代码, 然后通过对功能分析和总结, 确定所编写代码, 最终生成软件代码。

2.4 软件功能集成测试

在根据软件不同功能模块的不同要求编写并生成软件代码实现模块功能之后, 还要对软件中所有的功能模块进行集成测试, 在测试过程中, 仔细观察软件功能集成运行中单个功能模块所存在的问题以及各个模块之间的衔接运行问题, 如果发现问题, 第一时间对有问题的模块进行更改, 更改之后继续运行, 再次检查问题。如此反复, 直到确定整个软件的运行不存在任何问题为止。

2.5 代码固化

在完成以上所有阶段的设计之后, 就要进行最后的代码固化处理。在确定代码和功能集成运行都没有什么问题之后, 将所有的代码移植到目标机上进行固化处理和运行调试。在代码固化和调试之后, 还要让软件脱离调试环境进行试运行。

3 嵌入式系统软件设计方法应用

3.1 对软件的实时性进行设计

跟通用软件设计相比, 嵌入式系统软件设计对系统的实时性具有很高的要求, 只有保证嵌入式系统的实时性, 让系统能够在规定时间内对激励做出反应, 才能够保证嵌入式系统的正常运行。因此, 在软件设计过程中, 一定要按照实时性的不同, 将软件功能分为实时和分时两个部分对软件的实时性能进行严格、合理设计, 保证嵌入式系统软件的实时性能。

3.2 对软件的可靠性进行设计

为了能够有效保证嵌入式系统运行的可靠性, 在对软件进行设计过程中, 还需要对软件的可靠性进行合理设计。在对软件进行设计的过程中, 一定要在充分考虑嵌入式系统运行特点的基础上, 仔细编写功能模块的代码, 尽可能避免错误的出现。同时, 在编写完功能模块的执行代码之后, 一定要立即对其进行试运行, 如果发现问题, 及时进行解决, 以避免集成功能后对系统的运行的可靠性造成影响。

3.3 对软件的可拓展性进行设计

当前, 网络技术和移动网络技术更新换代的极为快速, 对嵌入式系统先进性的要求也比较高, 否则, 如果嵌入式系统跟不上网络技术的发展脚步, 最终就会被淘汰。因此, 在对嵌入式系统软件进行设计的过程中, 一定要对软件的可拓展性进行设计, 最起码, 软件的可拓展性要满足三年到五年之内的发展需求。一旦嵌入式系统软件需要进行升级和更新, 只需要插入新的功能模块或者是简单的对代码进行更改就可以完成, 不必要对原有的软件造成损坏。

3.4 混合编程, 提高软件的执行力

混合编程指的是在软件编程过程中, 同时利用汇编语言和高级语言进行编程, 这也是当前编程发展的一种主要趋势。在编程过程中, 针对不同的编程要求选择不同的编程语言, 比如, 对一些执行能力要求比较高或者是实时性要求比较高的程序的编程, 应该选择严谨性比较好的汇编语言进行编写, 而对于一些对逻辑性要求比较强的程序的编程, 可以选择利用具有一定智能性的高级语言进行编写。如此以来, 就可以同时提高软件的执行力和分析能力, 提高嵌入式系统的智能型。

4 结束语

嵌入式系统已经成为人们生活的重要组成部分之一, 因此, 在日常工作当中, 一定要对嵌入式系统的设计和开发引起足够重视。而在嵌入式系统中, 软件占据着极为重要的组成部分, 也是系统设计、开发的重点、难点, 所以, 在软件设计过程中, 一定要从软件的实时性、可靠性以及可拓展性等方面进行综合考虑, 对软件进行合理设计。

参考文献

[1]吕骏.嵌入式系统设计[M].北京:电子工业出版社, 2012.

[2]郑泽胜.嵌入式系统以及实时软件开发[J].电子科技, 2010 (01) .

嵌入式软件中断系统的测试研究 篇8

1 静态测试技术

软件静态测试技术主要包括代码审查和静态分析。不同的芯片中断代码的设计也存在一定的差异,且中断处理代码存在的问题可能根据具体应用的不同而存在,因此静态分析工具一般不具备对中断代码存在问题的详细分析。因此对中断程序的静态测试技术主要还是采用代码审查方法进行。代码审查的要点主要包括以下几类。

1)中断资源冲突检查

中断资源使用冲突是中断使用中最有可能发生的问题。中断资源冲突检测主要对中断中使用的公共资源进行分析,包括全局变量、寄存器、缓存区域、标识等。检查的第一步是筛选出中断与主程序、中断与中断中均使用的公共资源。第二步是对这些资源的读写情况进行分析,每个资源在程序中的使用存在三种情况:只读、只写和读写,这三种情况在主程序、中断处理程序中都可能存在。通常,一个资源在中断和主程序或不同中断中均为只读,或者主程序只在中断未使能状态下对资源进行访问时,一般不存在冲突。而在主循环和中断中,或不同中断中进行了修改的资源则一般需要仔细分析冲突的可能。图1则描述了一个中断资源冲突案例。

图1 中中断程序用于接收数据,接收完成之后置接收标志。主程序用于处理接收到的数据,处理完毕后清接收标志。接收第一帧数据接收完成后,主程序开始处理数据,如果在处理过程中又接收一帧新数据,则该数据会丢失不被处理。对共用资源进行冲突检测通常还需结合软件时序进行分析。

2)中断现场备份和恢复

中断处理程序执行会打断主程序,且主程序中发生中断的位置一般不固定,为了保护被打断的主程序现场,需要在中断程序开始处对主程序现场进行备份,并在出口处进行恢复。对中断程序进行代码审查时需要检查需要备份的资源是否都进行了备份。这些资源通常包含程序状态寄存器、与主程序共用的寄存器以及一些全局变量。中断处理程序在入口处会对这些资源进行压栈操作,而在出口则进行出栈操作。代码审查需要检查需要被保护的资源是否已经全部被保护,各资源入栈和出栈的顺序是否匹配。

3)中断优先级

各种不同的芯片对中断优先级的处理是不一样的,例如8051 芯片只能设置高、低两种级别的中断;TI的F2812 芯片则各中断源的中断优先级固定的;而ARM芯片的中断优先级则是可编程的。且有些芯片的中断是可嵌套的,有些芯片则不能嵌套。对中断程序的代码审查应考虑到各芯片的具体特点,例如对不可嵌套的中断,则需考虑高优先级中断被延迟的问题,即如果在低优先级中断执行时,高优先级中断到来,则高优先级中断被延迟执行,该延时是否满足设计的要求。而对于可嵌套的中断,则需要考虑低优先级的中断被高优先级打断后,共用的中断资源是否存在冲突。对于中断优先级可编程的芯片,代码审查时还需检查中断优先级的设置是否正确,低优先级的中断被延迟或打断后,是否满足设计的要求。

以上是对中断程序进行代码审查时,需重点检查的要点。当然代码审查还应根据具体应该包括其他一些方面,例如对有些安全性要求比较高的软件则要求对未使用的中断应设置跳转到陷进程序,以防止软件异常进入未使用中断时,能够进行复位防止跑飞。还有一些芯片的编译器会对内存访问进行优化处理,则中断和主程序的共用资源则需声明为volatile类型,使芯片每次从内存取数,防止内存和寄存器数据不一致引发问题。在对中断程序进行代码审查时,如果注意到以上几点,能够有效地减少代码中存在的问题,提高软件的质量。

2 动态测试技术

对中断程序的动态测试主要包括测试中断程序的响应时间和处理时间。中断响应时间是从触发中断到中断程序开始执行之间的时间,中断处理时间则是从中断开始处到结束处的执行时间。对于响应时间和处理时间的测试,主要是测试时间是否满足软件需求的要求。

软件只存在一个中断,或存在多个中断,但不会同时发生时,一般响应时间和处理时间可直接测试;当软件存在多个可同时执行的中断时,则很难直接得到中断的响应时间和处理时间。存在以下几种情况:

1)两个中断同时到来,则程序会先执行高优先级,则低优先级中断被延迟执行,因此其响应时间则应包括高优先级中断的处理时间;

2)程序执行一个中断时,另一个中断触发,但该芯片不支持嵌套执行,则第二个中断响应时间包括第一个中断的部分执行时间;

3)程序执行低优先级中断时,发生高优先级中断,且该芯片支持中断嵌套,则低优先级的处理时间应包括高优先级中断的执行时间。

测试人员一般需要得到中断最长的响应时间和处理时间,上述情况在动态测试时不一定能够测量到,因此测试人员可先测量每个中断单独发生时的响应时间和处理时间,再根据芯片特点和程序中断执行时序计算理论上的最长响应时间和处理时间。

动态测试时,还需考虑中断处理时间对主循环处理时间的影响。例如,一个程序,存在两个中断,每个中断的处理时间均为200ms,程序主循环要求500毫秒内执行完毕,不发生中断时主循环的处理时间为200ms。当在一次主循环执行过程中,只发生一个中断时,程序主循环执行时间满足要求,但如果两个中断均发生,则执行时间为600ms,不满足处理要求。尽管该事件可能很少发生,但程序仍存在潜在问题。

3 结束语

本文从静态和动态两方面总结了嵌入式软件中断测试技术,这些技术在实际的嵌入式软件测试工作中的应用可有效减少中断程序的错误。嵌入式芯片类型多种多样,应用场景也各不相同,因此这些技术在实际测试工作中也需要灵活使用。

摘要:由中断引发的软件故障往往具有隐蔽性和随机性,因此嵌入式软件中断系统测试是嵌入式软件测试中的难点。该文对中断测试技术进行了研究,从静态和动态测试两方面总结了测试需关注的重点,通过使用文中的测试方法,发现中断系统中一些常见的问题。

始之系统应用,终之嵌入式软件 篇9

大家知道苹果公司没有芯片技术, 但是iPhone手机无疑是优秀的创意和设计, 除了ID/MD (界面设计/机械设计) 的创意外, 更重要的来自于其嵌入式软件设计。国内历来重硬轻软, 芯片产业的投资模式和商业价值已经形成, 但是嵌入式软件企业还在狭缝中生存, 高成本的软件劳动的价值很难附加在芯片或系统上。同时, 因为没有成熟的系统规划和软件支撑, 不以应用为导向以嵌入式软件为支撑的系统芯片厂商, 正在遭遇投资流失和企业倒闭的风险。

以深圳爱国者移动数字电视和移动数字多媒体终端开发过程为例, 这是一个典型的嵌入式软件为核心的产品。产品是ARM11和ARM+DSP的多媒体应用处理器和嵌入式Linux OS兼容的多媒体平台, 配合多媒体IP、CMMB移动数字电视、GPS、Wi-Fi等模块和各种应用软件, 以实现多种移动多媒体应用业务。嵌入式操作系统在移动数字电视终端这样的嵌入式系统地位和作用就像开发商建筑楼房一样, 标准化建筑设计和施工已经非常完善, 多数开发商是在这些组件基础上再创新和发挥, 在嵌入式操作系统基础上开发应用软件和嵌入式系统是目前和未来嵌入式系统开发的必由之路。

以移动数字电视和多媒体终端为代表的数码产品的组成是硬件+软件+外观, 价值是功能+性能+外观, 数码产品的核心价值是芯片+嵌入式软件+应用和外观创意。但是今天的问题是芯片有价、硬件有价, 但是软件无价!国内的山寨机就是没有计入嵌入式软件技术成本的典型, 最终, 也必然受到没有考虑技术成本的惩罚, 造成了今天大家看到的iPhone等为代表的高端品牌机和山寨机这样冰火两重天的现象。

针对移动数字电视和多媒体终端的嵌入式软件核心技术主要体现在下面三个方面:第一, 嵌入式多媒体操作系统移植、构建和优化;第二, 支持多种协议和标准的多媒体IP技术的实现和优化;第三, 多媒体应用软件的开发和集成, 包括人机界面 (UI) 、整个系统软件和应用软件的容错、可靠性和稳定性的实现。

国内手机产业的现状再次验证了我们忽视了嵌入式软件的后果。世界六大手机制造商占领了世界70%的市场份额, 中国虽然是世界手机的主要生产和加工地, 我们虽然拥有价格和制造的优势, 但是我们无法成为中国和世界手机的主流, 原因就是因为我们没有在手机芯片和手机嵌入式软件这两大核心技术上长期积累和建设。山寨机以功能和低价取胜的一时优势很难造就中国手机行业长久和真正的辉煌。

嵌入式软件系统 篇10

近年来计算机在各行各业的应用迅速发展,各种应用系统软件趋于全面、成熟和完善。但随着计算机技术的迅猛发展,新的软、硬件产品不断面世,对于应用系统的相对稳定和计算机应用平台的不断提高,实际中要求原来的应用系统要在新的环境下运行,这就使得应用系统的移植工作显得愈来愈重要。

在嵌入式系统领域,软件移植的情况很多,主要是基于基于嵌入式处理器的原因和基于操作系统的原因[1]。在嵌入式系统领域,由于硬件的更新换代和软件技术的不断发展,经常需要将遗留系统进行软件移植以适应新的软硬件平台。嵌入式系统的软件移植分为裸机系统的嵌入式系统软件移植,基于嵌入式操作系统的应用软件移植和裸机软件移植到嵌入式操作系统上3种情况。

1 软件移植问题和方法

裸机系统,即没有操作系统支持的软件系统[1]。裸机系统在嵌入式微处理器发生变化时,软件需要在新的体系结构不同的嵌入式处理器硬件平台上运行,这时就只能进行软件移植。将没有操作系统的嵌入式系统运行在新的嵌入式处理器硬件平台上,如果软件的设计采用汇编语言,那么移植就等于重新开发,而且难度往往高于新系统开发。当然,如果软件主要由C语言开发,是可以考虑软件移植问题的。下面将从几个角度来分析软件移植问题。

1.1 程序理解

程序理解包括在各种抽象层析上,建立基本软件的思维模型,抽象的层次从代码的模型到基本应用领域的模型各有不同。程序理解技术可以包含代码结构、功能和架构3个抽象层次[2]。

代码结构表示包括源代码和制品,例如通过解析和例程分析活动所获得的抽象语法树和流程图。要恢复一个系统架构,首先要理解源代码和其他现有制品。在这个过程中,可以应用很多活动,如手工代码阅读,通过逆向工程工具解析源代码,产生各种报表,包括调用图,数据和控制流、结构图、交叉引用信息,以及数据类型和变量实例的定义和使用。功能层表示即为描述程序函数、数据和文件的关系,通过理解得出程序的功能模块划分和模块间调用关系。架构层表示更加抽象,把函数层和代码层装配成相关组件或者概念的子系统。

1.2 开发工具

嵌入式软件开发工具包括编译器、汇编器、链接器和调试器。嵌入式开发工具运行在一个与目标硬件平台不同的主机上,对于裸机系统,用户必须提供自己的硬件平台知识给这些工具,这样才能生成在具体硬件平台上运行的二进制映像文件。

嵌入式软件开发工具往往因开发厂商、支持语言标准和工具版本而出现很大差异,这些差别主要体现在如下几个方面。

1.2.1 数据长度

标准C语言的数据类型是不可移植的,如int类型,在不同编译器中长度不同。在移植的过程中,为了兼容性,要正对编译器改写数据类型以保持程序的数据宽度与原系统相同。为了程序有个很好的移植性,应尽量使用可移植的数据类型,或者自定义数据类型。例如自定义数据类型:

typedef unsigned char UINT8;

typedef unsigned char BOOLEAN;

typedef unsigned char UINT8;

typedef signed char INT8;

typedef unsigned short UINT16;

typedef signed short INT16;

typedef unsigned int UINT32;

typedef signed int INT32;

typedef float FP32;

typedef double FP64;

如果使用较新C99编译器,则可以使用C99标准建立的一套有符号和无符号的定长整型数据类型,这些定义包括在新的头文件stdint.h中。最新定义的类型名字是:

8位 int8_t,uint8_t

16位 int16_t,uint16_t

32位 int32_t,uint32_t

64位 int64_t,uint64_t

1.2.2 变量的作用域和类型转换

不同的编译器对变量作用域的表现可能出现差异,编译的过程中有可能出现重复定义错误,对于这种错误,可通过加条件分支予以解决;不同的编译器对类型转换的表现也会可能存在差异。对于较老的编译器,不匹配类型转换可能会提示警告信息,而新的编译器可能会出现编译错误。对于编译时出现的类型不匹配错误,可强制加上类型转换予以解决。

1.2.3 关键字和内建函数

嵌入式软件有时会使用特定编译器定义的过时或者非标准的关键字,例如far关键字,是C/C++语言在16位系统中用以标明指针是个远指针的修饰符,在32位系统中已经废止不用了;interrupt关键字,是CL编译器用于声明中断服务子程序的,而RealView编译器使用的是_irq关键字。

内建函数是与编译器相关,作用应该跟关键字一样的函数,所以内建函数也会有移植问题。例如CL编译器的中断使能内建函数_enable、中断禁止内建函数_disable,而RealView编译器对应的内建函数为_enable_irq和_disable_irq。如果显式申明的函数与内建函数同名,内建函数将会被覆盖。所以,当原系统使用的内建函数在新的编译器中不存在时,可以声明定义与内建函数同名的函数,实现内建函数功能。

1.2.4 汇编指令

汇编指令是汇编语言中使用的一些操作符(如MOV,INC,LOOP)和助记符,还包括一些伪指令(如assume,end)。不同架构的CPU汇编指令会用很大差异,即使是针对相同架构CPU不同的汇编器,对汇编代码的处理也是不同的。所以,对于系统中使用汇编程序的地方,需要在理解的基础上针对新的硬件平台和编译器重新实现。实现的过程中,除了启动代码,尽量使用高级语言,以提高可移植性和可维护性。

1.2.5 链接器脚本

用于执行从可重定位程序到可执行的二进制映像转换的工具称作为定位器[3]。在一些情况下,定位器作为链接器的一部分。定位器所需要的内存信息一般以链接器脚本的形式传递给它。这样的脚本用于控制重定位程序中的代码和数据段的准确顺序,以及每部分的物理地址信息。通常链接器也提供附加命令选项来指示链接器去执行定位操作。

由于不同的开发工具的链接器脚本的语法和格式不尽相同,对于软件移植来说,通常需要参考工具文档或者实例重新编写链接器脚本文件。

1.2.6 依赖库

使用C/C++语言编写的嵌入式软件,会依赖标准程序库,也会可能依赖第三方程序库。编译器会配套提供标准程序库,但也可能提供比较实用的非标准程序库。如果程序使用了非标准程序库,在移植的过程中,需要替换或重新实现这类函数调用。由于使用标准库时最终生成的映像文件会比较大,对于存储有限的嵌入式系统,可以自己实现用到的标准函数,这样链接器会自动链接用户自己实现的标准函数。

1.3 CPU架构

CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。主流的CPU架构有X86架构、ARM架构(ARM架构有细分V4、V5等多个指令体系,不同体系在架构上也是不同的)、PowerPC架构、MIPS架构和SPARC架构等。不同CPU架构的差异对软件移植的影响主要体现在中断系统、I/O空间映射和字节序问题三个方面。

1.3.1 中断系统

中断是指CPU中止正在执行的程序,转去执行请求CPU为之服务的内、外部事件的服务程序,待该服务程序执行完成后,又返回到被中止的程序继续运行的过程[4]。不同CPU架构,中断处理的基本过程是一样的:申请中断,中断判优,中断响应,中断处理及中断返回。但由于中断系统硬件设计上的差异,中断实现细节上有很大区别。

1.3.1.1 异常类型差异

不同CPU架构所支持的异常类型不同,例如X86系统的异常类型按中断源分类可分为内部中断(软件中断)和外部中断(硬件中断),其中内部中断有除法出错、溢出中断、INT n指令中断、单步中断、断点中断,外部中断分为可屏蔽中断INTR和非屏蔽中断NMI;ARM体系结构所支持的异常类型与X86系统有很大不同,支持7种异常类型的异常处理:复位、未定义指令、软件中断、指令预取中止、数据中止、外部中断和快速中断。

1.3.1.2 中断向量表差异

不同CPU架构的中断向量表也可能存在差异,例如X86中断向量表中存放的是ISR中断服务程序的地址CS:IP,中断响应时会根据中断类型号把相应的CS:IP加载到CPU中,实现跳转到ISR中断服务程序中;ARM中断向量表中存放的是一条跳转指令,实现跳转到ISR中断服务程序中。X86前1Kb用作中断向量表,每个中断占用4B用于存放CS:IP,因此可存放256个中断;每个外部中断的中断向量终端类型号未固定,可通过初始化8259进行设置;ARM中断向量已经固定,只存放了7个异常中断和1个保留向量,具体硬件的中断向量都是保存在中断控制器的某个寄存器中。当硬件产生中断时,CPU查询中断控制器完成中断服务跳转。

1.3.1.3 中断处理过程

中断处理过程大致分为两个阶段,体系统一的处理过程和体系独立的处理过程[5]。所谓体系统一的处理过程指的是同一系列芯片的中断处理方法是一致的,而体系独立的处理过程则是指不同款芯片的处理方法完全不同。

体系统一的处理过程又可分为硬件控制部分和软件控制部分。当一种异常发生时,硬件自动执行的动作即为硬件控制部分,如ARM处理器在异常发生时执行的返回地址、标志位的保存,模式的切换,PC的跳转等操作。完成硬件控制部分后,就进入了软件控制部分,这部分工作全权交给了程序员。软件控制部分主要是中断进入时的保护现场和中断离开时的恢复现场操作。

体系独立的处理过程主要包括设备寄存器和中断控制器的操作,如清除设备寄存器相关位以避免中断重复触发,读设备状态寄存器判断中断请求原因,写中断控制器回复中断应答信号。

由于不同架构CPU在异常类型、中断向量表以及中断处理的体系统一处理过程中的软件控制部分和体系独立处理过程的差异,程序在实现中断过程时需要针对具体的CPU平台,建立、配置中断向量表,并为每个类型中断安装中断服务子程序,编写体系统一处理过程中的软件控制部分和体系独立处理过程的程序。

对于体系统一处理过程中软件控制部分的保护现场和恢复现场这部分的程序,有些编译器包含中断关键字或者一些类似的机制,标记中断服务程序使之在编译时自动添加保护现场和恢复现场的代码。带有中断关键字的实例代码如下:

interrupt void interruptServiceRoutine(void)

{

/* 检测中断原因 */

/* 应答中断 */

/* 处理中断 */

}

RealView编译器使用_irq关键字声明的函数自动添加的汇编代码示例如下:

STMFD {r0-r3,r12,lr};保护现场

……

LDMFD {r0-r3,r12,lr};恢复现场

SUBS pc, lr, #4;中断返回

有些编译器不支持类似关键字,可能会要求一个特定编译器的#pragma来声明中断服务程序。GNU编译器GCC使用第三种方法,包含特定编译器关键字_attribute_,作为可选参数,如下所示:

void interruptServiceRoutine() _attribute_((interrupt ("IRQ")));

如果编译器不支持自动添加保护现场和恢复现场代码,或者编译器自动添加的代码不能满足实际系统需要时,如一般ARM编译器自动生成中断代码不支持中断嵌套等复杂中断处理过程,则需要自定义、添加中断进入和退出汇编代码。

1.3.1.4 全局中断使能与禁用

裸机系统必然涉及全局中断使能和禁用,特别在实现数据在处理中断服务程序和主程序之间的共享,例如主函数和中断服务函数都使用了gIndex变量,实例代码如下:

int gIndex = 0;

interrupt void interruptServiceRoutine(void)

{

gIndex++;

}

int main(void)

{

while(1)

{

interruptDisable();

if(gIndex)

gIndex--;

interruptEnable();

}

}

一般处理器会有一个寄存器控制全局中断,如ARM在当前程序状态寄存器(CPSR)中有两个禁用所有中断的全局位。由于一般不能使用C语言直接访问全局中断标志,所以需要编写汇编代码来使全局中断可用或者禁用。有些编译器已经提供中断使能和禁用内建函数,直接调用即可。但是在使用时要注意使用条件,例如RealView编译器对应的内建函数_enable_irq和_disable_irq只能在非用户模式/特权模式下才有效。因为中断使能和禁用操作需要修改程序状态寄存器的控制位,而对程序状态寄存器的控制位操作只能在非用户模式下才能完成。

1.3.1.5 中断嵌套问题

中断嵌套问题的实现细节也是因不同CPU而异的。例如X86系统的定时器中断程序:

void interrupt timer()

{

//应答中断

outpw(INT_PIC_BASE,TIMER_EOI_VAL);

_enable(); //开中断

//执行时间较长的代码

//…

_disable();//关中断

}

对于使用interrupt关键字标记的函数,函数的开始和结束位置会嵌入中断进入时的保护现场代码和中断离开时的恢复现场和中断返回代码,整个函数运行在中断禁止环境下,所以如果中断函数的逻辑占用时间较长的话,会影响下一次中断请求的响应时间。所以上面timer中断函数中使用_enable和_disable函数在执行时间较长的代码之前使能中断,允许中断嵌套,待执行完后再关闭中断,这样就解决了中断嵌套问题。

对于X86处理器,在使用指令CALL进行子程序调用时或者是中断时,CPU硬件自动将返回地址或中断处地址压栈到堆栈区(由SP指向),在执行RET或IRET指令(中断返回指令),又自动地把返回地址或中断处地址弹回到程序寄存器PC中。而ARM处理器使用R14寄存器保存子程序调用和程序中断时存储程序变化处的地址。由此可见,X86处理器是通过堆栈来完成程序的链接,而ARM是通过R14来完成程序的链接。

对于ARM处理器,中断程序运行在中断模式下,寄存器R14_irq作为私有寄存器,保存着被中断处的返回地址。将它保存到堆栈当中去,目的是当中断模式发生函数调用时,该寄存器可以用开保存函数返回值。但如果此时另一个中断恰好发生,R14_irq就有要保存新的中断处理程序返回的地址,原来的返回值便会丢失,导致系统紊乱。所以,X86的中断嵌套方法必须进行响应的适应性改造才能移植到ARM平台上。改造的主要思路是将运行在中断模式下的中断服务程序切换到主程序运行所处的模式(为了能使能、禁止全局中断,主程序一般运行在SYS模式)或者是SVC模式。实例代码如下:

timer_asm_irq_handler

;保护现场

SUB lr, lr, #4

STMFD sp!, {lr}

MRS lr, SPSR

STMFD sp!, {r0,r1,lr}

;切换至SYS模式

MSR CPSR_c, #SYS_MOD:OR:I_BIT

;保存SYS模式主程序已用寄存器值

STMFD sp!, {r1-r4, r12, lr}

;跳转至中断处理代码

BL timer_c_irq_handler

;恢复SYS模式主程序已用寄存器值

LDMIA sp!, {r1-r4, r12, lr}

;切换回中断模式

MSR CPSR_c, #IRQ_MOD:OR:I_BIT

;恢复现场,返回主程序

LDMIA sp!, {r0,r1,lr}

MSR SPSR_cxsf, lr

LDMIA sp!, {pc}^

对于待移植系统平台存在而系统目标平台不存在的异常,系统目标平台可不作处理,若是程序可避免异常,可以通过增加程序校验分支代码。例如X86架构存在而ARM架构不存在的除法出错异常,在ARM程序中不需要增加这类异常的中断服务子程序,只在进行除法计算时,嵌入除数判0逻辑,除数为0则中止程序(ARM的RealView编译器会自动在除法计算指令后嵌入除数判0逻辑,不需要用户处理)。

1.3.2 I/O空间映射

外设中的寄存器(包括数据寄存器、状态寄存器和控制寄存器)被称为I/O端口,外设中的内存被称为I/O内存。二者合起来统称为I/O空间[6]。根据访问外设寄存器的不同方式,可以把 CPU分成两大类。

一类CPU(如M68K,Power PC,ARM等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以这种CPU没有专门用于设备I/O的指令。这就是所谓的“I/O内存”方式。

另一类CPU(如X86)将外设的寄存器看成一个独立的地址空间,所以访问内存的指令不能用来访问这些寄存器,而要为对外设寄存器的读写设置专用指令,如IN和OUT指令。这就是所谓的“I/O端口”方式。

运行在使用I/O端口方式的处理器平台上的软件使用IN和OUT指令实现I/O访问,对于这类代码,要移植到使用I/O内存方式的处理器平台,需要在外设内存映射完成后,替换为C语言的直接内存访问代码。

1.3.3 字节序问题

字节序是一个系统属性[3],该属性指出处理器存储内部数据的方式:小端方式和大端方式。采用大、小端方式对数据进行存放的主要区别在于存放的字节顺序,大端方式将高位字节存放在低地址,小端方式将低位字节存放在低地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。X86系列处理器都是使用小端方式。Sun的SPARC、Motorola的68K和PowerPC家族都是大端方式。一些处理器甚至在寄存器里有一个比特位,该比特位允许程序员选择期望的字节序。

单一的系统中不会涉及字节序的问题。它只有在两个计算机试图通信的情况下才涉及到。每一个处理器和通信协议必须选择一种类型的字节序。因而,如果具有不同字节序的两个处理器通过存储器设备进行通信,那么他们将会发生冲突。

为了避免字节序问题,移植的原系统和目标系统的处理器要尽量使用同一种字节序,实在无法保持一致,就只能编写程序对需要传递的数据进行模式转换。

1.4 总线和外设

总线是CPU与存储器,不同外部设备之间通信,或不同系统之间通信的机制,是数据、地址和控制信息传达的公共通道[7]。对总线的评价主要依赖3个参数:总线宽度、总线频率和总线带宽,所以移植目标平台与原平台在总线上应保持这3个参数的兼容性才符合移植条件。

由于嵌入式处理器在一个芯片上集成了多种I/O设备接口,这使得以嵌入式处理器为核心的嵌入式系统外设的接口方式主要是直接利用嵌入式处理器芯片内集成的现有接口,配合少量简单的外围接口电路实现外设的硬件接口功能;或是采用嵌入式处理器芯片的GPIO(General Purpose I/O)口,利用GPIO的可编程性,实现某种外设的接口扩展。但是对于比较复杂的嵌入式系统,需要使用嵌入式处理器芯片未集成或者利用GPIO扩展不太方便的外设接口,必须通过外部扩展总线技术利用系统总线对I/O接口进行扩展。

对于片内设备或者是片内设备接口,软件移植过程中只需要针对移植目标平台的特点替换掉外设的配置和操作函数;而对于通过外部总线扩展的片外设备或者外设板卡,由于使用到了外部扩展总线技术,需要在嵌入式处理器提供扩展总线控制器的条件基础上,配置扩展总线控制器,完成地址映射。这样嵌入式处理器才可通过地址直接访问片外设备或者外设板卡。

2 在叶式准直仪控制系统中的应用

多页准直器系统(MLC, Multileaf Collimator),也称叶式准直仪控制(LCC, Leaf Collimator Control)系统,是医用电子直线加速器的标准配置,主要用于适形放疗中,也可部分取代普通放疗的挡铅。移植项目要求更换原系统80186主板和SMP16总线以及基于SMP16总线技术的外设板卡,使用基于ARM920T内核的AT91RM9200微控制器和基于PC104总线的外设板卡实现原系统功能。将原系统的软件部分由16位80186平台迁移到32位的ARM9平台上,实现定时器、看门狗、串口以及PC104外设板卡等设备的配置、操作和中断处理,使得整个系统能够按照原系统的逻辑正常工作。

移植主要有以下几个关键过程:

a. 注释掉所有汇编或者混合编程代码,通过比较16位CL编译器和ARM的RealView编译器的区别,针对区别修改软件的数据类型、关键字、函数依赖等,使软件在RealView编译器下能顺利编译;

b. 编写启动代码,在开发板上能顺利运行并引导主程序后,对软件的中断管理、I/O访问和外设访问等关键部分进行改写、测试和运行;硬件设备相关的代码,在不改变API的前提下重新实现;

c. 对注释掉的汇编或者混合编程代码进行理解,使用C语言进行改写非硬件逻辑;

d. 移植后的软件经过配置、编译运行到最终生产环境,实施系统测试,与原系统的运行状态比较、分析,解决移植后的兼容性问题以及新硬件环境带来的新问题。

3 结束语

对于嵌入式系统移植工作的开发者来说,需要对原系统和移植目标系统的软硬件环境有个非常充分的认识,然后结合软件移植的一般问题和方法,逐步解决。移植的过程中,需要应用软件工程的思想和方法,管理工作过程,保证移植软件质量,提高软件的可移植性,自下而上,循序渐进,增量地开发、测试和部署。如果毫无章法,在出现问题时会很难快速定位,影响项目进度。

裸机嵌入式系统的软件移植问题和方法,不仅能够指导裸机软件的移植过程,而且对与嵌入式操作系统的移植工作也有一定的指导意义。但是。若要将基于裸机开发的嵌入式系统移植到操作系统环境,则需要针对操作系统带来的硬件无法直接访问限制对裸机软件进行再工程改造,分离应用和硬件逻辑。移植裸机软件到操作系统环境,有利于降低软件系统的维护成本,所以移植裸机软件到操作系统环境这一方面的研究同样具有很高的理论研究价值和应用价值。

参考文献

[1]郭荣佐,王霖.嵌入式系统原理[M].北京:北京航空航天大学出版社,2008.

[2]罗伯特.C.塞克德著,梁海华译.遗留系统的现代化改造——软件技术、工程过程和业务实践[M].北京:清华大学出版社,2003.

[3]巴尔安,马萨.嵌入式系统编程——使用C和GNU开发工具[M].O'Reilly Media,Inc,2006.

[4]陈继红,徐晨,王春明,等.微机原理及应用[M].北京:高等教育出版社,2011.

[5]李无言.一步一步写嵌入式操作系统——ARM编程的方法与实践[M].北京:电子工业出版社,2011.

[6]戴梅萼,史嘉权.微型计算机技术及应用[M].北京:清华大学出版社,2008.

嵌入式软件大有可为 篇11

9月1日,在南京召开的“2007中国软件产业发展暨企业创新高峰会”上传出信息,今年上半年全国软件产业实现销售收入2601亿元,增长23%,高于电子信息产业18%的增长水平,而其中嵌入式软件增长24%,高于软件产业的增长水平。与此同时,嵌入式软件在软件产品结构中的比重上升到21.7%,在销售收入的比重占到了37.9%,在出口软件中的比重更是高达52%。这些数据表明:“软硬融合”的嵌入式软件,已成为我国软件产业发展中的领衔者。

有关专家认为,伴随着软件产业的快速成长,有关产业发展路径的答案也越来越明晰,那就是“走软硬融合”之路。在一个IT制造大国里,“依托硬件制造推动本土企业的软硬融合”,是软件产业做大做强的一条捷径。

来自地区产业格局的数据也印证了这一点。在全国10个主要省市的软件产业发展中,制造业规模靠前的省份,软件发展规模也居前列,譬如硬件销售收入居全国第二的江苏省,软件产业规模也居第二;四川、陕西的情况也大体如此。

最经典的“软硬融合”当属“Wintel”模式——英特尔每推出一款芯片,微软就会推出相应的操作系统与之捆绑,互为推动,相得益彰。

信息时代大制造的特点之一是与以软件为核心的现代服务业相结合,结合得越紧密越有竞争力。国内企业华为与中兴,软件力量都十分强大,去年华为总收入650亿元,软件占到了298亿,达46%,这是华为在某些领域能与跨国公司抗衡的原因之一。

中国已经成为世界制造大国,在硬件领域创造了许多个“世界第一”,若论软硬融合,中国应该最有条件和话语权。但有专家认为,现在的问题是国内很多企业尚缺少这种互动意识,只知埋头做自己那一块,“软硬”老死不相往来,这也是导致中国制造业长期徘徊在全球产业价值链低端的一个原因。

信息产业部经济体制改革与经济运行司司长周子学呼吁:产业界不能把软件和硬件割裂开来。如何融合?周子学认为,一方面在企业内部要打破硬件制造与软件研发的分界,提升自己的“软能力”。硬件企业做强最好的方式就是做“软”,软件成分比重越高,竞争优势就越明显。另一方面,软、硬件企业也要加强互动与联合,“如果硬件企业目前没有软件队伍做支撑,可以委托软件企业把这块做起来”。

嵌入式软件系统 篇12

关键词:IEEE802.11g,嵌入式系统,Windows CE,eCos可配置实时操作系统

1 引 言

信息化战争已经成为现代战争中不可或缺的一部分。在信息化战争中的一个重要特点是单兵武器装备之间能实现横向的无线组网,形成信息网络系统,达成信息资源共享,从而及时洞察战场各处的作战态势。目前,各军事强国都展开了无线信息共享系统的研究,如美国的“陆地勇士”系统,英国的“FIST”计划,法国的“SC”系统等。

嵌入式系统是以应用为中心,以计算机技术为基础的专用计算机系统,其软硬件资源是可裁剪的,能够满足应用系统对功能、可靠性、成本、体积、功耗等指标的严格要求。他可以方便地集成到便携式侦察设备等武器装备之中,完成对武器设备的控制、监视或管理等功能。把嵌入式系统与无线传输相结合而诞生的嵌入式无线信息共享系统,具备了专业的数据处理能力及实时性的共享数据传输能力,将武器装备所探测到的信息和自身的状态信息及时的在我方无线节点中传输,使武器装备的战斗性能得到了大幅度的提升,增强了作战系统的协同性。

2 主流无线通信协议性能分析与比较

作为无线信息共享系统网络节点的OSI参考模型最低层的物理层和数据链路层,担负着射频调制和在无线链路上建立可靠和安全的逻辑链路的任务。其直接决定了整个无线信息共享系统的传输速率和覆盖范围,因此选择一种适于专用作战环境的无线传输协议来规范物理层和数据链路层就显得尤为重要。

目前IEEE制定的应用于无线连接的传输协议主要可以分为三类,他们分别是IEEE802.15系列协议,IEEE802.11系列协议以及IEEE802.16系列协议,按其不同的功能侧重点分别被应用于不同的领域。

IEEE802.15系列协议主要应用于近距离、低复杂度、低功耗、低数据速率、低成本的无线个人网(WPAN)。Blueteeth技术采用了IEEE802.15.1规定的物理层和数据链路层标准,Zigbee技术采用了IEEE802.15.4规定的物理层和数据链路层标准。IEEE802.15.4的物理层在3个频段上共定义了27个物理信道。在频带868 MHz,902~928 MHz和2.45 GHz上的数据率分别为20 kb/s,40 kb/s和250 kb/s。在868/915 MHz频段上的11个信道均采用BPSK调制,而2.45 GHz上的16个信道采用O-QPSK调制。其可以覆盖近距离约几十米的通信范围,目前其主要被应用作为无线传感器网络的通信标准。

IEEE802.11a/b/g/e/f系列协议具有了较高的传输速率,主要应用于无线局域网(WLAN)[1]。目前应用比较广泛的是IEEE802.11g协议,其在2.4 GHz频段上划分了11个信道,对物理层和数据链路层进行了规范,可以采用FHSS,DSSS或OFDM调制方式,使得可选择的传输速率最高可达到54 Mb/s,无线覆盖范围达到了1 km。TI,MAXIM等厂商针对该协议都生产了大量的无线接入产品。

IEEE802.16系列协议工作于2~66 GHz的频段,其调制方式包括了单载波,OFDM以及OFDMA,因而具有了更高的传输速率及覆盖范围,应用于无线城域网(WMAN)。其中IEEE802.16d和IEEE802.16e分别用于固定带宽无线接入和移动带宽无线接入,其标称的传输速率达到了70 Mb/s,覆盖范围为50 km左右。然而,其高速的编码解码速度和复杂的调制方式对硬件的要求很高,目前市面上使用该协议的无线接入产品还很少,各大厂商更多的还是在从事芯片的生产和评估。

为了加快整个无线信息共享系统的构建,需要一种能快速投入生产形成战斗力的底层传输协议来支持,因此应用产品种类多,技术理论相当成熟的IEEE802.11g协议就成为当前的最佳选择,为了使各无线网络节点在实际工作中能在更大的覆盖范围内工作,我们可以在实际应用中加装二级功率放大器实现。

3 构建无线信息共享系统的核心因素

在确立了物理层和数据链路层的传输规范之后,根据IEEE802.11g协议所支持的网络拓扑结构来进行分析和选择。IEEE802.11g规范了两种基本的网络结构:独立基本服务集和扩展服务集。前者也就是Ad Hoc网络,网络中的任何两个节点可以通过节点间的多跳数据转发进行通信,不需要固定的基站来进行数据转发。后者可以看作是多个独立基本服务集的集合,各个独立基本服务集之间通过基站来进行数据的续传和转发。鉴于Ad Hoc网络特有的无需架设网络设施、可快速展开、抗毁性强等特点,他将是未来数字化战场通信的首选技术。在战时通信基础设施受到破坏而瘫痪时,网络中的各个节点可以继续完成数据的传输,从而顺利完成作战任务。因此,在本文构建的无线信息共享系统采用了Ad Hoc网络结构。

组建网络所要考虑的另一个关键因素是数据在网络中的路由算法。针对不同的策略和应用场合,各研究机构已经开发出了大量的Ad Hoc路由算法,其中AODV路由协议是一种典型的按需距离矢量路由算法。在采用AODV路由协议的网络中,源节点并不维持一个路由表,而是根据需要创建路由。当有数据包需要传送时,为了寻找路径,源节点广播路由请求分组,邻近节点收到广播后再向其他邻近点广播,直到到达目的地或者到达已有最新路由的中间节点。路由请求分组采用序列号编码以避免环路,并保证中间节点只回应最新的信息。若源节点发生移动,路由表必须重新初始化;若中间节点移动,其邻近点会发现链路的失效,并将链路失效的信息通告其上行邻近点,直到源节点收到该信息,然后根据需要重新构造路由。AODV算法采用了逐跳路由、序列编号和周期更新的机制,减少了创建路由所需的广播数,适用于战时的移动无线组网。

数据传输的安全问题也是无线信息共享系统不容忽视的方面,在IEEE802.11协议中规定了共享密钥鉴权机制,要求建立连接的双方必须有一个公共的密钥,同时要求双方支持WEP加密,然后使用WEP对测试文本进行加密和解密,以此来证明双方拥有相同密钥,从而有效地防止了数据的外泄。

4 无线信息共享系统网络节点的硬件实现

无线信息共享系统网络节点的硬件结构包括了两个主要模块:嵌入式中央控制模块和无线收发模块。嵌入式中央控制系统集成了ARM9处理器,RS 232接口,RJ 45接口,SD card接口,音频接口,IDE接口,可以方便地扩展音频视频等各种信息采集模块。无线收发模块集成了ARM9处理器和符合IEEE802.11g标准的射频前端[2]。网络节点的硬件组成模块如图1所示,嵌入式中央控制模块通过交叉以太网线来完成对无线收发模块的控制。

嵌入式中央控制模块采用了Windows CE 5.0操作系统作为软件平台, Windows CE 5.0是微软公司向嵌入式领域推出的一款操作系统,他最大程度地继承了桌面版Windows操作系统的丰富功能,同时又加入了许多新特性,以适应嵌入式领域的实际情况和要求[3]。Windows CE 5.0操作系统的网络功能十分强大,支持IEEE802.11协议、IEEE802.3协议、IEEE802.5协议、HTTP协议、TCP/IP协议等所有主流网络协议。其内置的通信模块可以为嵌入式系统提供对多种硬件和数据传输协议的支持,包括串/并行数据端口、红外数据端口以及电话应用程序接口。我们使用Microsoft Platform Builder 5.0来构造Windows CE 5.0的内核OS,Embedded VC++4.0来为Windows CE开发实现无线信息共享的应用软件[4]。由于Windows CE操作系统所支持的API函数库是桌面Windows操作系统API函数库的子集,而且嵌入式操作系统的内存等资源有限,在编译时要综合考虑这些限制因素才能实现能稳定运行的应用软件。无线信息共享系统的单个网络节点通过应用软件进行文件共享时的工作状态如图2所示。

无线通信模块采用了Marvell公司的88w8000与88w8515芯片的组合,以eCos嵌入式可配置操作系统作为软件平台。eCos具有可配置性、可裁减性、可移植性和代码体积小的优势。他提供了功能强大的配置系统,可以在源码级实现对系统的配置和裁减,并且实现最小功能的eCos系统可以只有几百字节,方便的存储于FLASH[5,6]。88w8515是集ARM9处理器、以太网MAC/BB处理器、IEEE802.11 MAC/BB处理器于一身的SoC,88w8000是工作于2.4 GHz频段的IEEE802.11g无线收发芯片。通过JTAG接口,我们可以对无线收发模块底层固件进行不断的修改和完善。整个无线信息共享系统工作时,数据文件在两个节点中的收发流程如图3所示。

5 结 语

本文建立了一种基于Ad Hoc网络的专用无线信息共享系统,对无线网络节点的软硬件平台进行了设计和实现,为电子侦查信息一体化的建设提出了一种切实可行的方案,并进行了多次实地测试。该系统采用了模块化设计,可以根据实际需要在中央控制模块中扩展视频信息、音频信息、位置信息等数据采集设备,嵌入到战时单兵侦察的武器装备中完成对战场环境的综合信息融合。尤其是加装位置传感器后,可以通过软件控制实现无人职守,从而加装在导弹中,实现多弹之间对位置信息的传递,完成多弹编队的立体化打击。

参考文献

[1]金纯.IEEE802.11无线局域网[M].北京:电子工业出版社,2004.

[2]周立功.ARM微控制器基础与实战[M].北京:北京航空航天大学出版社,2005.

[3]傅曦.嵌入式系统Windows CE开发技巧与实例[M].北京:化学工业出版社,2003.

[4]汪兵.EVC高级编程及其应用开发[M].北京:中国水利水电出版社,2005.

[5]Anthony J Massa.Embedded Software Development witheCos[M].Prentice Hall,2003.

[6]蒋句平.嵌入式可配置实时操作系统eCos开发与应用[M].北京:机械工业出版社,2004.

上一篇:化学用语教学下一篇:人绒毛腺促性腺激素