APP下载

嵌入式软件技术的现状与发展趋势研究

2017-03-16张琦

科技创新与应用 2017年5期
关键词:嵌入式软件发展现状发展趋势

摘 要:嵌入式软件技术是一种常用的计算机技术,并且已经在社会经济发展中的生产生活领域得到了十分普遍的应用。不论是航空航天、军事国防,还是医疗卫生、电子通讯等,嵌入式软件技术随处可见。就目前嵌入式软件的发展情况来看,其拥有速度快、软件代码规模小等优势,在未来的智能化领域中拥有十分广阔的发展前景。现文章主要针对嵌入式软件的现状与发展趋势进行研究,以期充分发挥嵌入式软件技术对生产生活的贡献。

关键词:嵌入式软件;发展现状;发展趋势

在计算机技术快速发展的现代化社会中,单一的计算机设备已经难以满足人们的生活与生产需求,人们开始对各种类型的嵌入式软件提出了新的要求。在日常生活中,嵌入式软件随处可见。网络电视、智能家电、汽车电子控制、全球定位导航系统、智能手机、智能游戏机等等都是应用嵌入式软件的产品。人们的日常生活已经离不开嵌入式软件技术,嵌入式软件的发展方向将会成为未來生产生活的关键。因此,针对嵌入式软件的现状与发展趋势进行研究对于嵌入式软件技术的发展进步有着十分重要的实际意义。

1 嵌入式软件

软件是为了满足使用需求而设计开发的程序、文件与相关技术。从分类的角度来看,软件可以分为系统软件与应用软件,从应用范围来分可以分为数据库软件、嵌入式软件等。从计算理论来看,一般软件可以看作是一组过程化的数学函数,函数输入数据隐射输出数据。而嵌入式软件同样也是数学函数,但是其于嵌入式软件的主要作用并非转化数据,而是与物理领域进行联通。简单的说,就是利用相关技术将操作系统或者其他开发软件嵌入到硬件之中。

1.1 嵌入式软件的分类

嵌入式操作系统。嵌入式操作系统EOS(Embedded Operating System)是一种运用十分普及的系统软件。以往该操作系统更多的是被用于工业生产以及国防管理控制领域当中。嵌入式操作系统需要完成嵌入系统中所有的硬件、软件的调度、调整、控制与协调工作。嵌入式操作系统必须要充分体现系统的特点,通过安装与卸载模块的操作来完成系统的功能。一般来说,嵌入式操作系统主要在商业运作中应用更为合适。20世纪80年代开始,商业化的嵌入式操作系统就得到繁荣的发展。目前,全球主要的嵌入式操作系统有Windows CE、Palm OS、Linux、VxWorks等等[1]。其中在我国得到了普及应用的软件有WindRiver、Microsoft、QNX。相对于国外来说,我国嵌入式操作系统的发展起步时间较晚,与国外还存在一定的距离。国内该类型产品主要是在自主版权的Linux操作系统上实现的,使用较为普及的有红旗Linux、东方Linux等。

嵌入式支撑软件。嵌入式支撑软件的功能是辅助软件开发行为,为软件开发提供一定的帮助与支持。嵌入式支撑软件一般涵盖数据库、常用开发工具等。其中,数据库是十分关键的。目前,嵌入式数据库技术的应用已经十分普及。同时,伴随着移动互联网技术的成熟,人们对移动数据的需求与要求也逐渐提高。嵌入式数据库技术已经在工业生产、军事部门等得到了重视。而嵌入式移动数据库则是用于辅助计算的数据库管理系统。嵌入在移动设备中的数据库系统牵涉到数据库技术、分布式计算技术、通讯技术等不同技术领域,并且就当前发展现状来看已经成为了一个研究氛围浓厚,活跃进步的领域[2]。

