首页> 中国专利> 一种Java Processor启动时类装载方法

一种Java Processor启动时类装载方法

摘要

本发明公开了一种Java Processor启动时类装载方法,其步骤为:1)芯片初始化;2)启动字节码读取单元;3)选择并设置类装载路径;4)装载用户类装载器;5)装载操作系统。该方法参考通用PC中的BIOS技术思想设计,芯片生产时,将启动模块代码固化在芯片内部,系统启动时自动运行该部分代码,实现外围设备初始化的功能外,同时构建Java虚拟机系统类装载器,以及从外围存储设备或网络环境中装载以字节码文件存储的Java嵌入式操作系统或Java应用程序。本发明使得基于Java Processor的Java应用程序开发过程与其他嵌入式Java应用程序趋于相同,为芯片使用者和软件开发者提供便利,同时使得所有遵循Java规范的Java字节码文件都能在芯片上运行,提高系统通用性和发挥Java技术可移植性。

著录项

  • 公开/公告号CN101013377A

    专利类型发明专利

  • 公开/公告日2007-08-08

    原文格式PDF

  • 申请/专利权人 中山大学;

    申请/专利号CN200710026261.0

  • 发明设计人 谭洪舟;王华宁;房树磊;

    申请日2007-01-12

  • 分类号G06F9/445(20060101);

  • 代理机构44229 广州市深研专利事务所;

  • 代理人陈雅平

  • 地址 510275 广东省广州市新港西路135号

  • 入库时间 2023-12-17 18:59:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-03-02

    未缴年费专利权终止 IPC(主分类):G06F9/445 授权公告日:20090304 终止日期:20150112 申请日:20070112

    专利权的终止

  • 2009-03-04

    授权

    授权

  • 2007-10-03

    实质审查的生效

    实质审查的生效

  • 2007-08-08

    公开

    公开

说明书

技术领域

本发明属于嵌入式处理器设计领域,具体来说,涉及一种JavaProcessor启动时类装载方法。

背景技术

目前在Java Processor里的类装载功能主要是在开发主机中通过软件模拟实现,在开发主机中运行软件,根据编译后的Java字节码文件,进行类型验证,分配内存,符号解析,初始化变量等类装载操作,生成一个Java程序执行时内存镜像文件,然后将镜像文件下载到系统存储器中,直接运行。

这种方法使用开发主机实现了一部分Java程序运行的过程,与Java标准规法不兼容,使得Java软件开发过程变得繁琐,除了必须运行常规的Java编译程序将Java高级语言源代码编译成字节码文件之外,还必须进行一个“二次编译”的过程生成执行时内存镜像文件。这种方法生成的镜像文件不能移植到其他Java平台使用,以及“二次编译”软件对平台的依赖性,显著的削弱了Java技术的可移植性。

发明内容

为了克服以上的不足,本发明提出了一种Java Processor启动时类装载方法。它的主要步骤包括:1)芯片初始化;2)启动字节码读取单元;3)选择并设置类装载路径;4)装载用户类装载器;5)装载操作系统。

所述该方法参考通用PC中的BIOS设计思想,在芯片生产时,将启动模块代码固化在芯片内部。

所述步骤1)芯片初始化过程中,将启动模块中的初始化程序代码也作为一段微码子程序存储在片上ROM中,启动时直接执行该段代码,以进行初始化工作,如检测内存,初始化串口,网络等工作,同时为I/O操作提供简单的系统调用,为之后字节码的读取和运行做准备。

所述步骤3)中系统类装载器以软件实现,程序代码同样固化在芯片内部的片上ROM。

所述步骤4)中用户类装载器也是作为一个类被装载到系统中,并且是必须的。

所述步骤5)中操作系统是一个由Java语言开发的小型操作系统,其核心的装载将由系统类装载器和用户类装载器进行。

所述启动模块固件不能像其他Java程序那样使用类来组织数据和代码,其具体实现方式有以下三种:

1)用自定义的微码指令实现,微码指令功能简单,易于开发,但并未形成标准,仅适合于启动时较为简单的需求;

2)使用没有形成类结构的Java字节码指令实现,可以实现较为强大的功能,由于Java字节码指令比较复杂,并且该部分程序代码没有形成类结构,不能使用Java高级语言编写,缺少开发环境,技术难度比较大;

3)以上两种方式的结合,在简单的初始化阶段运行微码指令,在复杂的类装载器实现和装载字节码文件阶段使用Java字节码指令。

本发明的有益效果:

1、使得基于Java Processor的Java应用程序的开发过程与其他嵌入式Java应用程序的开发过程趋于相同,为芯片使用者和软件开发者提供便利。

2、使得所有遵循Java规范的Java字节码文件都能在芯片上运行,提高系统的通用性和发挥Java技术的可移植性。

附图说明

图1为Java processor的启动流程图。

具体实施方式

下面结合附图对本发明进行进一步阐述。

如图1所示,一种Java Processor启动时类装载方法,它的主要步骤包括:1)芯片初始化;2)启动字节码读取单元;3)选择并设置类装载路径;4)装载用户类装载器;5)装载操作系统。

