微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 基于数字电视机顶盒的Java虚拟机的移植

基于数字电视机顶盒的Java虚拟机的移植

时间:08-30 来源:互联网 点击:
3.3 J2ME平台

Java发展至今已推广到各种平台,针对不同应用平台SUN公司开发了四个版本的Java运行环境,其中如PDA、STB这样的硬件运算能力不高且存储有限的各式消费性电子产品专门提出了J2ME版本。

J2ME定义了一套Java的运行环境和开发环境,它包含安装在各类消费性电子设备中的Java虚拟机和特别为了各类消费性电子设备中的核心类库。而J2ME的主要应用则可以分为两大类:个人移动设备和共享固定设备。前者在Configuration层使用CLDC,其所应用的终端设备包括移动电话等,在人机接口上比较精简且内存需求较小。后者在Configuration层使用CDC,如车用导航、娱乐设备、数字电视机顶盒等。图5为J2ME平台结构。


  
图5 J2ME平台结构

4 移植与实现过程

笔者所做的工作就是将JavaVM的CDC&Foundation移植到前述框图所描述的数字电视机顶盒上,见图6。


  
图6 移植方案

4.1 方案

我国的数字电视中间件标准明确指出中间件系统要采用Java虚拟机,提供Java应用程序标准接口,使用Java语言编写交互式应用程序。根据该标准,结合有线电视机顶盒的硬件环境和操作系统等特征,提出了基于有线电视机顶盒的数字电视中间件的实现方案。

4.2 方案的实现

采用SUN公司在其主页上公布的免费的Java虚拟机软件实现代码,经过各方面的修改移植到现有的数字电视机顶盒上。

4.2.1 环境搭建

(1)通过修改源码中的build目录下的相关make文件,使得虚拟机源代码的运行环境得以正确搭建在机顶盒上,为下一步的代码调试奠定基础。主要表现在编译器名称以及路径、文件后缀名和JDK工具包路径。为了减少初期移植工作的难度,相应地简化修改了一些生成Java虚拟机可执行代码的选项。

(2)根据现有数字电视机顶盒具体的硬件配置,主要根据flash的大小修改了相应的硬件配置文件。

4.2.2 代码调试

在正确搭建了编译调试环境后,做代码的调试。主要有以下几个方面的修改和代码重写:

(1)与操作系统相关的修改。数字电视机顶盒采用ST公司提供的嵌入式实时操作系统OS20,而源代码中是基于Linux操作系统。修改关于task结构的定义和使用。另外在OS20操作系统内核代码中的关于支持可变参数的定义也与Linux中的不同,也要做相应修改。

(2)与CPU有关的修改。主要是将源代码中用X86汇编指令写的汇编文件CVMjniInvokeNative.S用自行设计的C2汇编指令实现。由于ST20-C2提供的寄存器较少,在实现中采用了局部变量完成数据的存储和传递。

(3)调试中的简化修改。屏蔽了多线程,给调试带来了莫大的方便。去掉动态加载功能,使需要使用的类都是预先编译并被本地化成romJava.c。

4.2.3 测试与运行结果

JavaVM实际上是系统的一个进程,系统会像对待普通进程一样,为它分配必要资源,包括进程优先级、系统需要的内存空间等。JavaVM作为系统的进程,将依照自己优先级,参与系统的进程调度。JavaVM系统与其它进程一起,共享包括处理器资源在内的系统资源。为此,笔者在main()函数中创建一个任务来启动javavm这个任务。将整个修改好的源代码在新的编译环境下编译连接成可执行代码,通过JTAG口下载到机顶盒目标板中运行。

Java虚拟机的“输入”是“hello.java”,经过Javac编译后生成类文件“hello.class”。如果代码调试成功就应该在显示终端打出“helloworld”字样,这是Java虚拟机解释字节码的结果。说明基于CDC&Foudation配置的Java虚拟机移植成功。

本论文提出的在有线数字电视机顶盒环境中实现数字电视中间件的方案采用Java技术作为核心,充分体现了Java技术的优点,使交互式电视的应用开发更加简捷方便。该方案实现了Java平台(CDC)的基本功能,为进一步研究和实现Java应用程序标准接口提供了软件平台。

当然目前的这个CDC实现还存在部分问题,需要进一步改进以提高其稳定性,在此基础上,可以增加个人简表和JavaTVAPI为Java应用程序的开发提供完整的环境。

以上介绍了嵌入式中间件JavaVM的基本概念及其抽象模型,给出了它在数字电视机顶盒的移植与实现。通过嵌入式中间件JavaVM,使不同平台之间的应用程序代码快速移植成为可能。嵌入式中间件可以适用于不同软硬件平台;能够独立于平台和处理器,能移植于不同操作系统与不同微处理器体系结构,从而使上层的应用程序移植性更强。我们相信,嵌入式中间件的广泛使用将使嵌入式应用也能像Java语言一样,可在各式各样机器、操作平台的环境中开发应用软件——“一次编译,到处运行”。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top