CN100465894C - 一种Java Processor启动时类装载方法 - Google Patents

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

Info

Publication number
CN100465894C
CN100465894C CNB2007100262610A CN200710026261A CN100465894C CN 100465894 C CN100465894 C CN 100465894C CN B2007100262610 A CNB2007100262610 A CN B2007100262610A CN 200710026261 A CN200710026261 A CN 200710026261A CN 100465894 C CN100465894 C CN 100465894C
Authority
CN
China
Prior art keywords
class
java
code
loading bin
loading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2007100262610A
Other languages
English (en)
Other versions
CN101013377A (zh
Inventor
谭洪舟
黄以华
王华宁
房树磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Yat Sen University
National Sun Yat Sen University
Original Assignee
National Sun Yat Sen University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Sun Yat Sen University filed Critical National Sun Yat Sen University
Priority to CNB2007100262610A priority Critical patent/CN100465894C/zh
Publication of CN101013377A publication Critical patent/CN101013377A/zh
Application granted granted Critical
Publication of CN100465894C publication Critical patent/CN100465894C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

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

Description

一种Java Processor启动时类装载方法
技术领域
本发明属于嵌入式处理器设计领域,具体来说,涉及一种JavaProcessor启动时类装载方法。
背景技术
目前在Java Processor里的类装载功能主要是在开发主机中通过软件模拟实现,在开发主机中运行软件,根据编译后的Java字节码文件,进行类型验证,分配内存,符号解析,初始化变量等类装载操作,生成一个Java程序执行时内存镜像文件,然后将镜像文件下载到系统存储器中,直接运行。
这种方法使用开发主机实现了一部分Java程序运行的过程,与Java标准规法不兼容,使得Java软件开发过程变得繁琐,除了必须运行常规的Java编译程序将Java高级语言源代码编译成字节码文件之外,还必须进行一个“二次编译”的过程生成执行时内存镜像文件。这种方法生成的镜像文件不能移植到其他Java平台使用,以及“二次编译”软件对平台的依赖性,显著的削弱了Java技术的可移植性。
发明内容
为了克服以上的不足,本发明提出了一种Java Processor启动时类装载方法。它的步骤包括:1)芯片执行存储于片上ROM中的初始化程序,进行初始化;2)启动字节码读取单元;3)选择并设置类装载路径并装载系统类;4)装载用户自定义的装载器;5)装载以Java语言编写的小型操作系统。
所述方法参考通用PC中的BIOS设计思想,在芯片生产时,将步骤1)中的初始化程序固化在芯片内部。
所述步骤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字节码指令。

Claims (7)

1、一种Java Processor启动时类装载方法,它的步骤包括:1)芯片执行存储于片上ROM中的启动模块里的初始化程序,进行硬件初始化;2)启动模块继续执行,启动字节码读取单元;3)启动模块读取用户输入,设置类装载路径并装载系统类,在内存中创建系统类装载器并将其启动;4)系统类装载器负责装载用户类装载器;5)系统类装载器和用户类装载器负责装载以Java语言编写的小型操作系统,其特征在于,在芯片生产时,将启动模块代码固化在片上ROM中,启动代码执行时,允许用户设置类装载路径。
2、根据权利要求1所述的Java Processor启动时类装载方法,其特征在于所述方法参考通用PC中的BIOS设计思想,在芯片生产时,将步骤1)中的启动模块固化在芯片内部。
3、根据权利要求1所述的Java Processor启动时类装载方法,其特征在于所述步骤1)芯片初始化过程中,将启动模块中的初始化程序代码作为一段微码子程序存储在片上ROM中,启动时直接执行该段代码,以进行初始化工作,启动模块同时也提供用于I/O操作的微码子程序,为之后字节码的读取和运行做准备。
4、根据权利要求1所述的Java Processor启动时类装载方法,其特征在于所述步骤3)中系统类装载器以软件实现,程序代码同样固化在芯片内部的片上ROM。
5、根据权利要求1所述的Java Processor启动时类装载方法,其特征在于所述步骤4)中用户类装载器是作为一个类被装载到系统中,并且是必须的。
6、根据权利要求1所述的Java Processor启动时类装载方法,其特征在于所述步骤5)中操作系统是一个由Java语言开发的小型操作系统,其核心的装载将由系统类装载器和用户类装载器进行。
7、根据权利要求2所述的Java Processor启动时类装载方法,其特征在于所述启动模块固件不能像普通Java字节码程序那样使用类来组织数据和代码,其具体实现方式有以下三种:
1)用微码指令实现;
2)使用没有形成类结构的Java字节码指令实现
3)以上两种方式的结合,在芯片初始化阶段运行微码指令,在构建类装载器和装载字节码文件阶段使用Java字节码指令。
CNB2007100262610A 2007-01-12 2007-01-12 一种Java Processor启动时类装载方法 Expired - Fee Related CN100465894C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007100262610A CN100465894C (zh) 2007-01-12 2007-01-12 一种Java Processor启动时类装载方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007100262610A CN100465894C (zh) 2007-01-12 2007-01-12 一种Java Processor启动时类装载方法