嵌入式应用软件。嵌入式应用软件是针对某一特定领域而形成的,基于某一特定硬件平台的软件,其能够实现用户的与其目标。鉴于用户任务在时间与其他细节上的要求,因此部分嵌入式应用软件在应用过程中需要指定的嵌入式操作系统。嵌入式应用软件相对于普通软件来说有着十分显著的区别,其不单单对精确性、稳定性、安全性等方面有着更高的要求,同时还要尽可能的进行优化处理,从而减少对系统资源的占用,降低硬件的投入成本。目前,市场上已经存在各种类型的嵌入式应用软件,常用的嵌入式软件有浏览器、办公处理软件、多媒体软件、人机控制软件等等。在嵌入式系统中应用软件是最为活跃、最为积极的类型,每一款应用软件都拥有其指定的背景,虽然规模较小,但是技术含量高,因此嵌入式应用软件并没有与操作系统与支撑软件一样被国外产品垄断,而是拥有十分广阔的发展前景。因此,嵌入式应用软件是我国嵌入式软件的绝对优势领域。

1.2 嵌入式软件开发的特点

相对于一般计算机软件来说,嵌入式软件开发存在一定的特殊性,主要体现在:第一,开发规模较小,难度较大。普通的嵌入式软件规模相对较小,大部分都在若干MB以内。虽然软件规模不大,但是开发难度却较大。在桌面机上完成开发,在目标机上顺利运行。嵌入式软件开发需要涵盖板级初始化程序、驱动程序、应用程序以及测试程度等等。通常都是牵涉到低层软件的开发[3]。基于这一需求,嵌入式软件的开发难度较大,在开发过程中需要使用各种来写的开发技术与开发工具来完成。第二,快速启动,立即运行。在通电后若干秒内就需要进入正常的工作环境。所以大部分的嵌入式软件往往都已经被实现固化带NorFlash等快速启动的主存当中,在通电后即可以立即运行。或者直接动NorFlash调入内存后直接进行运行。或者直接被存储在计算机电子盘中,在通电后即可快速调入至RAM的运行当中。第三,实时性与可靠性要求高。嵌入式软件不论当前系统内部状态情况如何在遇到外部事件时需要快速做出反应。同时,还需要处理一异步并发事件的能力以及处理出错以及自动复位的功能。使用容错、出错处理手段,在软件运行出现错误或死机的时候可以自动恢复到原先的正常运行状态。第四,程序一体化。嵌入式软件是一种一体化程度,是基于应用程序与操作系统整合的程序,因此其开发过程中需要做到程序一体化。

1.3 嵌入式软件的开发环境

在个人计算机上运行的程序的开发过程与运行环境大致相同。而嵌入式软件则是在交叉的开发环境下进行的,主要目的在于让软件开发过程中更加安全、更加可靠,全面提升开发的效率与质量,降低软件开发成本的难度与投入成本。嵌入式软件的交叉开发环境即为用于编译、链接、调试应用程序的代码环境与开展运行应用程序的代码环境是不一致的,分别处于不同的设备装置上。其中,进行编译、链接、调试环境的设备为宿主机,而进行应用程序代码运行的设备为目标机。图1位嵌入式软件开发环境的示意图。

从嵌入式软件的开发手段来看,交叉开发环境主要是由宿主机与目标机一同构成的,其两者之间是基于物理连接基础而形成的逻辑连接。其中,宿主机主要是用于开发嵌入式系统的计算机,该计算机软件资源十分丰富,不单单拥有十分强大的桌面操作系统以及人机交互体系,同时还拥有各种类型的开发工具,以便给编辑、链接、调试、测试等提供强力的支持。目标机主要是所开发的嵌入式系统,即为嵌入式软件运行的工作环境,通常是不具备任何资源与功能的裸机。在嵌入式软件开发过程中,目标机的功能在于接收以及执行宿主机发出的各项指令,例如读取内存、写入内存等。然后将最终定价结果发送反馈给宿主机,在旁配合宿主机开展的各项工作。宿主机与目标机之间存在着一定的物理连接,即为通过物理线路,经过串口与OCD的方式相连接。逻辑连接是指宿主机与目标机之间通过既定的通信协议所形成的通信连接[4]。在开发嵌入式软件的过程中则必须要以物理连接与逻辑连接为基础。

