Java机顶盒移植

来源:互联网 发布:撤销已备案域名 编辑:程序博客网 时间:2024/04/29 09:23

CVM是一种编程平台,由步步高教育电子产品有限公司开发,起初支持的机型是9188,9288,9288T,目前被移植到了步步高的彩屏机9388,9588,9688上,具有比步步高开发的BBASIC编程平台更快的速度,由于C语言要比BASIC更难,所以步步高把BB作为基础入门,目前并没有对CVM进行公开发布,是因为有较多BUG,在步步高教育电子产品有限公司的论坛的编程区可以见到
CVM是C Virtual Machine的简称,是可以开发BBK电子词典程序的一种语言。这个语言采用C语言的语法,方便朋友们开发程序。目前的编译器和连接器版本是1.0,大部分的功能已经支持,基本可以满足用户朋友开发程序的需要。
和标准C相比较,CVM大部分的语法是一样的,支持小部分标准C函数,加入适合编写游戏函数。有C编程经验的朋友使用CVM将非常容易上手。
由于我们的词典用户,多数都是未接触过编程的学生朋友,为了很好的锻炼大家的逻辑思维能力,可以让大家能轻松体会编程的乐趣,我们公司组织专人开发了C Virtual Machine这种可以开发在词典上运行的程序的编程语言。目前必须在电脑上编程,生成的最终.cvm文件可以在词典机上运行。
回答者: songzilong85 - 同进士出身 七级   9-22 13:09
意法半导体推出了一款高度优化的 JavaTM虚拟机 (JVMTM) ST20 J-Engine,该产品是针对ST20 CPU开发设计的 , 基于“Sun Java 互联设备配置 HotSpotTM 实施” 软件。 ST20 CPU嵌入在ST的系统芯片内,到目前已经销售了2亿件,是机顶盒市场上应用最广泛的CPU。

Java技术正出现在越来越多的消费类媒体平台内,从数字视频广播的多媒体家庭平台(DVB-MHP)和CableLab的OpenCable 应用平台(OCAP) 规范,到IP机顶盒和蓝光媒体播放器,都能看到Java技术的影子。专门为STi5100和 STi5105 机顶盒解码器开发设计,ST20 J-Engine 为机顶盒厂商、中间件厂商和第三方软件开发商加快现有的基于Java 技术的解决方案和新的增值产品开发提供了一个现成的解决方案。

作为ST和Sun 微系统公司密切合作的成果, ST20 J-Engine通过了TCK (技术兼容性套件)验证,并成功通过了Sun的全部质保测试,确保软件从第一次发布起就可立即投产。

“我们十分高兴Sun和ST 密切合作实现了一个高稳定性、高性能的JVM软件,” Sun微系统公司移动嵌入产品商业及市场部总监Eric Chu表示,“这项技术的即时可用性将会促进Java 技术在消费类电子产品市场取得的成功。”

ST20 J-Engine套装软件包括全套的Personal Basis Profile和Foundation Profile 技术实施工具以及 Sun Java CDC Hotspot 实施软件。这套实施软件运行在 OS20 操作系统环境下,与ST的STAPI驱动器套件实现了全面集成。软件包中的插件允许Eclipse Java 开发环境对运行在目标系统上采用Java编程语言编写的应用程序进行调试。

 

 

(摘自http://www.ednchina.com)

参考资料:摘自http://www.ednchina.com)
回答者: 3_6班的 - 初学弟子 一级   9-22 13:10
对于大多数开发语言,需要编译或解释。但是Java语言与那些需要编译或解释的语言比起来较特殊。通过编译器, 首先程序被翻译为一种称为Java bytecode的中间语言,一种在Java平台上被解释器解释的平**立代码。解释器解释计算机上所有的Java bytecode指令。一旦编译完成,在程序每次执行时,系统都会发生一次解释过程。图3演示了该过程。

 

每个Java解释器,不管是一个开发工具或者是一个运行applet小程序的web浏览器,都是Java虚拟机的实现形式。Java bytecodes 使得“一次编写,随处运行”这种时髦观点成为可能。bytecodes 能够运行在任何一种Java虚拟机形式上,这就意味着只要计算机上安装有Java虚拟机, 那么同样的一个Java程序可以运行在 Windows 2000系统、 Solaris 工作站或者一个Mac系统上。

 

1.2 Java平台

 

一个平台是程序运行的硬件或者软件环境。刚才已经提到了一些比较流行的平台,如Windows 2000、 Linux、Solaris和Mac OS。大多数平台可以认为是硬件和操作系统的联合体。 Java与其他平台不同,因为它只是一个运行在其他硬件平台基础上的软件平台。Java平台有两个组件:JavaVM和JavaAPI。

 

1.3 J2ME平台

 

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

 

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

 

2 移植与实现过程

 

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

 

2.1方案

 

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

 

2.2 方案的实现

 

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

 

2.2.1 环境搭建

 

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

 

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

 

2.2.2 代码调试

 

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

 

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

 

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

 

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

 

2.2.3 测试与运行结果

 

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

 

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

 

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

 

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

 

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

原创粉丝点击