- UID
- 1023166
- 性别
- 男
- 来自
- 燕山大学
|
开源软件已成为嵌入行业中的一个重要话题,因为设计者要在有限预算情况下应对逐步增加的软件复杂性。
提示
* 传统上自己开发嵌入式软件的设计团队正转向开源软件,以应对日益增长的设备复杂性。
* 免费的源代码和无需经常性专利费都吸引着很多设计者,考虑在新的嵌入式系统项目中使用开源软件。
* 你可以对各种开源软件产品作缩放调整,以适应小规模的嵌入式设备硬件配置。
* 嵌入式系统开发者创造了多种保护专有软件,并利用开源软件优势的技术。
由于有可能在操作系统软件、开发工具、经常性专利费以及日程方面节省庞大投入,每个嵌入式系统新项目的设计者与管理者都至少必须考虑一下开源软件。当嵌入式系统业从资源有限的设计转向有多种新软件功能(如高速网络、无线通信、交互图像以及数据加密)的高性能复杂应用系统时,各式各样的开源软件就获得了一个立足点。开发人员可以将免费下载的操作系统、库和组件与自己的专用定制软件集成起来,从而节省数以千计人工小时的开发成本。
设计者可以选择的开源软件范围广泛,从各种极其流行的Linux操作系统变种,直到完备的调试工具。SourceForge.net是最大的开源软件开发网站,它免费管理超过18万个注册的项目,包括数据库、安全、游戏、聚类、多媒体和VoIP(IP电话)。不过,在你准备赶上这个潮流,开始下载免费代码以前,要先仔细看看开源因之流行的特性使很多设计者敬而远之的问题。这些问题会影响你的决策:定制、支持、许可、碎片、硬件成本、开发工具以及实时性能等。
嵌入式开源软件用户的初始任务是使代码能适应于某个特定的硬件结构。根据开源的特性,开源产品必须适合于最广泛的用户,因此它们要求通用化,而不是面向某个应用。这种通用化会迫使设计者增加内存系统,除非专利费的节省能补偿,否则多余的内存需求就会转化为嵌入设备的较高再生成本。今天,大多数商用成品电路板供应商都为自己的产品提供开源的电路板支持软件包。例如,WinSystems随自己的成品板级产品提供一个定制的开源开发工具包,它包括设备的驱动程序、文档、布线和快速入门指南(图1)。这个工具包还带有BlueCollarLinux,这是Linux操作系统的一种基本的嵌入实现,你可以从开源文件重新建立它,而无需特殊或专有的开发工具。
修补我的代码
潜在开源软件用户的最大抱怨是缺乏一个中心化的资源,能提供类似于商业软件供应商那样的支持。开发者通常可以从互联网上找到他们问题的答案,但没有人负责研究和响应这些问题。替代办法是组织一个内部支持团队,或联络一个第三方。尽管业内很多公司都广泛接受开源软件为免费代码,但很多设计者仍希望付费获得专家支持、专用工具、定制服务,以及预封装的配置,以简化开发过程。商用供应商会提供定制的嵌入配置、订购的支持包、开发工具套件,以及实例程序,作为免费代码的补充。例如,MontaVistaSoftware公司为嵌入Linux用户提供基于订购的合同支持服务。
开发人员认为嵌入式开源软件环境中的另一个危险是出现代码碎片的可能性。如果一个开发者决定修补开源代码以解决某个集成问题,而另一个开发者作了相似但却是不兼容的修改,现在就存在三个代码版本了。一个开发人员为一种版本所编写的应用可能与其它版本不兼容。供应商在交付操作系统时,一般也带有嵌入设备的应用,因此开发人员比最终用户更担心代码碎片问题。除了一些专用版本(如实时Linux),Linux开源社区已通过完善的升级建议和版本系统,成功地避免了多版本并存的问题。
一般来说,开源软件都不是公共财产,你必须遵守一些规则,如阐明作为使用条件的个人许可。OSI(开源促进会)维护着20多个开源标准许可的完整版本,为社区提供服务。例如,Linux的许可是在常见的GNUGPL(通用公开许可)下,提出了详细的使用要求。如果你修改和分发了GPL软件,你的修改会自动归入GPL,并且你必须向任何提出要求的人交付源码。尽管很多嵌入式系统开发者会因为担心披露自己的专有软件源码而回避Linux,但你的应用程序和设备驱动可以保持为私有,只要它们与Linux核心分离且不包含GPL代码。这种代码隔离一直是开发人员忧虑的来源,尤其是那些开发小型嵌入式系统的设计者,这些系统中所有软件都链接成为单个ROM映像。虽然有这些限制,你仍然可以下载一份免费Linux拷贝,使之适应于自己的产品,销售任意多份拷贝,而无需支付专利费。
免费工具
开发工具(如GNU编译器和GNU调试器)支持大多数开源软件包。这些工具足以胜任开源代码的修改任务,但缺乏一种商用环境的额外卖点。为了提供与专有操作系统相类似、易于使用的IDE(集成开发环境),多家工具供应商与开源社区将它们的产品整合为图形化的开源Eclipse平台。IDE采用一种插入式架构,使用户能方便地建立定制化的Eclipse配置,从而简化了工具集成与执行工作。EclipseFoundation为了简化对工具集的多个修改和增加,将多个产品升级组合成一个按年度发布的软件包。今年发布的Ganymede有23个项目,包括用于Java和JavaScript的新开发环境、建模工具、一个面向服务的架构设计软件、运行时项目,以及一个协调各个升级的新安装器。从EclipseFoundation网站上可以下载到多个Ganymede包的变种,以及源代码。
虽然迄今为止,标准Linux是最流行的开源操作系统,但它却可能不适合某些嵌入式系统应用。Linux是一种通用操作系统,包含了庞大的代码库,用户必须针对自己的嵌入式设备的硬件和需求作调整。多数Linux发行包都支持各式各样的架构和协议,但至少需要一个32bit处理器、2MBRAM和1MBROM。为了降低这些资源需求,嵌入式Linux/微控制器项目(EmbeddedLinux/MicrocontrollerProject)为没有MMU(内存管理单元)的微控制器开发了Clinux(微控制器-Linux),它是Linux核心的变种。?Clinux核心支持多种微控制器,包括来自ARM、MIPS和飞思卡尔公司的产品,也包括AnalogDevices的BlackFin、英特尔的i960,以及日立的H8处理器。在?Clinux网站上可以找到支持处理器的完整清单、详细的教程,以及源代码。NetBSD(伯克利软件套件)是另一个开源操作系统,获得了一些嵌入式系统开发者的注意力。NetBSD是BSD计算机操作系统的一个免费、安全和可移植的开源版本,后者是Unix的一个变种。NetBSD核心需要一个有MMU的处理器,消耗的资源与标准Linux近似。BSD许可比GPL更自由,它允许开发人员保留专有代码。
对实时输入的确定响应是嵌入式系统的另一个重要问题。尽管最新版本包含了一个重新编写的进程调度算法,以加快多任务应用中的任务切换,但Linux可能并不是实时项目操作系统的选择。针对资源有限并有实时需求的嵌入应用,有一种更好的、无需专利费的开源选择,那就是eCos(嵌入式可配置操作系统),它最初由RedHat软件公司发布。它的目标是只有几百KB内存的设备,并且能运行在多家供应商的处理器上,包括ARM、日立、摩托罗拉、MIPS、NEC和PowerPC。eCos许可是对GPL的少许修改,不要求用户发布应用源码。它还阻止任何用户作小规模改进并将结果称为一个全新的系统,然后在一个不同许可下发布这一系统。
移动战争
开源软件市场上最热的新闻大概要算便携操作系统之间正在进行的战争,这些操作系统用于智能手机和移动互联网设备等平台。2007年末,Google和30多家合作伙伴宣布了Android移动平台计划,这是一个用于移动设备的开源软件栈,它包括一个基于Linux的操作系统、中间件和关键应用。开放手机联盟(OpenHandsetAlliance)将管理整个软件包的源码,并在Version1.0完成时作发布。台湾的HTC公司正在做基于Android的手机,有望于2008年第四季度推出。Google在宣布Android时,也推出了Android开发者挑战赛,它将提供1千万美元,奖励采用Android平台开发的移动系统应用。第一阶段已完成的获奖应用包括一系列主题,如通信、社交网络服务、音乐和信息发布。从Google的Android文档网站上可以下载到软件开发者工具套件和设备仿真器(图2)。
LiMo(LinuxMobile)基金会提供了另一种开源的智能手机平台,它是Android的一种替代平台。LiMo的目标是提供一种“真正开放、与硬件无关、基于Linux的移动设备操作系统”。尽管基金会在今年发布了Version1.0,但全部多媒体与便携特性的发布要推迟到2009年。LiMo关注的重点是为设备制造商建立中间件,并为应用开发者提供API(应用编程接口)(图3)。一些手机制造商已经采用了LiMo操作系统,包括松下、摩托罗拉和NEC。LiPS(Linux手机标准)论坛与移动运营商Verizon最近加入了LiMo,表达了对LiMo的支持。尽管LiMoFoundation声称自己是一个开源平台,但你必须先成为基金会的一个付费成员才能接触到代码库。
最近有另外一个新闻可能会同时扰动Android和LiMo阵营,多家大型手机制造商(包括诺基亚、索尼爱立信和摩托罗拉)宣布,他们要将自己各自零碎的Symbian操作系统结合成为一个开源平台。尽管迄今为止该操作系统并未在美国广泛使用,但全球有数千名Symbian应用开发人员。Symbian基金会的成员有AT&T、三星电子、德州仪器以及意法半导体等,它承诺将在新兴的开源移动系统战场上成为一个令人畏惧的竞争者。
随着嵌入设备复杂性的不断增长,软件开发任务在一个典型项目预算中已占据了最大的百分比。图像界面、网络协议以及数据安全都只是设计团队认为可加到定制应用软件中的一些新需求。很多设计者正在转向无专利费的开源平台,因为它们有了各种各样的内置功能。事实上,现在互联网上有数百万行的免费下载软件,支持各种类型的嵌入式系统开发项目。一旦大量设计者通过了学习曲线并获得了自己的经验,开源软件就可能成为嵌入式系统行业的基础。 |
|