Publications (2)

Publication Number Publication Date
CN101013377A CN101013377A (zh) 2007-08-08
CN100465894C true CN100465894C (zh) 2009-03-04

Family

ID=38700910

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100262610A Expired - Fee Related CN100465894C (zh) 2007-01-12 2007-01-12 一种Java Processor启动时类装载方法

Country Status (1)

Country Link
CN (1) CN100465894C (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101763273B (zh) * 2008-12-26 2014-08-13 上海闻泰电子科技有限公司 一种在嵌入式系统的扩展存储器中动态装入代码的方法
US10482221B2 (en) * 2015-03-02 2019-11-19 Inventio Ag Protecting a computer program against reverse engineering
CN106897638B (zh) * 2015-12-21 2020-11-24 扬智科技股份有限公司 芯片制造方法及其芯片
CN106648681A (zh) * 2016-12-29 2017-05-10 南京科远自动化集团股份有限公司 一种可编程语言编译装载系统及方法
CN113010179B (zh) * 2021-02-23 2024-03-15 深圳市广和通无线股份有限公司 基于实时操作系统的独立应用的运行方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040168163A1 (en) * 2003-02-07 2004-08-26 Samsung Electronics Co., Ltd. System and method for shortening class loading process in Java program
CN1641571A (zh) * 2004-01-14 2005-07-20 三星电子株式会社 用于增加爪哇程序处理能力的系统和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040168163A1 (en) * 2003-02-07 2004-08-26 Samsung Electronics Co., Ltd. System and method for shortening class loading process in Java program
CN1641571A (zh) * 2004-01-14 2005-07-20 三星电子株式会社 用于增加爪哇程序处理能力的系统和方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Java 处理器技术. 傅勇.小型微型计算机系统,第23卷第3期. 2002
Java 处理器技术. 傅勇.小型微型计算机系统,第23卷第3期. 2002 *
Java虚拟机中类装载机制的原理分析与应用研究. 李超,方潜生.安徽建筑工业学院学报( 自然科学版),第13卷第3期. 2005
Java虚拟机中类装载机制的原理分析与应用研究. 李超,方潜生.安徽建筑工业学院学报( 自然科学版),第13卷第3期. 2005 *
一种新体系结构、带Java 功能的32 位嵌入式微处理器设计. 徐科,忻凌,朱柯嘉,闵昊.小型微型计算机系统,第26卷第1期. 2005
一种新体系结构、带Java 功能的32 位嵌入式微处理器设计. 徐科,忻凌,朱柯嘉,闵昊.小型微型计算机系统,第26卷第1期. 2005 *

Also Published As

Publication number Publication date
CN101013377A (zh) 2007-08-08

Similar Documents

Publication Publication Date Title
CN100377085C (zh) 嵌入式操作系统硬件镜像启动优化的实现方法
CN101763279B (zh) 一种BootLoader架构设计方法
Von Hagen The definitive guide to GCC
CN1134731C (zh) 在计算机系统中编译指令的方法
CN100530108C (zh) 一种调用函数的方法及系统
EP2705422B1 (en) Dynamically redirecting boot to another operating system
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
JPH10269082A (ja) アーキテクチャ独立バイナリープログラムを直接実行するシステム、方法及び装置
WO2006040505A1 (en) Platform-independent dynamic linking
CN102402427A (zh) 一种Java应用程序的更新方法及装置
CN100465894C (zh) 一种Java Processor启动时类装载方法
EP3698241A1 (en) Using semantic annotations to control compatibility behaviors
US20060080681A1 (en) Mechanism to extend functionality in a restricted computing environment
JP5401561B2 (ja) クラスファイル内にネイティブコードを埋め込むことによる仮想メカニズム内でのプラットフォーム依存ルーチンの適用
US20170102924A1 (en) Software architecture for embedded systems
CN102841802A (zh) 移动终端的软件升级方法
KR20130068630A (ko) 임베디드 디바이스의 초기화 방법 및 장치
CN100498710C (zh) 自储存装置上读取选择只读存储器程序代码的方法
CN102591669A (zh) 模块化计算机固件及其实现方法
Al-Bokhaiti et al. Customization and Optimization of Android Operating System for Custom Board with the Implementation of an Administrative Tool
US8135943B1 (en) Method, apparatus, and computer-readable medium for generating a dispatching function
CN101187876A (zh) 一种寄生dos操作系统的制作及使用方法
TWI777636B (zh) 組成模組化韌體的方法、裝置及電腦程式產品
Pandit et al. Development of BSP for ARM9 Evaluation Board
Van Canneyt et al. Free Pascal User’s Guide

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090304

Termination date: 20150112

EXPY Termination of patent right or utility model