1.4 嵌入式軟件开发过程

(1)嵌入式软件的形成

嵌入式软件形成主要是在宿主机上进行的。软件开发人员使用各类型工具来对应用程序开展编辑、链接等工作,以形成可以被调试或固化的程序。相对于普通软件开发过程,嵌入式软件开发较为特殊,其交叉编译器在宿主机上编译形成另外一种嵌入式微处理器的二进制程序。同时,交叉链接器会按照宿主机上的技术与手段来对目标程序程序的运行方式与内存定位进行选择,调整相应的信息配置,并且模块对象与库文件中的模块转变成为目标程序。

(2)嵌入式软件的调试过程

嵌入式软件在调试过程中需要使用交叉调试器,该设备即为需要调试的程序以及调试的程序分别在不同设备上工作。调试器根据实际情况来使用某一种方式对目标机上的调式对象进行控制,并且对目标机的内存、寄存器以及调试程序对象进行核实与挑战。在开发嵌入式软件过程中,交叉调试器是使用最为频繁的工具,往往会占据软件开发时间30%-50%。因此,交叉调试器的使用功能与效率将会直接影响到嵌入式软件技术的开发的周期以及市场效应。

(3)嵌入式软件的固化运行

嵌入式软件在完成调试后,程序代码需要完全被拷贝纸目标机中的非易失性存储器当中,并且在物理硬件环境上开展运行工作。这一过程即为嵌入式软件的固化处理。因此,计算机系统启动会将数据迁移至计算机的RAM当中,程序代码将在ROM、Flash Memory 中运行。然后固化程序将会建立Boot模块。在真实的物理目标环境中使得应用程序开展工作,实现对计算机中央处理器环境的初始化。当用户打开目标机时,该应用程序即会被自动嵌入运行。

1.5 嵌入式软件的主要开发技术

(1)交叉开发技术

相对于其他通用软件开发来说,嵌入式软件并不存在自主开发的能力,在嵌入式软件开发过程中需要宿主机与目标机相互分配任务。宿主机的主要任务是开展编译、链接、定址等过程,而目标机则是嵌入式软件实际运行的平台。首先,需要将应用程序转变成为可以在目标机上开展工作的二进制代码。这一整体过程需要开展编译、链接以及定址。其中编译是交由交叉编译器来实现。在编译过程中所形成的目标文件将会被链接成为指定的目标文件,这一过程即为链接过程。而定址则是将物理存储器地质指定给目标文件相对偏移处。这一过程形成的文件就是能够在嵌入式平台中工作的二进制文件[5]。

(2)IP构件库技术

构件技术,即为组件技术。其能够有效改善软件威胁,使得软件工厂化生产起到一定的积极作用。因此,IP构件库技术在嵌入式软件开发中的应用已经越来越普遍。嵌入式系统实现的最佳形式是单一的芯片系统(SOC,SystemonChip),而单一芯片系统的核心就是即为IP核(Intelleetual Poperty KernelS)。其中,IP核包括硬件核、软件核以及固件核。其中,硬件核即为MPU核或DSP核,软件核则为将单一芯片系统所要求的功能软件等构件标准API方式与IP核构件形式调制成为可以执行的代码单元,推动SOC的嵌入式系统的开发。当前很多嵌入式软件生产厂家已经将成熟RTOS内核以及功能扩展件通过IP核构件的形式卖出。可以看出,正在不断发展成熟的IP构件软件技术在未来的发展过程中将会为中小型高技术的软件公司提供发展空间。

1.6 嵌入式软件的应用