该方法参考通用PC中的BIOS设计思想,在芯片生产时,将启动模块代码固化在芯片内部,在系统启动时自动运行该部分代码,除了实现外围设备初始化的功能外,同时构建Java虚拟机的系统类装载器,以及从外围存储设备或网络环境中装载以字节码文件存储的Java嵌入式操作系统或者Java应用程序。

各步骤具体说明:

1、芯片初始化

Java processor在执行Java字节码指令时需要将其翻译成微码子程序来运行,因此在处理器内部有一个片上ROM来存储微码子程序。每一条可实现的字节码指令都对应一段微码子程序。本技术利用这一机制,将启动模块中的初始化程序代码也作为一段微码子程序存储在片上ROM中,启动时直接执行该段代码,以进行初始化工作,如检测内存,初始化串口,网络等工作,同时为I/O操作提供简单的系统调用,为之后字节码的读取和运行做准备。

2、启动字节码读取单元

Java process处理器的指令执行过程分成4步进行:取字节码,取微码,译码,执行。

在芯片初始化过程中,字节码读取单元没有启动,因此“取字节码”这一步并没有也没必要进行,处理器直接在片上ROM中读取以微码形式存储的初始化程序代码,然后执行。

初始化过程结束后,为了能够执行Java字节码指令,处理器必须启动字节码读取单元,该动作由初始化程序代码的最后两条指令触发,第一条指令将启动字节码读取单元,使得“取字节码”这一步流程加入到执行过程中,等待第一条字节码指令成功读取后,最后一条微码指令根据字节码指令的内容,跳转到对应的微码子程序段执行。

3、选择并设置类装载路径

该步骤的执行核心是系统类装载器。Java程序以类的形式组织,因此用户必须为系统提供类装载路径,系统根据用户的选择将可从串口,Flash存储器,或者网络获取字节码文件,并对其进行解析进而运行应用程序。这个过程必须由类装载器实现。而根据Java虚拟机规范,最初始化的类装载器,即系统类装载器必须由虚拟机自己本身实现。由系统类装载器可以装载其他由用户自定义类装载器,进而实现更强大的类装载功能。

系统类装载器以软件实现,程序代码同样固化在芯片内部的片上ROM。

运行系统类装载器的时机有两个:

其一,在字节码读取单元启动之前运行。

因为此时字节码读取单元尚未启动,处理器只能执行微码指令,所以只能以微码指令实现系统类装载器,由于微码指令功能简单,不具备通用性,所以这样实现的类装载器开发过程比较复杂,但运行效率较高。

其二,在字节码读取单元启动之后进行。

字节码读取单元启动之后,处理器能够执行的Java字节码指令必须是已经在内存中平坦存储的,而不能执行Java class文件中具有类结构的字节码,Java class字节码文件是由Java编译器以类为单位编译后的字节码文件。其中除了包含字节码指令之外,还包含了其他与类组织相关的信息,如类属性,常数池,可访问标记等。以访问内存时的地址为例,此时字节码指令中的地址必须是明确的物理地址,而Java class文件中字节码指令的地址是以符号链接的形式存储的。要执行这些Java虚拟机规范中指定的具有类结构的字节码,必须先实现系统类装载器,用于解析Java class文件。通常的解析过程非常复杂,因此,在字节码读取单元启动之后进行该步骤,可利用已经可以运行的的平坦Java字节码指令来实现系统类装载器。字节码指令的功能复杂丰富,使得该部分程序开发容易简单,也易于该模块的修改升级。

4、装载用户类装载器

对于Java虚拟机或者Java processor而言,用户类装载器也是作为一个类被系统类装载器装载到系统中。相比起系统类装载器,用户类装载器可提供更强大的类装载功能。Java虚拟机规范中,实现系统类装载器时允许选择是否提供用户类装载功能,对于绝大多数的嵌入式Java应用程序,系统类装载器提供的装载功能已经足够,但是为了实现Java操作系统,在Java processor中,提供用户类装载功能是有必要的。

用户类装载器在PC机上使用Java高级语言开发,编译成Java class文件后,由Java process中的系统类装载器模块装载到系统中。

5、装载操作系统

鉴于越来越复杂的嵌入式应用,系统将提供一个由Java语言开发的小型操作系统,以简化应用程序的开发过程,可缩短产品周期。和普通Java应用程序一样,操作系统核心的装载将由系统类装载器和用户类装载器进行。

由于启动时,系统还不具有类装载器,所以启动模块固件1-3步不能像其他Java程序那样使用类来组织数据和代码。具体实现方式有以下三种:

1.使用微码指令实现,微码指令功能简单,易于开发,适合于启动时较为简单的需求。

2.使用没有形成类结构的Java字节码指令实现,可以实现较为强大的功能。由于Java字节码指令比较复杂,并且该部分程序代码没有形成类结构,不能使用Java高级语言编写,缺少开发环境,技术难度比较大。

3.以上两种方式的结合,在简单的初始化阶段运行微码指令,在复杂的构建类装载器和装载字节码文件阶段使用Java字节码指令。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号