嵌入式系统软件及编程语言

时间:2008-08-16
1、引言 

  随着计算机技术和微电子技术的迅速发展,嵌入式系统应用领域越来越广泛。当今,嵌入式系统已成为一个时髦的名词,就像当初的计算机热潮,似乎比当初的计算机热潮涉及的领域更广泛。

  应用技术人员更多,相关国民经济产值也更庞大。报纸、杂志、网络都把嵌入式系统当作讨论的热门话题。 

  嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。

  嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等4个部分组成,它是集软硬件于一体的可独立工作的"器件"。

  嵌入式系统的软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。操作系统控制着应用程序编程与硬件的交互作用,而应用程序控制着系统的运作和行为。

2、嵌入式系统软件:

(1)嵌入式操作系统: 

  嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等Browser。     

  嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

(2)嵌入式操作系统的发展状况:

      国外嵌入式操作系统已经从简单走向成熟,主要有Vxwork、QNX、PalmOS、Windows CE、嵌入式Linux等。

      国内的嵌入式操作系统研究开发有2种类型,一类是基于国外操作系统2次开发完成的,如海信的基于Windows CE的机顶盒系统;另一类是中国自主开发的嵌入式操作系统,如凯思集团公司自主研制开发的嵌入式操作系统Hopen OS(“女娲计划”)等。 
 
  Windows CE内核较小,能作为一种嵌入式操作系统应用到工业控制等领域。其优点在于便携性、提供对微处理器的选择以及非强行的电源管理功能。内置的标准通信能力使Windows CE能够访问Internet并收发E-mail或浏览Web。除此之外,Windows CE特有的与Windows类似的用户界面使终用户易于使用。  

  Windows CE的缺点是速度慢、效率低、价格偏高、开发应用程序相对较难。 

  3Com公司的Palm OS在掌上电脑和PDA市场上独占其霸主地位,它有开放的操作系统应用程序接口(API),开发商可根据需要自行开发所需的应用程序。    

  QNX是由加拿大QSSL公司开发的分布式实时操作系统,它由微内核和一组共操作的进程组成,具有高度的伸缩性,可灵活地剪裁,配置只占用几十KB内存。因此,可以广泛地嵌入到智能机器、智能仪器仪表、机顶盒、通讯设备、PDA等应用中去。
 
  Hopen OS是凯思集团自主研制开发的嵌入式操作系统,由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。其Hopen Kernel一般为10KB左右大小,占用空间小,并具有实时、多任务、多线程的系统特征。 

  在众多的实时操作系统和嵌入式操作系统产品中,WindRiver公司的VxWorks是较为有特色的一种实时操作系统。VxWorks支持各种工业标准,包括POSIX、ANSI C 和TCP/IP网络协议。VxWorks运行系统的是一个高效率的微内核,该微内核支持各种实时功能,包括快速多任务处理、中断支持、抢占式和轮转式调度。目前在全世界装有VxWorks系统的智能设备数以百万计,其应用范围遍及互联网、电信和数据通信等众多领域。 

  而作为一种嵌入式操作系统,嵌入式Linux以其特别和引人注目的优势正极大地吸引电子设计工程师从自己编写的或专用的RTOS转移到Linux。据VDC Data的数据显示,整个Linux的增长从2000年的1%到2003年的14%,再到2010年猛增到67%。Even Data数据显示,在嵌入式市场,嵌入式Linux从2001年11%增到2002年27%,而同期Vxwork只是从16%到18%,WIN CE从9%到14%。在嵌入式Linux的各种应用市场中,语音和数据通信名列,2000年的销售额是1300万美元,而预计2005年达到1 .26 亿美元(VDC Data数据),可以说嵌入式Linux将成为主流的通用嵌入式操作系统。

(3)嵌入式Linux操作系统:

  选择操作系统时,要根据自己的嵌入式要求和实时性要求,选择适合自己的嵌入式Linux,如果可能,尽量选择使用普遍的嵌入式Linux系统。概括说来,将Linux应用于嵌入式系统的开发有如下一些优点: 

  1)Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中仿真工具(ICE)的障碍。

  2)内核的完全开放,使得可以自己设计和开发出真正的硬实时系统;对于软实时系统,在Linux中也容易得到实现。
  3)强大的网络支持,使得可以利用Linux的网络协议栈将其开发成为嵌入式的 TCP/IP网络协议栈。 

在嵌入式系统中使用Linux有2种途径:  

  1)是用户自己装配(称为DIY内核),可以在www.kernel.org和GNU的网站找到全部Linux代码,然后再编译生成你需要版本的工具链和应用程序库,这个过程比较耗时和困难。还需要指出,这种DIY内核的配置,添加应用和驱动程序也是不标准的和复杂的,这是嵌入式系统的特殊性所在,比如说,有的应用是网络上的小型互连设备,它需要多个以太网、USB主机、小型的NOR Flash文件系统,而一个手持终端,它关心的是LCD的触屏、红外或蓝牙的接口、USB用户端、快速的启动,动态的电源管理和NADA FLASH,这样就需要在数十家Linux相关网站各种补丁、应用和工具,把它们和内核进行反复的编译和调试,确信它们之间以及它们在硬件评估板上是稳定可靠工作的,这个过程是在没有任何技术支持下完成的。  

  2)选择一个商业的嵌入式Linux操作系统平台。商业化的嵌入式Linux版本是针对嵌入式处理器所优化设计的,已经支持了各种半导体厂家的评估板和主要的设备驱动,商业化的嵌入式Linux包含了文件系统、应用、实时性扩展和技术支持培训服务。