伴随着嵌入式技术的进步与成熟,嵌入式系统产品正在普及应用至各个行业当中,嵌入式软件的开发与应用面临着重大的发展给予。目前,嵌入式软件在移动终端、互联网、通讯设备、汽车电子、工业生产等领域发挥着不可或缺的重要作用。嵌入式软件在在消费电子领域中的数字电视、掌上电脑、数码相机、视频电话等其他家用电器运用广泛。尤其是在数字电视市场中,我国上千万用户的有线电视都是通过嵌入式软件来实现的;在通信领域中,嵌入式软件在移动终端、电话交换系统、电缆系统、全球定位系统等领域运用广泛;在工业生产领域中,嵌入式软件在数控机床、智能仪器仪表、污水处理系统、电力传输系统、石油制造行业、建筑工程技术、计算机辅助制造系统等领域中运用广泛;在金融商业行业中的自动柜员机、信用卡系统、售货端系统等方面中运用广泛;在交通行业中的运输系统、检票系统、行李检查系统、汽车电子、交通监控系统等方面运用广泛[6]。在上述众多嵌入式软件运用的领域来看,终端是其运用最为广泛的领域,占据了嵌入式软件应用的50%以上。尤其是在4G时代,移动终端与智能终端的成熟发展给嵌入式软件带来了十分光明的前景。另外,移动设备与智能设备中很多基层功能都是通过嵌入式应用软件来完成的。例如,常用的多媒体、词典、计算器等等。

2 嵌入式软件技术的发展趋势

伴随着计算机技术与电子技术的成熟发展,电子设备之间的差异性越来越低,怎样满足市场需求,使得自己的产品在市场竞争中突围而出成为了电子设备生产企业以及嵌入式系统设计面对的重大问题。软件差异化的优势已经逐渐凸显,传统3C行业(Communication, Consumer Electronics, Computer; 通信、消费电子、计算机)、工业生产领域、汽车生产行业、医疗电子商业、通信行业等都已经普及使用了嵌入式软件技术。可以看出,新的一轮嵌入式软件技术应用热潮已经席卷而来。

2.1 传统行业应用将继续保持主流

从上文的论述已经得知,嵌入式软件技术即为嵌入硬件中的操作系统以及开发个工具软件,其在产业的中的关系直接为芯片设计与制造——嵌入式系统软件——嵌入式设备的开发与制造。其中,嵌入式系统是一种可以独立执行操作的计算机系统,其涵盖了微处理器、定时器、传感器等一系列元件与芯片,与已经存在于存储器中的微型操作系统、控制应用软件组合而成,能够同时实现实时控制管理、数据处理计算等自动化工作。嵌入式系统始终围绕着应用,将微电子技术、计算机技术、控制技术作为基础,使得软件硬件一同协同整合,并且软件与硬件能够实时调整,以满足系统对投入成本、使用功能的需求。最为简易的嵌入式系统仅仅只能够完成单一的控制功能,在其中唯一的ROM中实现单一的控制程序,不具备微型操作系统。复杂的嵌入式系统。其中包括个人数字助理、手持电脑等,则可以与个人计算机实现同样的功能[7]。实际上嵌入式系统与个人计算机本质区别在于微型操作系统以及应用软件嵌入在ROM、RAM存储器当中,并不是存储在磁盘的存储载体中。而众多复杂式的系统则是由数个微小嵌入式系统构成的。作为嵌入式软件应用最为普遍的领域,3C与工业生产已经离不开嵌入式软件。在选择嵌入式系统硬件的过程中则需要针对实际情况,根据不同的应用任务,充分考虑到成本、体积、可靠性、处理效率等方面。嵌入式系统的关键核心是应用软件以及系统软件。然而由于存储空间不足,因此对软件代码可靠、安全、紧凑有着较高的要求。值得注意的是,嵌入式多媒体处理软件在3C终端产品中的应用已经相对普及,例如智能手机、路由器、移动游戏设备等,这些常见的终端产品都能够通过连接网络来实现语音与视频通讯,而嵌入式多媒体处理软件则可以显著优化网络状态,避免网络出现丢包、延时、抖动等情况,以便让用户获得更高质量的在线服务。对于嵌入式软件来说,高级用户界面与交互功能正在快速发展,在未来的发展中伴随着智能家庭电器的普及以及便携式设备的发展,嵌入式软件将会给用户带来更加新奇、更加丰富的体验。同时,嵌入式软件技术为了满足人们的个性化需求,还会朝着人工智能技术的方向发展。人工智能技术与嵌入式软件相结合,可以深入的实现人机交互过程,使得嵌入式软件可以得到更加广泛的应用。智能仪表实现自动化、自动化温度控制、自动化压力控制等等都将为人类的进步发展做出贡献。

