用一种技术统一企业级软件和嵌入式软件的方法
嵌入式软件开发有别于企业级或桌面软件开发,而且它们采用的软件开发技术也各有不同。一些嵌入式软件公司试图采用Visual Studio这样的企业级解决方案实现用户界面友好的开发环境,但是多主机、多目标机、RTOS识别以及嵌入式连接等需求使得集成方案周期很长,难度大,而且不能被IDE制造商完全支持。另一些嵌入式软件公司选择编写或获取他们自己的IDE,而这样做又会导致私有接口,降低嵌入式供应商的核心竞争力,使支持更加困难。
要改变上述状况,就要采用一种开放源码IDE。尽管其源于并应用于企业领域,但由于具有灵活的技术和授权模式,因而能使嵌入式供应商创建用户友好的嵌入式工具。这种开放源码IDE名为Eclipse。在过去几年中,大部分嵌入式开发人员已经转向Eclipse作为他们选择的平台方案。大多数RTOS供应商拥有Eclipse开发环境,而且大多数芯片/内核供应商已经为那些希望开发自有架构的软件开发人员提供Eclipse链接。
从专有IDE向开放标准IDE转移的动力来自嵌入式软件开发人员和嵌入式供应商。嵌入式软件开发人员受挫于必须为每个芯片或每个RTOS改变开发环境,而嵌入式供应商也同样受挫于必须建立和维护IDE。Eclipse环境能提供与处理器架构、主机平台或嵌入式RTOS无关的标准接口。
Eclipse的出现在嵌入式领域中具有重要的意义,具体表现为:
1. 主机、语言和环境的独立性。大多数企业级开发工具都是专用于在某个平台上开发特定类型应用程序,通常要采用某种专用语言。而Eclipse是一种可满足多种开发需求的IDE,这也是它适合嵌入式开发的原因之一。Eclipse有此功能得益于插件概念。Eclipse平台本身不是专用于任何语言、主机或应用开发,但可通过满足特殊要求的插件工具实现专用开发。
2. 项目模板。尽管Eclipse框架不是专用于某类型的应用开发,但有很多开放源码Eclipse项目可提供很好的新产品开发切入点。这些项目利用Eclipse插件机制可进行特定应用程序开发。由于这些项目采用与Eclipse平台相同的开放源码授权方式,因此可以被下载,用作满足特殊应用要求的样例、模板或启动代码库。嵌入式样例请参考后文有关Eclipse项目的表述和图例。
3. Eclipse公共许可(EPL)。EPL允许商业公司出售集成了开放源码平台和项目的开发工具,而非暗示这些开发工具应免费提供。这意味在面临嵌入式开发需求的变化,以及嵌入式产业新技术快速发展时,那些需要不断完善和维护的复杂软件能通过销售而收回开发成本。
4. Eclipse的七大支柱。如上所述,由于企业级产品和嵌入式产品开发有所不同,因而企业级软件提供商很难支持嵌入式需求,产品也很难反映开发人员的需求。而Eclipse的情况则不然。目前,Eclipse基金会约三分之一的成员公司或是嵌入式公司,或是在积极地服务于嵌入式产业。其中包括RTOS公司、芯片公司和嵌入式工具提供商。
由于认识到嵌入式软件开发人员的需求对Eclipse基金会的重要性,嵌入式领域现已被公认为Eclipse基金会的七大支柱之一(如图1所示)。这七大支柱表明了使用Eclipse的关键应用类型。对嵌入式领域而言,关键项目中的可视性将确保这种技术能持续满足嵌入式需求。
图1:Eclipse平台的七大支柱。
Eclipse的架构被设计成可以接受任何数量的插件。插件可以是完整的环境、独立的应用程序或只是现有插件中的附加窗口。编写插件有严格的指南,以确保在不同应用中的一致性。另外还有向导、模板、菜单和例子等形式的帮助,以使实际的API部分更为简单明了。Eclipse框架和插件的GUI部分都是用Java语言编写的,而且Eclipse开发环境还提供了若干有用的工具套件。
Eclipse项目
开放源码组织正在Eclipse平台上开发大量的项目和子项目。这些项目满足软件开发的通用或特殊要求,并由这些特殊领域中拥有丰富经验的公司管理或领导。对于那些想要通过设计自己的商用(或免费)产品以补足其核心技术的公司,这些项目可用作样例或库。
C/C++ Dev工具(CDT项目)是许多基于Eclipse的嵌入式软件开发工具的基础。该项目采用Eclipse平台和相应的项目导航作为IDE,其内置的建立和生成GUI包括了GNU C/C++编译器,允许方便地连接到其它嵌入式交叉编译器。这个项目被用作标准Eclipse平台上的插件,因此其它工具易于插入,并形成完整的嵌入式系统开发环境,从而使许多构建和调试单元能够充分利用开放源码带来的好处。
图2:显示顶层项目的Eclipse机构,绿色部分与嵌入式开发的关系密切。
设备软件开发平台(DSDP)是相对较新的一个项目,该项目考虑了调试一个嵌入式系统的诸多方面。最初的DSDP专注于为目标管理
- 嵌入式软件设计中查找缺陷的几个技巧(03-06)
- 基于DSP的导弹仿真器嵌入式组件设计(04-30)
- 为嵌入式软件建立统一软件系统框架的方法详介(05-23)
- 在VIM中实现对嵌入式软件的调试(08-06)
- 基于开源软件的嵌入式网络打印服务器(11-05)
- GCC-维基百科(04-13)