现今国外的商业化嵌入式Linux产品有:

  MontaVista Linux, Bluecat Linux, Timesys Linux, Metrowork Linux(原Lineo), Vlinux(韩国)和Redhat Linux等,国内也有红旗、中软等嵌入式Linux。

(4)嵌入式Windows操作系统: 

  微软公司从1996年开始以其Windows CE 1.0版本涉足小型嵌入式系统。

  Windows CE 1.0是一种从头做起的代码库,面向具有图形界面的手持设备,在外观和感觉上像Windows 95。同样,台式Windows的组件化版本于1999年面世,其一个工具组和大约250个组件均来自Windows NT。

  就嵌入式操作系统而言,Windows 是一种很有吸引力的选择,因为它有大家熟悉的API,可以找到熟练的程序员和廉价的部件,而且还可以利用台式PC许多强大的功能。微软公司嵌入式产品,即Windows XP 嵌入式操作系统和Windows CE.Net操作系统,都为开发人员带来了新的特性和功能。 

  微软公司的Windows XP嵌入式操作系统与其台式XP操作系统版一样都基于相同的二进制代码,而且XP嵌入式操作系统是Windows NT 4.0嵌入式操作系统的后继版本。嵌入式版本包括含有台式版本所有的安全功能、多媒体功能、Web浏览功能、电源管理功能和设备支持功能,只是将台式版本分解为10000多个组件,所以开发人员可以选择某些单元来构建一个定制的占用内存容量小的操作系统。Windows XP嵌入式操作系统及的服务包都有很多新的通信选购件、文件系统选购件和开发工具选购件,这些选购件可使设计小组在以后的项目中选用这一操作系统。  

  Windows CE.NET建立在不同于台式操作系统的体系结构上。其设计目标包括广泛的无线连接性、实时功能和与设备无关的Web服务。与 Windows XP Embedded不同, Windows CE.NET支持 ARM、 MIPS、 SHx和 x86等系列处理器,从而使其适用于各种各样嵌入式产品。Windows CE.NET包含了.NET Compact Framework,这是微软公司的智能设备开发平台,可在任何时候、任何地点和在任何设备上为消费者提供Web服务。为支持NET Compact Framework,Windows CE.NET包括一套集成的端到端工具和几种定制开发语言,如Visual Basic.NET、Visual C++.NET和Visual C#.NET。

3、嵌入式系统编程语言:

  目前,在嵌入式系统开发过程中使用的语言种类很多,但仅有少数几种语言得到了比较广泛的应用,主要为Ada、C/C++、Modula-2等几种。 

  Ada语言是20世纪70年代美国国防部开发并投入使用的功能强大的通用系统开发语言,初为Ada83。它支持模块化、独立编译、协处理等功能,其可靠性、可维护性、可读性都是相当好的。后来,为了更好地支持OOP(Object-Oriented Programming),对其进行了改进,形成了目前广泛使用的Ada95。使用Ada语言可以大大改善系统的清晰性、可靠性、可维护性等性能指标。它是美国国防部指定的一种可用于军用系统开发的语言。 

  C语言是由Dennis Richie于1972年在AT & Bell实验室研究成功并投入使用的系统编程语言,其设计目标是使C既具有汇编语言的效率,又具有语言的易编程性,其代表性的应用是UNIX操作系统。从20世纪80年代中期C语言涉足实时系统后,受到了普遍欢迎。目前是使用广泛的嵌入式系统编程语言。C++是由Bjarne Stroustrup于1995年在Bell实验室研制成功并投入使用的。

  C++在支持现代软件工程、OOP、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、程序复杂程度等方面比C语言程序性能差一些。 

  Modula-2是由Nicklans Wirth在70年代后期根据Pascal和Modula开发的系统设计语言,其主要目标是在模块化、系统编程、协同处理等方面对Pascal 进行改进。Modula-2具有很强的类型检查能力和丰富的低级功能支持。因此,可用它设计一个完整的实时程序而不用汇编语言的支持。Modula-3是1988年由DEC (Digital Equipment Company)和ORC(Olivetti Research Center)根据Modula-2开发研制并投入使用的系统开发语言。目标是设计一个功能强大但结构简单的通用编程语言,它在协同处理、OOP、自动垃圾收集以及对C语言和UNIX的支持等方面对 Modula-2进行了改进。 

4、结束语

  信息时代、数字时代使得嵌入式产品获得了巨大的发展机遇,也为嵌入式市场展现了美好的前景,同时也对嵌入式系统的开发者提出了新的挑战。

  



  
上一篇:基于S3C2410的嵌入式Linux系统构建
下一篇:嵌入式中C和汇编的一些技巧

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料