嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统在日常生活中越来越扮演重要的作用。同时由于嵌入式系统在成本、开发周期、维护难易程度等方面的优势,越来越多的终端设备采用嵌入式系统。
Java分为三个版本,Java EE(J2EE),Java SE(J2SE)和针对嵌入式平台的Java ME(J2ME)。手机的普及,使得J2ME得到了重视和长足的发展,越来越多的终端设备厂商和方案提供商也开始关注使用Java来开发终端设备。
Java的特点能够大大缩短设备的开发调试周期、降低维护成本,特别是在针对行业提供不同规格不同等级的产品时,几乎可以不修改代码,即可完成对界面、功能、技术指标等的调整。
嵌入式Java的开发环境
嵌入式软件开发需要解决的首要难题是开发工具,编译器,调试工具几乎都是自成体系。嵌入式软件开发者在开发过程中,往往需要同时打开多个工具配合使用。如果开发嵌入式Java程序,则情况更为复杂,目前市面上的嵌入式Java编译器和仿真器都是由手机厂商各自开发,没有统一的标准,而Sun公司提供的嵌入式Java编译器和仿真器的功能又过于简单,难于胜任更复杂的终端应用。
要凸显Java的优势,加快开发和调试速度,直到最终生成目标机代码,必须依赖于一整套开发基于嵌入式Java终端的开发平台。参看图1。
Java的“一次编写,到处执行”在开发过程中同样能够带来很大方便,即可以在PC机上进行仿真,调试完成后再编译成目标机代码,下载到目标机上运行,这可大大缩短开发时间,而且Java的这种仿真效果比PC的仿真效果要真实得多。
要实现这个功能,就必须要求开发平台具有仿真调试环境,并且IDE能提供相关的支持。IDE也应是集工程管理、代码编写、程序调试、目标代码生成等功能于一体,才能满足开发人员的需要。
基于嵌入式Java的终端开发平台
科银京成运用自身在嵌入式实时操作系统DeltaOS、嵌入式Java虚拟机和嵌入式软件平台LambdaPro的优势,将三者有机结合,并针对终端设备领域开发了图形库、文件操作库、嵌入式数据库、导航框架等API和必要的辅助工具支持,形成了一套基于嵌入式Java的终端设备开发平台?DLambdaPro-J。可参看下页图2。
IDE
嵌入式软件应用的开发,离不开与硬件以及底层操作系统打交道。那么,为了在嵌入式Java中能够访问到硬件及底层操作系统,不得不改用Java语言中提供的本地接口,即从嵌入式Java中利用能够访问到硬件驱动的C语言函数来实行交叉编程。
这就意味着开发人员需要具备多语言以及多层次的混合编程和混合调试能力。同时需要熟悉和掌握多个IDE环境,那么提供多语言多层次混合编程的IDE无疑有助于一般开发人员完成这一复杂课题。
LambdaPro-J提供以Eclipse为基础框架,集成了嵌入式Java开发环境及嵌入式C语言开发环境的多功能IDE。LambdaPro-J目前支持嵌入式Java应用及配套Java组件的开发,支持WINDOWS仿真环境与DeltaOS目标环境。
调试
Java语言应用于嵌入式软件开发中,利用Java语言与软硬件平台无关的特性,可极大缓解调试繁琐性。整个Java程序的开发和调试都可在Windows仿真环境下完成,最终将Java字节码文件放到目标平台上运行即可。
这种方式相对于直接在目标机上开发更加快捷和方便。作为嵌入式Java开发平台,LambdaPro-J提供了适应多种终端设备的Windows仿真运行环境。同时也支持在目标环境下调试Java程序,但是相对仿真环境速度会慢很多。
有些嵌入式Java应用并不完全由Java语言构成,还需通过本地接口去访问一些C语言函数来配合完成,那么IDE就必须具备调试C语言的能力。不同于Java语言,C语言和具体软硬件平台息息相关。在Windows环境下支持调试C程序的IDE有很多,LambdaPro-J也集成了这一功能。
C程序的调试在目标板环境下通过交叉调试的方式来完成。交叉调试环境由宿主机和目标机组成,二者在物理连接的基础上建立起逻辑连接。调试器运行在宿主机上,通过调试代理与目标机进行连接,完成程序下载,调试控制等功能。
有时开发人员为了更细致的跟踪整个程序执行的流程,对Java程序与本地接口不得不进行交互的调试。这也意味着开发人员在跟踪调试Java本地接口时,就像在跟踪一个普通的方法调用,不过这个方法是由C语言编写。LambdaPro-J有效地结合了Java调试和C调试的特点,让整个程序的执行流程,都在程序员的掌握之中。
配置
面对嵌入式行业千变的定制需求,如果每一款终端产品都要重新开发,无疑造成产品研发周期长、稳定性差、跟不上市场变化而最终被淘汰。如果开发人员仅需在IDE界面中配置相关模块,就能完成绝大部分定制工作,那么就可缩短研发周期,为产品快速成型、投放市场抢占先机。
基于Java的嵌入式终端设备开发平台涉及到的方面有:Java-Option-Package,Java虚拟机,OS,HardWare。针对以上涉及的方面,LambdaPro-J提供了极高的可配置性。
利用Java语言高度可重用性的优势,将一系列类似功能收集在一起形成了适用于嵌入式Java的组件作为Java-Option-Package。使用LambdaPro-J开发一个嵌入式Java应用时,将相关功能的Java组件配置到应用项目中,让应用的编写越来越简单。为了提高Java组件的适用性,Java组件也具备对可变属性的配置功能。
Java虚拟机涉及到一些运行时动态设置的参数;嵌入式OS涉及到操作系统内核、网络、GUI等。目前支持DeltaOS操作系统的相关配置。
目标机即当前应用所运行的目标环境,涉及CPU、外设、控制台和内存。CPU主要涉及CPU类型、大小端、软硬浮点;外设配置的引入,使可开发人员面对目标机多变的外围设备方便地配置自己需要的设备;同时完成一些必要的可变属性配置去适应不同的目标环境。控制台针对程序输入输出进行重定向;在嵌入式领域,内存一直是个受限的设备。合理的使用可让程序在有限的空间中完成无限的需求。通过界面化的配置,让开发人员对目标环境下的内存使用一目了然。
和传统嵌入式软件开发相比,基于LambdaPro-J的软件开发通过对现有组件的构建和组装实现软件功能,用户还可以自定义组件,方便代码和模块的复用。该平台在架构上保证为平台进行的组件扩展可自动在后续的任何应用中进行复用。该终端平台是具有高成长特性的开发平台,基于平台构建的应用越多,为平台提供的组件越多,就越具有灵活性和可用性。