CN111880800B - 应用下载方法与应用下载系统 - Google Patents
应用下载方法与应用下载系统 Download PDFInfo
- Publication number
- CN111880800B CN111880800B CN202010565776.3A CN202010565776A CN111880800B CN 111880800 B CN111880800 B CN 111880800B CN 202010565776 A CN202010565776 A CN 202010565776A CN 111880800 B CN111880800 B CN 111880800B
- Authority
- CN
- China
- Prior art keywords
- application
- application program
- field
- download
- embedded system
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 85
- 238000004806 packaging method and process Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 69
- 238000009434 installation Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 238000005538 encapsulation Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 abstract description 6
- 238000011161 development Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 239000011800 void material Substances 0.000 description 3
- 230000006378 damage Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种应用下载方法与应用下载系统,涉及计算机技术领域。其中,虚拟机搭载在嵌入式系统,下载方法包括:获取待下载到嵌入式系统的使用C语言编写的应用程序的源代码,应用程序待在虚拟机中运行;编译应用程序的源代码为虚拟机能够识别的中间文件,中间文件为二进制字节码;对中间文件进行封装得到下载脚本;将下载脚本加载至嵌入式系统后存储以供虚拟机运行下载脚本。根据本发明实施例,通过下载器将中间文件封装成下载脚本发送到嵌入式系统,中间文件和下载脚本中的内容对应,无须在嵌入式系统进行文件格式转换,简化了基于虚拟机的嵌入式系统的应用开发流程,提高了嵌入式系统的应用下载效率,提高了嵌入式系统运行效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种应用下载方法与应用下载系统。
背景技术
Java卡是一种可以运行应用程序的接触式微处理器智能卡,它的基本思想就是在智能卡的ROM中保持一个Java卡虚拟机(JCVM),在这个Java卡虚拟机上运行应用程序。Java卡虚拟机是Java卡的核心部分,主要负责解释执行应用程序字节码、控制内存分配、对象创建以及保证Java卡安全运行等。应用程序的下载速度对Java卡虚拟机的运行性能有着重要的影响。在本领域技术人员中存在技术偏见:运行在Java卡的应用程序必须是通过Java语言编写的Java应用程序(Java Applet)。
Java应用程序经过编译生成class文件,为了提高Java应用程序的安全性将class文件转化生成可以下载到Java卡虚拟机内的安装文件,简称为cap(converted applet)文件。在Java卡虚拟机中,因为cap文件是由多个子cap组成,这些子cap又叫组件(component),所以需要逐个分析这些组件后才能找到Java应用程序运行的详细信息,Java应用程序才能在Java卡虚拟机上运行起来。cap文件的转换流程较多并且Java卡虚拟机中cap文件的组件分析耗时比较久,这降低了Java应用程序的下载效率和Java卡虚拟机的运行效率。
发明内容
为了克服相关技术中存在的问题,本发明实施例提供了一种应用下载方法与应用下载系统,克服了运行在Java卡的应用程序必须是通过Java语言编写的Java应用程序的技术偏见,解决了cap文件的转换流程较多并且Java卡虚拟机中cap文件的组件分析耗时比较久,导致Java应用程序的下载效率和Java卡虚拟机的运行效率低的问题。
根据本发明实施例的第一方面,提供一种嵌入式系统的应用下载方法,虚拟机搭载在嵌入式系统,所述下载方法包括:
获取待下载到所述嵌入式系统的使用C语言编写的应用程序的源代码,所述应用程序待在所述虚拟机中运行;
编译所述应用程序的源代码为所述虚拟机能够识别的中间文件,所述中间文件为二进制字节码;
对所述中间文件进行封装得到下载脚本;
将所述下载脚本加载至所述嵌入式系统后存储以供所述虚拟机运行所述下载脚本,
其中,所述编译器执行编译过程中所述中间文件的编码格式包括:长度/值编码格式,并且,所述长度/值编码格式编码后的所述中间文件的组成部分包括:校验字段、除了所述校验字段外所述中间文件的总长度字段、在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度字段、在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段、在RAM中所述应用程序独立使用的随机存储区的存储空间长度字段、在EEPROM或flash中所述应用程序的操作数据的存储空间长度字段、在EEPROM或flash中存储的所述应用程序的操作数据字段、所述应用安装函数的地址偏移量字段、所述应用卸载函数的地址偏移量字段、所述应用被选择函数的地址偏移量字段、所述应用被去选择函数的地址偏移量字段和所述应用处理函数的地址偏移量字段。
可选地,所述应用程序的源代码包括:所述应用程序的操作数据、应用安装函数、应用卸载函数、应用被选择函数、应用被去选择函数和应用处理函数。
可选地,利用所述校验字段对所述下载脚本进行验证的校验方法包括:CRC32。
可选地,所述对所述中间文件进行封装得到下载脚本包括:
使用Globalplatform数据库的命令格式对所述中间文件进行封装得到所述下载脚本。
可选地,所述将所述下载脚本加载至所述嵌入式系统后存储所述下载脚本包括:
将所述应用程序的源代码中所有方法对应的字节码存储在ROM中;
将所述应用程序的操作数据存储在EEPROM或flash中;
记录所述应用程序的源代码中所有方法对应的字节码的存储地址。
可选地,所述应用程序的源代码定义的所述应用程序的操作数据包括:全局RAM变量,所述全局RAM变量存储在RAM中,所述应用程序独立使用所述全局RAM变量。
根据本发明实施例的第二方面,提供一种嵌入式系统的应用下载系统,编辑器、编译器和下载器处于嵌入式系统外,虚拟机和应用下载处理器搭载在所述嵌入式系统,所述下载系统包括:
所述编辑器,被配置为执行获取待下载到所述嵌入式系统的使用C语言编写的应用程序的源代码,所述应用程序待在所述虚拟机中运行;
所述编译器,被配置为执行编译所述应用程序的源代码为所述虚拟机能够识别的中间文件,所述中间文件为二进制字节码;
所述下载器,被配置为执行对所述中间文件进行封装得到下载脚本;
所述应用下载处理器,被配置为执行将所述下载脚本加载至所述嵌入式系统后存储以供所述虚拟机运行所述下载脚本,
其中,所述编译器执行编译过程中所述中间文件的编码格式包括:长度/值编码格式,并且,所述长度/值编码格式编码后的所述中间文件的组成部分包括:校验字段、除了所述校验字段外所述中间文件的总长度字段、在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度字段、在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段、在RAM中所述应用程序独立使用的随机存储区的存储空间长度字段、在EEPROM或flash中所述应用程序的操作数据的存储空间长度字段、在EEPROM或flash中存储的所述应用程序的操作数据字段、所述应用安装函数的地址偏移量字段、所述应用卸载函数的地址偏移量字段、所述应用被选择函数的地址偏移量字段、所述应用被去选择函数的地址偏移量字段和所述应用处理函数的地址偏移量字段。
根据本发明实施例的第三方面,提供一种嵌入式系统的应用下载控制装置,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任意一项所述的应用下载方法。
根据本发明实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如上任一项所述的应用下载方法。
根据本发明实施例的第五方面,提供一种电子设备,包括计算机程序,所述计算机程序包括程序指令,当所述程序指令被移动终端执行时,使所述移动终端执行如上任一项所述的应用下载方法的步骤。
本发明的实施例具有以下优点或有益效果:
通过编辑器编辑待下载到嵌入式系统的使用C语言编写的应用程序的源代码,利用编译器编译应用程序的源代码为虚拟机(未示出)能够识别的中间文件,所述中间文件为二进制字节码,使用下载器对所述中间文件进行封装得到下载脚本,利用应用下载处理器将下载脚本加载至嵌入式系统后存储所述下载脚本以供虚拟机运行所述下载脚本。通过使用C语言编写待运行在虚拟机的应用程序的源代码,克服了运行在Java卡的应用程序必须是通过Java语言编写的Java应用程序的技术偏见。通过下载器将中间文件封装成下载脚本发送到嵌入式系统,中间文件和下载脚本中的内容对应,无须在嵌入式系统进行文件格式转换,简化了基于虚拟机的嵌入式系统的应用开发流程,提高了嵌入式系统的应用下载效率,提高了嵌入式系统运行效率。下载脚本中带有校验字段,防止下载脚本的篡改,提高了嵌入式系统的应用下载的准确率。应用下载处理器与虚拟机无交互,没有额外的空间和时间消耗,进一步提高了嵌入式系统的应用下载效率和嵌入式系统运行效率。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示出相关技术中Java卡系统的应用下载系统的结构示意图。
图2示出相关技术中Java应用程序的Java文件。
图3示出相关技术中图2所示的Java文件的class文件。
图4示出相关技术中图2所示的Java文件的cap文件。
图5示出相关技术中图2所示的Java文件的下载脚本。
图6示出相关技术中图4所示的cap文件的组件分析代码。
图7示出本发明实施例中嵌入式系统的应用下载系统的结构示意图。
图8示出本发明实施例中嵌入式系统的应用下载方法的流程示意图。
图9示出本发明实施例中嵌入式系统的应用程序的源代码。
图10示出本发明实施例中中间文件的编码格式。
图11示出本发明实施例中图9所示的源代码的中间文件。
图12示出本发明实施例中图9所示的源代码的下载脚本。
图13示出本发明实施例的应用下载控制装置的结构示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
图1示出相关技术中Java卡系统的应用下载系统的结构示意图。如图1所示,应用下载系统1000包括:编辑器1110、编译器1120、转换器(convert er)1130和下载器(downloader)1140。编辑器1110、编译器1120、转换器1130和下载器1140位于Java卡1200外的终端设备1100。应用下载系统1000还包括:Java卡虚拟机1210以及在Java卡虚拟机1210内的Java卡应用安装器(installer)1211。Java卡虚拟机1210和Java卡应用安装器1211位于Java卡1200。
通过编辑器1110编辑java应用程序的源码文件,即Java文件,Java文件作为编译器1120的输入。如图2示出了相关技术中Java应用程序的Java文件。编译器1120对Java文件进行编译输出class文件。图3示出相关技术中图2所示的Java文件的class文件。转换器1130对class文件进行转换输出cap文件。图4示出相关技术中图2所示的Java文件的cap文件。下载器1140使用Globalplatform数据库的命令格式对cap文件的内容进行封装得到下载脚本。图5示出相关技术中图2所示的Java文件的下载脚本。下载脚本是一种二进制数据流。Java卡1200下载如图5所示的下载脚本时,终端设备1100会连接一个读卡器,Java卡1200插入读卡器中,下载器1140将脚本文件的二进制数据流通过读卡器发送给Java卡1200。脚本文件下载到Java卡1200中,Java卡应用安装器1211将脚本文件的二进制数据流还原为cap文件。因为cap文件是由多个子cap组成,这些子cap又叫组件,所以需要逐个分析这些组件后才能找到Java应用程序运行的详细信息,再把这些信息写入Java卡1200的内存中,Java应用程序才能在Java卡虚拟机1210上运行起来。图6示出相关技术中图4所示的cap文件的组件分析代码。cap文件的多个组件的分析是和虚拟机的运行紧密相关的,不同的虚拟机实现,组件分析的策略不同。
转换器1130对class文件进行转换获得cap文件的转换流程较多并且J ava卡虚拟机1210中cap文件的组件分析耗时比较久,这降低了Java应用程序的下载效率,降低了Java卡虚拟机的运行效率。中间文件(包括class文件及cap文件这两种中间文件)格式复杂,而且生成的cap文件没有校验,无法保证其完整性。
容易理解的是,在Java卡虚拟机中运行的下载脚本是一种二进制数据流,而下载脚本是不区分编写语言的。所以本发明人想到,可以通过C语言来编写应用程序,经过编译、封装后将该应用程序对应的下载脚本加载至虚拟机中执行。
基于此,本发明实施例提供一种应用下载方法与应用下载系统。
图7示出本发明实施例中嵌入式系统的应用下载系统的结构示意图。Java卡系统是本发明实施例中嵌入式系统的一个示例。如图7所示,应用下载系统2000包括:编辑器2110、编译器2120和下载器2130。编辑器2110、编译器2120和下载器2130位于嵌入式系统2200外的终端设备2100。应用下载系统2000还包括:应用下载处理器2210。虚拟机(未示出)以及应用下载处理器2210位于嵌入式系统2200,虚拟机(未示出)与应用下载处理器2210相互独立。
编辑器2110,被配置为执行获取待下载到嵌入式系统2200的使用C语言编写的应用程序的源代码,所述应用程序待在虚拟机(未示出)中运行。编译器2120,被配置为执行编译应用程序的源代码为虚拟机(未示出)能够识别的中间文件,所述中间文件为二进制字节码。需要说明的是,编译器2120将使用C语言编写的应用程序的源代码编译为虚拟机(未示出)能够识别的中间文件,中间文件是一种字节码指令流,虚拟机(未示出)是基于对应的字节码解释器而重新构建的一种虚拟机。下载器2130,被配置为执行对所述中间文件进行封装得到下载脚本。应用下载处理器2210,被配置为执行将所述下载脚本加载至嵌入式系统2200后存储以供虚拟机运行所述下载脚本。嵌入式系统2200中的存储位置包括:ROM、flash/EEPROM、RAM。
图8示出本发明实施例中嵌入式系统的应用下载方法的流程示意图。下面结合图7所述的本发明实施例的嵌入式系统的应用下载系统,说明本发明实施例的嵌入式系统的应用下载方法。如图8所示,本发明实施例的嵌入式系统的应用下载方法具体步骤包括:
在步骤S810中,获取待下载到所述嵌入式系统的使用C语言编写的应用程序的源代码,所述应用程序待在所述虚拟机中运行。
在该步骤中,通过编辑器2110编辑待下载到嵌入式系统2200的使用C语言编写的应用程序的源代码,应用程序的源代码作为编译器2120的输入。所述应用程序的源代码包括:应用程序的操作数据,如应用程序的源代码定义的全局RAM变量和全局E2变量、应用安装函数install()、应用卸载函数uninstall()、应用被选择函数select()、应用被去选择函数deselect()和应用处理函数process()。
图9示出本发明实施例中嵌入式系统的应用程序的源代码。所述应用程序在虚拟机(未示出)中运行。如图9所示,应用程序的源代码由一个或者多个c文件及h头文件组成。其中,“#include<lib\t_d.h>”字段表示引用的库文件。“u8 global_var1”表示声明一个unsigned char类型的全局E2变量,这个变量是存在E2(即EEPROM或flash)中的,所述应用程序独立使用所述全局E2变量,与其他应用隔离。“ra u8RAM_v2”表示声明一个unsignedchar类型的全局RAM变量,其中“ra”这个关键字是c语言本身没有的,是本发明实施例为基于虚拟机的嵌入式系统的应用开发单独发明的,这个变量是存在RAM中的,所述应用程序独立使用所述全局RAM变量,与其他应用隔离。在声明“ra”这个关键字之后,不带“ra”关键字声明的全局变量,默认定义为全局E2变量。“void install(u8*buf,u8 buflen)”是应用程序的源代码的应用安装函数,应用程序在安装的时候会调用这个方法,通常可以做应用初始化和传参处理等。“void uninstall(void)”是应用程序的源代码中的应用卸载函数,应用程序在删除的时候会调用这个方法,通常可以做特殊数据的销毁工作等。“select()”是应用程序的源代码中的应用被选择函数,应用程序在被选择的时候会调用这个方法,通常可以做RAM变量的初始化工作等。“deselect()”是应用程序的源代码中的应用被去选择函数,应用程序在被去选择(选择其他的应用程序或者本应用程序再次被选择)的时候会调用这个方法,通常可以做RAM变量的销毁工作等。“process()”是应用程序的源代码中的应用处理函数,负责处理所有命令的方法,是应用的所有主要业务及逻辑处理的入口。Install,uninstall,select,deselect,process这几个方法在应用程序的源代码中必须实现,如果没有,应用程序的源代码编译的时候会报错。
需要说明的是,图9所示的本发明实施例中嵌入式系统的应用程序的源代码仅仅是一个示例。
在步骤S820中,编译所述应用程序的源代码为所述虚拟机能够识别的中间文件,所述中间文件为二进制字节码。
在该步骤中,编译应用程序的源代码为虚拟机(未示出)能够识别的中间文件,所述中间文件为二进制字节码。中间文件可以是大端模式存储在内存中也可以是小端模式存储在内存中。中间文件是应用程序的源码文件经过编译器2120编译转换之后得到的,所述中间文件的编码格式包括:长度/值编码格式,长度/值编码格式就是Length+Value,即“信息长度+信息内容”,其中信息内容是可以嵌套的,就是说,信息内容中还可以有“信息长度+信息内容”。经所述长度/值编码格式编码后的所述中间文件的组成部分包括:校验字段、除了所述校验字段外所述中间文件的总长度字段、在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度字段、在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段、在RAM中所述应用程序独立使用的随机存储区的存储空间长度字段、在EEPROM或flash中所述应用程序的操作数据的存储空间长度字段、在EEPROM或flash中存储的所述应用程序的操作数据字段、所述应用安装函数的地址偏移量字段、所述应用卸载函数的地址偏移量字段、所述应用被选择函数的地址偏移量字段、所述应用被去选择函数的地址偏移量字段和所述应用处理函数的地址偏移量字段。需要说明的是,本发明实施例中中间文件的各个字段的顺序是可以变换的。
图10示出本发明实施例中中间文件的编码格式。如图10所示,第一个字段表示除了所述校验字段外所述中间文件的总长度字段,用4个字节表示。第二个字段表示在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度字段,用4个字节表示。第三个字段表示在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段。第四个字段表示在RAM中所述应用程序独立使用的随机存储区的存储空间长度字段,RAM表示应用可以独立使用的随机存储区,其内容断电即消失,用2个字节表示。第五个字段表示在E2(EEPROM或flash)中所述应用程序的操作数据的存储空间长度字段,用4个字节表示。第六个字段表示在E2(EEPROM或flash)中存储的所述应用程序的操作数据字段,E2通常可以存储应用的业务相关的操作数据,其内容在断电后还可以保留,根据本发明的设计,所有的全局变量都是存储在E2中。第七个字段表示应用安装函数install()的地址偏移量字段,这个地址偏移量是应用安装函数install()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量,用4个字节表示。第八个字段表示应用处理函数process()的地址偏移量字段,这个地址偏移量是应用处理函数process()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量,用4个字节表示。第九个字段表示应用被选择函数select()的地址偏移量字段,这个地址偏移量是应用被选择函数select()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量,用4个字节表示。第十个字段表示应用被去选择函数deselect()的地址偏移量字段,这个偏移值是应用被去选择函数deselect()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量,用4个字节表示。第十一个字段表示应用卸载函数uninstall()的地址偏移量字段,这个地址偏移量是应用卸载函数uninstall()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量,用4个字节表示。第十二个字段表示应用程序的源代码的校验字段,例如占用4个字节。利用所述校验字段对下载脚本进行验证的校验方法例如为CRC32。
图11示出本发明实施例中图9所示的源代码的中间文件。如图11所示,用16进制编辑软件打开中间文件,中间文件按照图10所示的编码格式,以小端模式存储在内存中。①表示图10中的第一个字段,除了校验字段外所述中间文件的总长度是0x00000984。②表示图10中的第二个字段,在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度是0x000005BC。③表示在ROM中存储的所述应用程序的源代码中所有方法对应的字节码的起始地址(0x08)。④表示在ROM中存储的所述应用程序的源代码中所有方法对应的字节码的结束地址(0x5C4),0x5BC+0x08=0x5C4,③和④之间内容就是图10中的第三个字段。⑤表示图10中的第四个字段,表示在RAM中所述应用程序独立使用的随机存储区的存储空间长度是0x0000。⑥表示图10中的第五个字段,在E2(EEPROM或flash)中所述应用程序的操作数据的存储空间长度是0x000003C8。⑦表示在E2(EEPROM或flash)中所述应用程序的操作数据的起始地址(0x5CC)。⑧表示在E2(EEPROM或flash)中所述应用程序的操作数据的结束地址(0x994),0x3C8+0x5CC=0x994,⑦和⑧之间的内容就是图10中的第六个字段。⑨表示图10中的第七个字段,表示应用安装函数install()的地址偏移量字段,这个地址偏移量是应用安装函数install()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量。⑩表示图10中的第八字段,第八个字段表示应用处理函数process()的地址偏移量字段,这个地址偏移量是应用处理函数process()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量。表示图10中的第九个字段,第九个字段表示应用被选择函数select()的地址偏移量字段,这个地址偏移量是应用被选择函数select()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量。/>表示图10中的第十个字段,第十个字段表示应用被去选择函数deselect()的地址偏移量字段,这个偏移值是应用被去选择函数deselect()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量。/>表示图9中的第十一个字段,第十一个字段表示应用卸载函数uninstall()的地址偏移量字段,这个地址偏移量是应用卸载函数uninstall()的地址相对于在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段的起始地址的偏移量。/>表示图10中的第十二个字段,第十二个字段表示应用程序的源代码的校验字段。利用所述校验字段对下载脚本进行验证的校验方法包括:CRC32。
在步骤S830中,对所述中间文件进行封装得到下载脚本。
在该步骤中,使用下载器2130对所述中间文件进行封装得到下载脚本。图12示出本发明实施例中图9所示的源代码的下载脚本。下载脚本为二进制数据流,使用Globalplatform数据库的命令格式对中间文件的内容进行封装获得下载脚本。如图12所示,由多条“80e8”开头的命令对中间文件进行封装,前四个字节是GP的命令头,第五个字节是命令的长度,从第六个字节开始就是下载的中间文件的内容,其中的内容和图11所示中间文件的内容完全对应。
在步骤S840中,将所述下载脚本加载至所述嵌入式系统后存储以供所述虚拟机运行所述下载脚本。
在步骤中,利用应用下载处理器2210将下载脚本加载至嵌入式系统2200后存储所述下载脚本。该应用下载处理器2210独立于虚拟机(未示出)之外,无须进行各个组件或者字段的复杂分析,只需要将所述应用程序的源代码中所有方法对应的字节码存储在ROM中,将所述应用程序的操作数据存储在EEPROM或flash中,记录所述应用程序的源代码中所有方法对应的字节码的存储地址。
根据本发明实施例的应用下载方法与应用下载系统,通过编辑器编辑待下载到嵌入式系统的使用C语言编写的应用程序的源代码,利用编译器编译应用程序的源代码为虚拟机(未示出)能够识别的中间文件,所述中间文件为二进制字节码,使用下载器对所述中间文件进行封装得到下载脚本,利用应用下载处理器将下载脚本加载至嵌入式系统后存储所述下载脚本以供虚拟机运行所述下载脚本。通过使用C语言编写待运行在虚拟机的应用程序的源代码,克服了运行在Java卡的应用程序必须是通过Java语言编写的Java应用程序的技术偏见。通过下载器将中间文件封装成下载脚本发送到嵌入式系统,中间文件和下载脚本中的内容对应,无须在嵌入式系统进行文件格式转换,简化了基于虚拟机的嵌入式系统的应用开发流程,提高了嵌入式系统的应用下载效率,提高了嵌入式系统运行效率。下载脚本中带有校验字段,防止下载脚本的篡改,提高了嵌入式系统的应用下载的准确率。应用下载处理器与虚拟机无交互,没有额外的空间和时间消耗,进一步提高了嵌入式系统的应用下载效率和嵌入式系统运行效率。
图13根据本发明实施例的应用下载控制装置的结构图。图13示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。
参考图13,该装置包括通过总线连接的处理器1310、存储器1320和输入输出设备1330。存储器1320包括只读存储器(ROM)和随机访问存储器(RAM),存储器1320内存储有执行系统功能所需的各种计算机指令和数据,处理器1310从存储器1320中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。存储器1320还存储有计算机指令以完成本发明实施例的应用下载方法规定的操作。
相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述应用下载方法所规定的操作。
相应地,本发明实施例还提供了一种电子设备,包括计算机程序,所述计算机程序包括程序指令,当所述程序指令被移动终端执行时,使所述移动终端执行上述应用下载方法的步骤。
附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
以上所述仅为本发明的一些实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种嵌入式系统的应用下载方法,其特征在于,虚拟机搭载在嵌入式系统,所述下载方法包括:
获取待下载到所述嵌入式系统的使用C语言编写的应用程序的源代码,所述应用程序待在所述虚拟机中运行;
编译所述应用程序的源代码为所述虚拟机能够识别的中间文件,所述中间文件为二进制字节码;
对所述中间文件进行封装得到下载脚本;
将所述下载脚本加载至所述嵌入式系统后存储以供所述虚拟机运行所述下载脚本,
其中,所述中间文件的编码格式包括:长度/值编码格式,且经所述长度/值编码格式编码后的所述中间文件的组成部分包括:校验字段、除了所述校验字段外所述中间文件的总长度字段、在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度字段、在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段、在RAM中所述应用程序独立使用的随机存储区的存储空间长度字段、在EEPROM或flash中所述应用程序的操作数据的存储空间长度字段、在EEPROM或flash中存储的所述应用程序的操作数据字段、所述应用安装函数的地址偏移量字段、所述应用卸载函数的地址偏移量字段、所述应用被选择函数的地址偏移量字段、所述应用被去选择函数的地址偏移量字段和所述应用处理函数的地址偏移量字段。
2.根据权利要求1所述的应用下载方法,其特征在于,所述应用程序的源代码包括:所述应用程序的操作数据、应用安装函数、应用卸载函数、应用被选择函数、应用被去选择函数和应用处理函数。
3.根据权利要求2所述的应用下载方法,其特征在于,利用所述校验字段对所述下载脚本进行验证的校验方法包括:CRC32。
4.根据权利要求3所述的应用下载方法,其特征在于,所述对所述中间文件进行封装得到下载脚本包括:
使用Globalplatform数据库的命令格式对所述中间文件进行封装得到所述下载脚本。
5.根据权利要求4所述的应用下载方法,其特征在于,所述将所述下载脚本加载至所述嵌入式系统后存储以供所述虚拟机运行所述下载脚本包括:
将所述应用程序的源代码中所有方法对应的字节码存储在ROM中;
将所述应用程序的操作数据存储在EEPROM或flash中;
记录所述应用程序的源代码中所有方法对应的字节码的存储地址。
6.根据权利要求5所述的应用下载方法,其特征在于,所述应用程序的源代码定义的所述应用程序的操作数据包括:全局RAM变量,所述全局RAM变量存储在RAM中,所述应用程序独立使用所述全局RAM变量。
7.一种嵌入式系统的应用下载系统,其特征在于,编辑器、编译器和下载器处于嵌入式系统外,虚拟机和应用下载处理器搭载在所述嵌入式系统,所述下载系统包括:
所述编辑器,被配置为执行获取待下载到所述嵌入式系统的使用C语言编写的应用程序的源代码,所述应用程序待在所述虚拟机中运行;
所述编译器,被配置为执行编译所述应用程序的源代码为所述虚拟机能够识别的中间文件,所述中间文件为二进制字节码;
所述下载器,被配置为执行对所述中间文件进行封装得到下载脚本;
所述应用下载处理器,被配置为执行将所述下载脚本加载至所述嵌入式系统后存储以供所述虚拟机运行所述下载脚本,
其中,所述编译器执行编译过程中所述中间文件的编码格式包括:长度/值编码格式,并且,所述长度/值编码格式编码后的所述中间文件的组成部分包括:校验字段、除了所述校验字段外所述中间文件的总长度字段、在ROM中所述应用程序的源代码中所有方法对应的字节码的存储空间长度字段、在ROM中存储的所述应用程序的源代码中所有方法对应的字节码字段、在RAM中所述应用程序独立使用的随机存储区的存储空间长度字段、在EEPROM或flash中所述应用程序的操作数据的存储空间长度字段、在EEPROM或flash中存储的所述应用程序的操作数据字段、所述应用安装函数的地址偏移量字段、所述应用卸载函数的地址偏移量字段、所述应用被选择函数的地址偏移量字段、所述应用被去选择函数的地址偏移量字段和所述应用处理函数的地址偏移量字段。
8.一种嵌入式系统的应用下载控制装置,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1至6任意一项所述的应用下载方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现如权利要求1至6中任一项所述的应用下载方法。
10.一种电子设备,包括计算机程序,所述计算机程序包括程序指令,当所述程序指令被移动终端执行时,使所述移动终端执行如权利要求1至6中任一项所述的应用下载方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565776.3A CN111880800B (zh) | 2020-06-19 | 2020-06-19 | 应用下载方法与应用下载系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010565776.3A CN111880800B (zh) | 2020-06-19 | 2020-06-19 | 应用下载方法与应用下载系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111880800A CN111880800A (zh) | 2020-11-03 |
CN111880800B true CN111880800B (zh) | 2023-10-31 |
Family
ID=73158053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010565776.3A Active CN111880800B (zh) | 2020-06-19 | 2020-06-19 | 应用下载方法与应用下载系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880800B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760244A (zh) * | 2021-08-10 | 2021-12-07 | 武汉天喻信息产业股份有限公司 | 一种基于c语言方式实现多入口多接口的方法及系统 |
CN113703779B (zh) * | 2021-09-06 | 2024-04-16 | 王喆 | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023885A (zh) * | 2010-12-17 | 2011-04-20 | 北京握奇数据系统有限公司 | 一种存储Java卡运行时环境字节码的方法及系统 |
EP2557500A2 (en) * | 2011-08-11 | 2013-02-13 | Siemens Aktiengesellschaft | Embedded multi-processor parallel processing system and operating method for same |
CN102567020B (zh) * | 2011-12-26 | 2015-02-25 | 大唐微电子技术有限公司 | 一种智能卡应用的实现方法及系统 |
CN106227576A (zh) * | 2016-08-18 | 2016-12-14 | 北京智芯微电子科技有限公司 | 一种Java卡应用的功能实现方法及装置 |
CN103955426B (zh) * | 2014-04-21 | 2017-08-29 | 中国科学院计算技术研究所 | 一种检测c代码空指针引用的方法及系统 |
WO2018157716A1 (zh) * | 2017-03-01 | 2018-09-07 | 天地融科技股份有限公司 | 一种智能卡 |
CN108898008A (zh) * | 2018-04-27 | 2018-11-27 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN105511942B (zh) * | 2015-12-02 | 2019-02-19 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
CN111131281A (zh) * | 2019-12-30 | 2020-05-08 | 北京永新视博数字电视技术有限公司 | 消息传输方法、装置、系统及其保护代码更新方法、装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3416086A1 (en) * | 2017-06-15 | 2018-12-19 | Gemalto Sa | Method for managing an instance of a class |
-
2020
- 2020-06-19 CN CN202010565776.3A patent/CN111880800B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102023885A (zh) * | 2010-12-17 | 2011-04-20 | 北京握奇数据系统有限公司 | 一种存储Java卡运行时环境字节码的方法及系统 |
EP2557500A2 (en) * | 2011-08-11 | 2013-02-13 | Siemens Aktiengesellschaft | Embedded multi-processor parallel processing system and operating method for same |
CN102567020B (zh) * | 2011-12-26 | 2015-02-25 | 大唐微电子技术有限公司 | 一种智能卡应用的实现方法及系统 |
CN103955426B (zh) * | 2014-04-21 | 2017-08-29 | 中国科学院计算技术研究所 | 一种检测c代码空指针引用的方法及系统 |
CN105511942B (zh) * | 2015-12-02 | 2019-02-19 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
CN106227576A (zh) * | 2016-08-18 | 2016-12-14 | 北京智芯微电子科技有限公司 | 一种Java卡应用的功能实现方法及装置 |
WO2018157716A1 (zh) * | 2017-03-01 | 2018-09-07 | 天地融科技股份有限公司 | 一种智能卡 |
CN108898008A (zh) * | 2018-04-27 | 2018-11-27 | 北京奇艺世纪科技有限公司 | 应用程序的运行方法和装置 |
CN111131281A (zh) * | 2019-12-30 | 2020-05-08 | 北京永新视博数字电视技术有限公司 | 消息传输方法、装置、系统及其保护代码更新方法、装置 |
Non-Patent Citations (2)
Title |
---|
Julien Lancia 等.Java Card Virtual Machine Compromising from a Bytecode Verified Applet.《International Conference on Smart Card Research and Advanced Application》.2016,75-88. * |
崔岩 等.浅析Java卡应用执行机制及虚拟机能效优化.《中国新通信》.2015,第17卷(第17期),122-126. * |
Also Published As
Publication number | Publication date |
---|---|
CN111880800A (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6446254B1 (en) | Packaging memory image files | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN110704063B (zh) | 编译和执行智能合约的方法及装置 | |
CN111367510B (zh) | 一种安卓功能模块开发的方法及装置 | |
US20100023926A1 (en) | Call graph dependency extraction by static source code analysis | |
CN111880800B (zh) | 应用下载方法与应用下载系统 | |
CN109598107B (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
KR19990076824A (ko) | 네트워크를 통한 전송 전에 컴퓨터 프로그램을 처리하기 위한장치 및 방법 | |
CN108985017A (zh) | 应用程序的加固方法和装置 | |
CN109948308A (zh) | 代码安全保护方法、装置、电子设备和计算机可读存储介质 | |
CN106775781B (zh) | 减小应用安装包的方法、装置及电子设备 | |
CN113296786B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111209001A (zh) | 批量生成安卓各渠道apk的方法、系统、设备和介质 | |
CN107305495A (zh) | 实现软件安装包功能修改的方法及终端 | |
CN105005495A (zh) | 一种游戏引擎 | |
CN113721928B (zh) | 一种基于二进制分析的动态库裁剪方法 | |
US20150113502A1 (en) | Method and system for encapsulation of application | |
CN111562929A (zh) | 补丁文件的生成方法、装置、设备及存储介质 | |
CN101202736A (zh) | 一种在通讯网络中实现编解码的方法 | |
CN112905271A (zh) | 一种应用程序接口api的调用方法、装置及电子设备 | |
CN103150161A (zh) | 基于MapReduce 计算模型的任务封装方法及装置 | |
CN114490103A (zh) | 一种操作系统接口调用方法、装置以及电子设备 | |
CN115981614A (zh) | 项目工程的模块化处理方法、电子设备及计算机存储介质 | |
CN117971350A (zh) | 小程序运行方法、装置和计算机可读存储介质 | |
CN112118285B (zh) | 适用于客户端全版本浏览器的数据传输方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 501, Jinqian block, 10 Hongyi Road, Xinwu District, Wuxi City, Jiangsu Province, 214028 Applicant after: Wuxi rongka Technology Co.,Ltd. Address before: 518000 south wing w312, west block, Shenzhen Hong Kong industry university research base, Gaoxin South 7th Road, Nanshan District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN RONGCARD Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |