基于ST20嵌入式系统的Java虚拟机研究与移植
发布时间:2008/5/27 0:00:00 访问次数:462
摘要:分析了开放源码的java虚拟机kaffe的结构、运行机制,并针对dvb(digitalvideobroadcast)数字机顶盒软件架构中对基于java虚拟机的mhp(multimediahomeplatform)中间件研发的需求,研究了将kaffe移植到sti5516处理器和其专用os20操作系统的关键技术,给出了相应的移植方案。对深入了解mhp在数字机顶盒中的应用给出了研究方向和基本思路。
关键词:嵌入式系统;java虚拟机;dvb;中间件
1 引言
随着现代信息技术的迅猛发展,电视数字化步伐加快了。从一开始的模拟电视到现在的数字电视,不仅大大提高了电视节目的质量,也推动了电视数字化的进一步发展。在各种数字视频广播标准中,欧洲的dvb(digital video broadcast)标准使用比较广泛,它为在同一信道中传输视频、音频、数据提供了一种灵活、高效的方式,可以通过卫星、电缆和地面信道传输高质量的电视节目。同时基于dvb的数据广播标准也能满足人们对于宽带数据业务的要求,如证券信息服务、电子节目、mp3音乐下载、电子邮件、网页浏览等,在现代信息技术领域应用极为广泛。
图一 数字机顶盒架构
从图一我们可以看到, 一个完整的数字机顶盒由硬件平台和软件系统组成,可以将其分为4层,从底向上分别为硬件、底层软件、中间件、应用软件。硬件提供机顶盒的硬件平台;底层软件提供操作系统内核以及各种硬件驱动程序;应用软件包括本机存储的应用和可下载的应用;中间件是一种将应用程序与底层的操作系统、硬件细节隔离开来,使应用不依赖于具体的硬件平台的软件环境。这样用户可以在任何厂家的硬件平台上进行应用软件开发,和应用软件下载。而不必介意任何底层的有关信息,保证了机顶盒的开发专业化。这种分层的思想在现代系统设计中十分常见,如大名鼎鼎的tcp/ip协议。中间件通常由各种虚拟机来构成,如html虚拟机、javascript虚拟机、java虚拟机[1]等。
现在广电行业倾向于dvb-mhp(多媒体家庭平台)中间件标准。dvb-mhp基于开放性的java程序语言,具有软硬件兼容性好、可移植成本低、二次再开发功能强等优点,是一种很有发展前途的中间件技术标准。可以相信,java在数字视频广播中的应用将越来越多,我们有必要研究java技术核心—虚拟机,包括其结构、运行机制及虚拟机移植到数字机顶盒平台的关键技术。本文面向采用st(意法半导体公司)sti5516芯片的数字机顶盒平台,将基于数字电视播放(digital video broadcast,dvb)的多媒体家庭平台(multimedia home platform,mhp)规范[2]进行中间件平台分析,重点研究开放源码的java虚拟机---kaffe在其中的作用和相关的移植技术。
2 平台介绍
name=ole_link2>2.1 硬件平台
数字机顶盒硬件平台基于st公司的芯片sti5516[3],sti5516芯片集成了cpu内核st20-c2、音/视频mpeg-2解码器、pal/ntsc/secam编码器等。开发板上有8mb的共享内存和16mb的外部内存,4mb的flash,并采用实时处理的嵌入式操作系统os20。
2.2 软件平台
一个典型的适用于嵌入式的java运行环境包括以下组件:
1.一个java虚拟机。用来将独立于平台的java字节码解释成目标机本地机器码,并执行动态类加载。这可以采取解释执行或实时编译执行(jit)的形式。两者的不同点就在于字节码的执行速度;因为jit避免了重复解释以前执行过的程序块。
2.一个标准java类库集,以字节码的形式存在。如果应用程序并不引用任何类库,那这些类库就并不一定要求存在。
3.任何类库或虚拟机所需的本地方法(jni)。这些函数是由其它高级语言所写,并和java虚拟机一起预编译,链接。这些函数被用来执行处理器相关或java无法直接实现的功能。
4.一个多任务操作系统,用来提供java线程及线程同步机制的底层实现。
5.一个垃圾回收线程。垃圾回收周期运行或当动态内存池不能满足分配请求时运行,用来申明那些已经被分配但不再被应用程序所使用的内存。
kaffe是一个完整的java实现,它由3部分组成:遵从 personal java1.1规范的 java类库[4],java1.1虚拟机和本地动态或静态链接库。kaffe虚拟机源码按以下子目录组织:
kaffe---包括了解释器与jit平台无关部分,以及垃圾回收,动态类加载和java runtime environment其它模块的源代码。
config---包括了解释器与jit平台相关部分。它按所支持的处理器来划分子目录,里面存放系统相关代码。
package---java类库以及任何它所依赖的本地方法。
include---在子目录中提供的本地方法的接口定义。这些
摘要:分析了开放源码的java虚拟机kaffe的结构、运行机制,并针对dvb(digitalvideobroadcast)数字机顶盒软件架构中对基于java虚拟机的mhp(multimediahomeplatform)中间件研发的需求,研究了将kaffe移植到sti5516处理器和其专用os20操作系统的关键技术,给出了相应的移植方案。对深入了解mhp在数字机顶盒中的应用给出了研究方向和基本思路。
关键词:嵌入式系统;java虚拟机;dvb;中间件
1 引言
随着现代信息技术的迅猛发展,电视数字化步伐加快了。从一开始的模拟电视到现在的数字电视,不仅大大提高了电视节目的质量,也推动了电视数字化的进一步发展。在各种数字视频广播标准中,欧洲的dvb(digital video broadcast)标准使用比较广泛,它为在同一信道中传输视频、音频、数据提供了一种灵活、高效的方式,可以通过卫星、电缆和地面信道传输高质量的电视节目。同时基于dvb的数据广播标准也能满足人们对于宽带数据业务的要求,如证券信息服务、电子节目、mp3音乐下载、电子邮件、网页浏览等,在现代信息技术领域应用极为广泛。
图一 数字机顶盒架构
从图一我们可以看到, 一个完整的数字机顶盒由硬件平台和软件系统组成,可以将其分为4层,从底向上分别为硬件、底层软件、中间件、应用软件。硬件提供机顶盒的硬件平台;底层软件提供操作系统内核以及各种硬件驱动程序;应用软件包括本机存储的应用和可下载的应用;中间件是一种将应用程序与底层的操作系统、硬件细节隔离开来,使应用不依赖于具体的硬件平台的软件环境。这样用户可以在任何厂家的硬件平台上进行应用软件开发,和应用软件下载。而不必介意任何底层的有关信息,保证了机顶盒的开发专业化。这种分层的思想在现代系统设计中十分常见,如大名鼎鼎的tcp/ip协议。中间件通常由各种虚拟机来构成,如html虚拟机、javascript虚拟机、java虚拟机[1]等。
现在广电行业倾向于dvb-mhp(多媒体家庭平台)中间件标准。dvb-mhp基于开放性的java程序语言,具有软硬件兼容性好、可移植成本低、二次再开发功能强等优点,是一种很有发展前途的中间件技术标准。可以相信,java在数字视频广播中的应用将越来越多,我们有必要研究java技术核心—虚拟机,包括其结构、运行机制及虚拟机移植到数字机顶盒平台的关键技术。本文面向采用st(意法半导体公司)sti5516芯片的数字机顶盒平台,将基于数字电视播放(digital video broadcast,dvb)的多媒体家庭平台(multimedia home platform,mhp)规范[2]进行中间件平台分析,重点研究开放源码的java虚拟机---kaffe在其中的作用和相关的移植技术。
2 平台介绍
name=ole_link2>2.1 硬件平台
数字机顶盒硬件平台基于st公司的芯片sti5516[3],sti5516芯片集成了cpu内核st20-c2、音/视频mpeg-2解码器、pal/ntsc/secam编码器等。开发板上有8mb的共享内存和16mb的外部内存,4mb的flash,并采用实时处理的嵌入式操作系统os20。
2.2 软件平台
一个典型的适用于嵌入式的java运行环境包括以下组件:
1.一个java虚拟机。用来将独立于平台的java字节码解释成目标机本地机器码,并执行动态类加载。这可以采取解释执行或实时编译执行(jit)的形式。两者的不同点就在于字节码的执行速度;因为jit避免了重复解释以前执行过的程序块。
2.一个标准java类库集,以字节码的形式存在。如果应用程序并不引用任何类库,那这些类库就并不一定要求存在。
3.任何类库或虚拟机所需的本地方法(jni)。这些函数是由其它高级语言所写,并和java虚拟机一起预编译,链接。这些函数被用来执行处理器相关或java无法直接实现的功能。
4.一个多任务操作系统,用来提供java线程及线程同步机制的底层实现。
5.一个垃圾回收线程。垃圾回收周期运行或当动态内存池不能满足分配请求时运行,用来申明那些已经被分配但不再被应用程序所使用的内存。
kaffe是一个完整的java实现,它由3部分组成:遵从 personal java1.1规范的 java类库[4],java1.1虚拟机和本地动态或静态链接库。kaffe虚拟机源码按以下子目录组织:
kaffe---包括了解释器与jit平台无关部分,以及垃圾回收,动态类加载和java runtime environment其它模块的源代码。
config---包括了解释器与jit平台相关部分。它按所支持的处理器来划分子目录,里面存放系统相关代码。
package---java类库以及任何它所依赖的本地方法。
include---在子目录中提供的本地方法的接口定义。这些