2.2 汽车应用拥有巨大的发展潜力

在汽车行业与电子工业持续发展的现代社会,电子技术在汽车行业的应用愈加广泛,现代的汽车行业已经迈入计算机控制时代。汽车电子可以实现发动机控制、底盘应用等各项功能。在汽车电子逐渐朝向网络化、智能化、人性化趋势发展的过程中,对相关控制软件的需求也必然会有所增加,并且有需要进一步进行计算机联网,需要应用各种类型的嵌入式软件,并且开发设计出能够通用的高水平语言,以满足不同硬件的控制需求。嵌入式软件作为一种可以移植的应用技术,在未来的发展过程中必然将在汽车行业应用上发挥着不可替代的作用。在电子设备市场处于爆炸式增长的背景下,汽车电子产业仅仅只是一个细分市场。在应用嵌入式软件的情况,汽车必然将朝着智能化发展,从当前的实现与手机同步访问发展到手机被置入汽车系统中,以获取更强大的计算能力与显示屏幕[8]。

2.3 为医疗电子商业锦上添花

在人们生活质量不断提升的现代化社会,医疗电子产品的市场正在不断扩大,特别是对于计算机断层扫描、超声波诊断仪器、磁共振仪器等医疗影像设备的需求正在快速增加。相对于同样的高端产品来说,嵌入式软件拥有独特的优势,其硬件的低功耗以及高效处理能力能够为推广产品有着十分重要的积极作用。相对于软件系统来说,嵌入式软件不单单可以满足需求,同时还能够提供更佳的实施方案。在未来若干年的发展过程中,嵌入式软件必然在医疗电子领域有着更加深入的应用[9]。面对便携式、智能式医疗电子设备带来的全新发展机遇,全球电子医疗厂商都加大了研究开发的力度,积极面对半导体技术带来的挑战与发展机遇,而软件供应商则相应的推出了各类型的产品,以支持半导体厂商的技术,使得嵌入式软件支持的产品能够快速的面向市场。医疗行业在朝向电子技术方向发展过程中需要更加智能、更加可靠的系统提供支持。其中,微软Windows Embedded系列操作系统如Windows Embedded CE和Windows XP Embedded,在工具中提供了安全稳定的架构、行业标准的支持、完善稳定的网络支持等,为医疗行业电子设备的发展扫除障碍。在未来医疗发展领域中,具有连接选项功能的,更加完善、更加智能的医疗设备将会持续保持增长状态,医疗设备制造厂商将可以使用Windows Embedded技术来开发医疗设备,其中包括血糖仪、患者监护设备、超声波设备、远程诊断、本地诊断设备等。

2.4 嵌入式软件发展面临挑战和机遇

当前嵌入式软件技术正在面临着不可规避的挑战,主要集中在产品的功能要求越来越多,越来越复杂,开发周期越来越短。MCU马上就朝着32位转移,工程师要面临着操作系统编程的全新挑战。嵌入式微处理器持续处于升级优化状态中,面临着多核、虚拟技术的带来的挑战。嵌入式操作系统、JAVA语言、中间件、嵌入式操作系统等技术对嵌入式软件的开发、测试与管理都带来了巨大的挑战。一般来说,一个嵌入式系统设备同时通过嵌入式计算机系统与执行装置而构成的,嵌入式计算机系统作为嵌入式系统的核心的架构包括硬件层、中间层、系统软件层以及应用软件层。被控制对象能够直接接收到嵌入式计算机系统所发出的指令,执行相关的操作与任务。执行装置的设计可以进行简单化处理,例如智能手机中的微小型点击,在手机处于震动状态时打开;执行装置的设计也可以进行复杂化处理,例如SONY的智能机器狗上集成组合了多个微、小型的控制点击与传感器,能够执行传达的各种指令,完成各种动作[10]。

软件测试也是当前嵌入式软件技术面临的重大问题之一。当前国际上的嵌入式软件技术及其相关产品相对于国内技术与产品的稳定性有着十分明显的优势。造成这一差距的重要原因之一就是我国对嵌入式软件测试工作不够重视。我国对软件测试的重视程度,软件测试工作人员的素质、软件测试工作的科学化管理都是导致产品生产不稳定,使用出现问题的重要原因,有很多BUG往往在投入商業使用之后频繁出现。

就目前来看,嵌入式软件技术必然存在一些难以跨越的鸿沟,但是面对技术难题,嵌入式软件技术开发人员的综合素质也是十分关键的。目前,在嵌入式软件开发过程中往往存在过于乐观的情况,经常制定一些不切实际的项目管理进度表,对软件开发工程师要求较高,对项目开发的难度进行了错误的评估。这种种因素都会导致项目失败。

3 结束语

在嵌入式产业不断成熟发展的背景下,嵌入式软件技术也必然会朝着无线网络技术、智能化的趋势发展,成为我国计算机软件产业中不可或缺的重要领域,并且广泛的运用在日常生产生活领域中,为改善人民生活,提升工业生产效率,推动我国经济发展做出更多的贡献。

参考文献

[1]罗刚,郭兵,沈艳.源程序级和算法级嵌入式软件功耗特性的分析与优化方法研究[J].计算机学报,2009(9):1869-1875.

[2]殷永峰,郑本焘,陆民燕.基于UML实时扩展的嵌入式软件测试用例生成技术[J].系统工程与电子技术,2011(3):694-699.

[3]宋文,于林宇,刘军.通用嵌入式软件测试环境在武器装备软件测试中的应用[J].测控技术,2005(10):65-68.

[4]肖健宇,张德运,陈海诠.基于UML状态机与B方法的高可信嵌入式软件开发[J].计算机工程,2006(8):64-66.

[5]Rodrigo Pastl Pontes , Paulo Claudino Véras, Ana Maria Ambrosio.Contributions of model checking and CoFI methodology to the development of space embedded software[J].Empirical Software Engineering,2014,19(1):39-68S.

[6]王艳娜.自动售票机嵌入式软件可复用测试框架的研究与实现[J].上海电力学院学报,2007(4):363-366+370.

[7]杨芳,贺红卫,谢鹏.嵌入式软件目标码仿真测试平台的研究与设计[J].计算机工程与设计,2009(19):4364-4367.

[8]Jani Mets?覿, Shahar Maoz, Mika Katara.Using aspects for testing of embedded software: experiences from two industrial case studies[J].Software Quality Journal,2014,22(2):185-213.

[9]黄百乔,赖婧,张虹.基于IPO功能分解的嵌入式软件故障树分层构建方法[J].沈阳工业大学学报,2013(2):204-211.

[10]王恒,王 ,李敏.一种高可靠的嵌入式软件远程自更新机制的研究与实现[J].工业控制计算机,2007(9):39-40+43.

作者简介:张琦(1992-),男,汉族,山东滨州,曲阜师范大学信息科学与工程学院2013级本科生在读,研究方向:軟件工程。

猜你喜欢

嵌入式软件发展现状发展趋势
基于ARM7TDMI架构的嵌入式软件逆向工程分析方法
浅析嵌入式软件技术的现状与发展动向
基于模型检查的嵌入式软件构件化分析与验证
天然气储运技术经济分析
巨灾债券在风险管理中的应用
浅析家庭农场发展现状及面临困境—以丽江市为例
地方广电媒体融合发展中的困境和出路
嵌入式软件在计算机软件开发过程中的运用