背景技术
在移动通信领域,随着移动通信技术的发展,用户逐渐可以获得高质量的移动通信服务,移动终端逐渐成为人们日常生活中必不可少的电子产品。随着当前用户生活水平的提高和IT技术的不断发展,用户对移动终端的要求越来越高。具体表现在:1.用户需要使用移动终端存放海量的数据,例如音乐文件、视频文件等,从而使移动终端成为移动多媒体处理中心;2.用户希望可以使用移动终端运行多种方便适用的程序,例如日程管理软件、游戏软件等,从而使移动终端成为信息处理中心。用户的需求促进了移动终端技术的发展和进步,越来越多的移动终端在数量海量存储和高速软件运行等技术上获得突破。在这种情况下,在移动终端上实现数据海量存储和软件便利下载成为提高移动终端产品性能的重要因素。与此同时,移动通信运营商也希望能够通过在大存储量介质中存放很多数据来推广自己的应用,从而为用户提供多种个性化的服务,获得更高的利润。
在移动终端上实现数据海量存储有很多种方法,目前,常用的方法有两种:一种是将这些数据和软件存储在移动终端内,另一种方法是将这些信息存储在安装于移动终端之内的MMC、SD等存储介质中。
将数据和软件存储在移动终端内是最简单的进行数据存储的方法。所有的数据由移动终端生产厂商生成并维护,在用户使用过程中,可以通过移动网络或者与电脑相连接来实现下载和删除。这种方法实现起来非常简单,而且便于用户进行操作,是目前移动数据存储的主流方法。但是它自身也存在明显的缺点。第一,如果将数据和软件存储在移动终端内,则无法对这些数据和软件进行方便的备份和转移,所有信息将随着移动终端的更换或损坏而丢失。第二,这些数据直接存储在手机中,手机的任何使用者都可以使用这些数据,不利于实现数据保护,容易造成用户信息的遗失。例如,经常发生的用户因遗失手机造成个人图片泄密就是由于存储于移动终端中的数据缺乏保护造成的。第三,用户可以通过多种途径购买移动终端,并在移动终端上存放各种自己喜欢的数据,这造成运营商没有固定的平台和途径推广自己的业务,从而无法更好的为用户进行服务。
如果将数据和软件存储在MMC/SD等存储介质中,可以在一定程度上解决数据的备份问题,即在用户更换移动终端时,可以通过转移此类存储介质在新移动终端上使用原有数据和软件。这种方法解决了使用移动终端存储数据造成的数据难以备份、恢复和管理的问题。但是这种方法也有其自身的缺点。第一,使用这种方法,假若用户希望不遗失数据而更换移动终端,则前后使用的两台移动终端必须都具有相同的存储接口。这就限制了用户的选择余地。第二,MMC/SD等存储介质只能作为存储空间使用,无法对内部存放的数据及软件进行加密,造成数据存储的安全性下降,同样面临信息安全的问题。第三,由于用户的存储介质种类繁多,购买方式多样,运营商无法对存储空间中的数据进行管理,不利于运营商进行业务推广。可见,使用MMC/SD等存储介质进行数据存储仍然无法完全解决移动存储过程中遇到的问题。
现代数字移动通信系统的移动终端中都有预置的用户识别模块(例如GSM系统中的SIM卡,CDMA系统中的UIM卡等),通常,这些身份识别模块都是用户识别模块。每一个移动终端内都必须支持规格统一的用户识别模块,并且支持ISO7816数据传输。随着用户识别模块技术的发展,现有的用户识别模块已经可以提供很大的数据存储空间(例如64M字节),可以成为新的信息存储介质。同时,作为入网身份认证模块,用户识别模块完全由移动运营商控制,可以方便的按照运营商的意愿进行配置和管理。这样,新一代的用户识别模块克服了原有存储介质的缺点,为存储数据和软件提供了良好的物理平台。因此,使用用户识别模块实现在移动通信终端中的数据海量存储可以弥补前述使用移动终端直接存储和使用SD/MMC存储的缺点,实现在通用平台上的大数据量存储,并且可以保证数据的安全性。只要我们可以实现从用户识别模块到移动终端的边界的数据和软件传输方法,就可以实现方便、快捷的数据操作。
但是目前,通过用户识别模块作为大数据量存储的载体有一个显著的缺点,就是缺乏良好的途径将存储在用户识别模块中的海量数据便利、快速地转移到移动终端中(或者从移动终端中转存过来)。由于传统用户识别模块和移动终端中的通信协议非常简单,没有提供命令进行海量数据(大量数据)操作,因此移动终端只能通过移动通信规范提供的少量命令进行数据传输。这样,无法通过标准的通信协议实现用户识别模块和移动终端之间的海量数据传输,而只能寻找途径将用户识别模块与移动终端之间的数据传输协议进行升级。但是这种升级往往涉及到硬件的升级,很难实施。
鉴于此,尽管用户识别模块可以存放海量的数据,如果不解决数据传输问题,仍然无法充分利用用户识别模块的海量数据存储功能。这一缺陷限制了大容量用户识别模块在移动终端上的使用,无法充分显示大容量用户识别模块在数据存储领域的独特优点。
发明内容
本发明的目的是为了克服传统的用户识别模块与移动终端之间的数据传输方法的缺点,通过对待传输数据进行分块,并引入对大数据量数据进行读写的操作的指令,实现用户识别模块与移动终端之间的海量数据传输。
为实现上述目的,本发明提供了一种在用户识别模块和移动终端之间传输数据的方法,包括如下步骤:
分析待传输数据;根据分析结果将所述待传输数据划分为多个数据块;生成海量数据传输指令,指示每个数据块的块地址和块长度;根据所述数据块的块地址和块长度确定所述每个数据块的起始地址;以及在用户识别模块和移动终端之间依次传输与所述起始地址对应的各数据块。
根据本发明,上述海量数据传输指令是海量数据读指令或者海量数据写指令。
根据本发明的一个实施方式,上述根据分析结果将所述待传输数据划分为多个数据块是指按照预定长度将待传输数据划分为多个数据块;所述海量数据读指令中所指示的块地址是指当按照所述预定长度划分用户识别模块时,各数据块所对应的序号编码;以及所述海量数据读指令中所指示的块地址是指当按照所述预定长度划分用户识别模块时,各数据块应存储于用户识别模块中的相应存储空间的序号编码。
根据本发明的一个实施方式,所述传输数据的方法进一步包括:在所述生成海量数据传输指令前,生成更改IO数据传输速率指令,用于更改用户识别模块和移动终端之间的IO数据传输速率。
为实现上述目的,本发明进一步提供了一种支持与用户识别模块之间海量数据传输的移动终端,包括
海量数据传输判断模块,分析待传输数据并确定是否采用海量数据传输方式传输数据;通信协议扩展模块,当采用海量数据传输方式时,将待传输的海量数据划分为多个数据块,根据每个数据块的起始地址和块长度确定每个数据块的块地址,并生成海量数据读或写指令,该指令指示了所述每个数据块的块地址和块长度;以及数据处理模块,根据所述每个数据块的起始地址和块长度依次将每个数据块写入或者读出用户识别模块。
根据本发明的一个实施方式,所述通信协议扩展模块能够进一步生成更改IO数据传输速率指令,从而在生成海量数据读或写指令前更改IO的数据传输速率。
为实现上述目的,本发明进一步提供了一种支持与移动终端之间海量数据传输的用户识别模块,包括数据存储模块,提供大容量的存储空间以存储海量数据;通信协议扩展模块,用于接收由移动终端发出的海量数据读或写指令,根据该指令中指示的数据块的块地址和块长度确定数据块的起始地址;以及数据处理模块,根据所述起始地址,将所述数据块写入或者读出用户识别模块。
根据本发明的一个实施方式,所述通信协议扩展模块能够进一步接收由移动终端发出的更改IO数据传输速率指令,并根据所述更改IO数据传输速率指令指示的待执行速率更改IO的数据传输速率。
本发明的优点:
扩展了用户识别模块中的数据寻址范围,实现了在移动终端和用户识别模块之间进行海量数据传输。
所述通信方法符合移动通信的基本协议,不需要对硬件平台进行任何更改,更不会影响移动终端的正常使用。
用户识别模块作为移动终端中的基本模块,具有良好的兼容性,可以在不同的移动终端上做到“即插即用”,便于数据和软件的备份和复制。
用户识别模块中存储的内容完全由运营商控制,可以为用户提供更好的服务。
具体实施方式
下面结合附图和实施例对本发明作进一步详写描述。
通常,当用户识别模块和移动终端之间需要传输数据时,移动终端首先确认需要传输的数据,然后通过命令,例如GSM11.11规范中定义的“ReadBinary(读二进制)”或“Write Binary(写二进制)”指令,实现用户识别模块和移动终端之间的数据传输。但是,由于GSM11.11规范的限制,“ReadBinary”或“Write Binary”指令可以操作的文件大小不得超过64K,这在很大程度上限制了具有海量存储空间的用户识别模块的应用。
如图1所示,本发明提供了一种在用户识别模块和移动终端之间传输数据的方法,包括以下几个步骤。首先,在步骤101中分析待传输数据(例如,一份文件)。该分析包括分析是否要执行海量数据传输操作,以及分析文件长度和文件地址。然后,在步骤102中根据分析结果划分该文件,即,按照预定长度将该文件划分为多个数据块。在步骤103中,生成海量数据传输指令,指示每个数据块的块地址和块长度,从而指示在用户识别模块和移动终端之间进行海量数据传输。在步骤104中,根据所述数据块的块地址和块长度确定所述每个数据块的起始地址。最后,在步骤105中,在用户识别模块和移动终端之间依次传输与所述起始地址对应的各数据块,从而实现整个文件的传输。
由于用户识别模块和移动终端之间的数据传输包括移动终端从用户识别模块读取数据和移动终端将数据写入用户识别模块两种方式,下面结合图2,先以移动终端从用户识别模块读取数据为例对本发明的数据传输方法进行详细说明。
根据本实施方式,当移动终端需要从用户识别模块中读取数据(例如,MP3文件)时,如图2所示,首先在步骤201中,判断是否采用海量数据读操作读取该文件。其中,是否采用海量数据读取的判断可以根据该文件的长度,或者根据移动终端接收到的用户指令来执行。例如,如果该文件的数据长度超过64K,则判断为需要采用海量数据读操作;否则,判断为无需采用海量数据读操作。如果经判断,无需采用海量数据读操作,则进入步骤202执行普通数据传输(例如采用上述“Read Binary”指令)。如果经判断,需要采用海量数据读操作,则进入步骤203以执行海量数据传输。因此,本领域技术人员可以理解,根据本发明的数据传输方法能够兼容现有的数据传输方法。在步骤203中,移动终端分析待读取文件,记录该文件的长度和该文件在用户识别模块中存储的起始物理地址等信息。在步骤204中,移动终端根据预定长度(例如,256字节),将该文件分成多个数据块。在步骤205中,移动终端发出一条海量数据读指令,其中该指令指示了该文件的一个数据块的块地址和块长度。根据本实施方式,数据块的块地址是指:当按照上述预定长度划分用户识别模块时,各数据块所对应的序号编码。本领域技术人员可以理解,数据块的块地址并不是该数据块的实际物理地址,而是根据该数据块的起始地址计算出的块的序号编码。数据块的起始地址等于块地址和预定长度的乘积。通过这种方式,就可以扩展数据的寻址范围。在步骤206中,用户识别模块接收来自移动终端的该条海量数据读指令。在步骤207中,用户识别模块根据预定长度和接收到的海量数据读指令中的块地址和块长度计算该待读取块的起始地址和终止地址(即,起始地址+块长度)。在步骤208中,用户识别模块将与计算出的起始地址和终止地址对应的数据块内的数据传输给移动终端。在步骤209中,移动终端接收并存储该数据块,并判断待读取文件是否已经全部传输完成(即,该数据块是否为待读取文件的最后一个数据块)。如果是,则程序进入步骤210,整个文件的传输过程结束,如果不是,则程序返回步骤205,由移动终端发出下一条海量数据读指令,其中指示了待读取的下一个数据块的块地址和块长度。此时,程序将重复执行步骤205-209的过程,直到在步骤209中判断整个文件已经全部读出,即,程序进入步骤210,整个文件的传输过程结束。
可以理解,根据本发明的数据传输方法,当移动终端需要向用户识别模块中写入数据(例如,MP3文件)时的步骤和上述读取数据的步骤类似。下面结合图3,具体说明从移动终端向用户识别模块写入数据的数据传输方法。
如图3所示,首先在步骤301中,判断是否采用海量数据写操作写入该文件。其中,是否采用海量数据写的判断可以根据该待写入文件的长度,或者根据移动终端接收到的用户指令来执行。例如,如果该文件的数据长度超过64K,则判断为需要采用海量数据写操作;否则,判断为无需采用海量数据写操作。如果经判断,无需采用海量数据写入方式,则进入步骤302执行普通数据传输(例如采用上述“Write Binary”指令)。如果经判断,需要采用海量数据写操作,则进入步骤303以执行海量数据传输。因此,本领域技术人员可以理解,根据本发明的数据传输方法能够兼容现有的数据传输方法。在步骤303中,移动终端分析待写入文件,在用户识别模块中为该文件分配存储空间,并记录该文件的长度和该存储空间的起始物理地址等信息。在步骤304中,移动终端根据预定长度(例如,256字节),将该文件划分为多个数据块。在步骤305中,移动终端发出一条海量数据写指令,其中该指令指示了该文件的一个数据块的块长度和待存储的块地址。根据本实施方式,数据块的待存储块地址是指:当按照上述预定长度划分用户识别模块时,各数据块所对应的待存储空间的序号编码。本领域技术人员可以理解,数据块的块地址并不是该数据块将存储在用户识别模块中的实际物理地址,而是根据该数据块对应的在用户识别模块中的待存储空间的起始地址计算出的块的序号编码。数据块的待存储起始地址等于块地址和预定长度的乘积。通过这种方式,就可以扩展数据的寻址范围。在步骤306中,用户识别模块接收来自移动终端的海量数据写指令。在步骤307中,用户识别模块根据预定长度和接收到的海量数据写指令中的块地址和块长度计算该待写入数据块对应的存储空间的起始地址和终止地址(即,起始地址+块长度)。在步骤308中,移动终端将该数据块内的数据写入给用户识别模块,并存储到在步骤307中计算出的该数据块对应的存储空间中。在步骤309中,移动终端判断待写入文件是否已经全部写完(即,该数据块是否为待写入文件的最后一个数据块)。如果是,则程序进入步骤310,整个文件的写入过程结束,如果不是,则程序返回步骤305,由移动终端发出下一条海量数据写指令,其中指示了待写入的下一个数据块的块地址和块长度。此时,程序将重复执行步骤305-309的过程,直到在步骤309中判断整个文件已经全部写入,该文件的传输过程结束。
此外,由于根据GSM11.11规范,IO的数据传输速率只有在系统刚刚启动时才可以更改,在用户识别模块运行过程中无法发生变化。这种性质不利于进行大数据量的快速传输。为了在进行海量数据传输之前更改海量数据传输的速度,移动终端在生成海量数据传输指令前,先生成更改IO数据传输速率指令,指示更改用户识别模块和移动终端之间的IO数据传输速率。
为实现上述方法,本发明进一步提供了一种支持上述数据传输的方法的移动终端和用户识别模块。图4显示了包括支持本发明的数据传输方法的用户识别模块和移动终端的系统结构示意图。
本领域技术人员可以理解,该移动终端能够通过在现有的支持扩展功能的移动终端上扩展新的功能模块的方式得到。
本发明的一个具体实施例是基于JAVA语言实现的,在一款支持JAVA的GSM手机上使用JAVA语言完成移动终端功能扩展程序。基于J2ME和JSR177规范,使用JAVA语言实现在J2ME GSM手机上的移动终端功能扩展模块(称之为Host应用)。如图4所示,一种支持上述数据传输的方法的移动终端420包括:数据存储模块421,用于提供大容量的存储空间以存储海量数据。用户界面处理模块422,该模块采用J2ME标准接口,用于提供用户操作界面。通讯协议扩展模块423,这一部分基于JSR177规范,实现本HOST应用对ISO7816接口的控制,从而实现SIM卡的数据交互。在本实施例中,实现了“海量数据读”和“海量数据写”和“更改IO传输数率”三个扩展命令。数据处理模块424,这一部分定义了一个对数据进行读取、存储的基本协议,所有对数据的读取和存储都必须基于本模块定义的数据读写协议。
用户410可以通过户界面处理模块422提供的用户操作界面输入命令,指示要求在移动终端420和用户识别模块430之间传输数据(例如,传输一份MP3文件)。用户界面处理模块422在接收到该用户命令后,进一步判断是否需要调用通讯协议扩展模块以实现海量数据传输。当需要调用通讯协议扩展模块以实现海量数据传输时,通讯协议扩展模块用于将该文件根据预定长度(例如,256字节)将文件划分为多个数据块,并提供“海量数据读”和“海量数据写”两条数据读写指令,从而可以逐块从/向用户识别模块读出/写入海量数据。
根据本实施方式,海量数据读指令和海量数据写指令采用符合ISO7816协议的APDU命令格式。
图5a显示了符合APDU命令格式的海量数据读指令。海量数据读指令完成的功能类似于GSM11.11规范中定义的命令“Read Binary(二进制读)”。但是在GSM11.11规范中,Read Binary指令可以操作的文件大小不得超过64K,根据本发明定义的海量数据读指令可以读写最大至16M的文件。
根据本实施方式,CLA为0×A0,为GSM系统标准的CLA。INS为0×E0,为扩展的一个INS,表示该APDU命令是一条“海量数据读”指令。P1、P2两个字节作为一个整体,指示待传输数据块的块地址。将该块地址乘以预定长度(256字节),即可获得希望读取的块的起始位置。Le代表与该块地址对应的数据块的长度,其值为0×00~0×FF,例如Le=0×00表示待读取数据块的长度为256字节。例如,对某一个APDU命令,其命令为:0×A0 0×E0 0×320×EF 0×35,其含义为读取本文件中从(0×32EF*256)开始的那个块的前0×35个字节的数据。可以理解,为便于文件传输,在根据预定长度划分文件时,通常使各数据块的长度等于预定长度(最后一个数据块除外)。
根据本实施方式,海量数据写指令完成的功能类似于GSM11.11规范中定义的命令“Update Binary(二进制写)”。但是在GSM11.11规范中,UpdateBinary命令可以操作的文件大小不得超过64K,而这里定义的“Large DataUpdate”命令可以读写最大至16M的文件。
和海量数据读指令类似,海量数据写指令也采用符合ISO7816协议的APDU命令格式。图5b显示了符合APDU命令格式的海量数据写指令。
根据本实施方式,CLA为0×A0,为GSM系统标准的CLA。INS为0×E2,为扩展的一个INS,表示该APDU命令是一条“海量数据写”指令。P1、P2两个字节作为一个整体,指示待传输数据块的块地址。本领域技术人员可以理解,在海量数据写指令中指示的块地址是指与该数据块对应的在用户识别模块中分配的用于存储该数据块的存储空间(存储块)所对应的块地址。将该决地址乘以预定长度(256字节),即可获得该待写入数据块在用户识别模块中对应的应写入的起始位置。Lc代表与该块地址对应的待写入的数据块的长度,其值为0×00~0×FF,例如Lc=0×00表示待写入数据块的长度为256字节。后续的“Data”部分代表希望进行传输的数据,其长度等于Lc部分指明的长度。例如,对某一个APDU命令,其命令为:0×A0 0×E2 0×32 0×EF 0×350×XXXXX,其含义为向本文件中从(0×32EF*256)开始的那个块的起始位置写入0×35个字节的数据。
可以理解,为便于文件传输,在根据预定长度划分文件时,通常使各数据块的长度等于预定长度(最后一个数据块除外)。
在本实施方式中,由于受到APDU命令格式的限制,预定长度的大小可以为小于256字节的任意正整数。例如,考虑到某些手机可能无法处理长度达到256字节的数据,可以选择预定长度的大小为128字节,或者200字节。但是,本领域技术人员可以理解,本发明并不仅限于采用APDU命令格式,而是可以采用其它的符合接口规范的命令格式,因此,预定长度的大小也不仅限于小于256字节。
在本实施方式中,如果选择预定长度为256字节,则海量数据读指令或海量数据写指令最大可以处理的文件的大小为256*65535=16,776,960字节。通过这样,就可以获取文件内部全部16M的数据,在很大程度上扩展了现有指令的寻址空间。
根据GSM11.11规范,IO的数据传输速率只有在系统刚刚启动时才可以更改,在用户识别模块运行过程中无法发生变化。这种性质不利于进行大数据量的快速传输。因此,为了提高海量数据传输的速度,通讯协议扩展模块还可以进一步提供“更改IO数据传输速率”的指令,从而可以在执行海量数据传输前,更改IO数据传输速率。根据本实施方式,更改IO数据传输速率指令也采用符合ISO7816协议的APDU命令格式。图5c显示了符合APDU命令格式的更改IO数据传输速率。
这是一个标准的基于ISO7816的APDU命令,其中,CLA为0×A0,为GSM系统标准的CLA。INS为0×E4,为扩展的一个INS,表示该APDU命令是一条“更改IO数据传输速率”指令。P1、P2两个字节均为0×00,在本指令中为扩展预留字节。P3指示需要实现的IO数据传输速率,例如可以采用0×11代表速率为9600(bit/s),0×95代表115200(bit/s)等。
为实现上述方法,本发明进一步提供了一种支持上述数据传输的方法的用户识别模块。该用户识别模块可以通过在现有的支持海量存储的用户识别模块上扩展新的功能模块的方式得到。
再次参考图4,根据本发明的支持与移动终端之间海量数据传输的用户识别模块430包括:数据存储模块431,提供大容量的存储空间以存储海量数据。通信协议扩展模块432,用于接收由移动终端发出的海量数据读指令或写指令,并根据相应指令中指示的数据块的块地址和块长度确定数据块的起始地址。数据处理模块433,根据所述起始地址,将所述数据块读出或者写入用户识别模块。其中,通信协议扩展模块432还能够进一步接收由移动终端发出的更改IO数据传输速率指令,从而在执行海量数据读或写指令前更改IO的数据传输速率。
本发明的一个具体实施例是基于JAVA语言实现的,在一款具有4M存储空间的SIM卡上,通过功能扩展模块,实现对上述“海量数据读”和“海量数据写”和“更改IO传输数率”等指令的支持。当SIM卡收到从手机传来的这些指令后,就可以根据这些指令做出相应的响应的操作。
如上所述,通过本发明,可以将从SIM卡读取的数据存放在手机上的特定位置,准备以后安装和使用。并且,由于采用本发明的功能扩展模块的海量数据传输方法兼容现有的数据传输方法,即使移动终端或用户识别模块之一不支持该海量数据传输方法,或者当无需使用该海量数据传输方法时,仍然可以采用现有的数据传输方法完成数据传输。
如上所示的实现从用户识别模块向移动终端传输数据和安装软件的方法可以在所有支持J2ME和JSR177的手机上执行。基于此方法,海量的数据可以方便的从用户识别模块传输到移动终端中,并且不需对手机进行任何结构更改,仅需下载一个小的JAVA应用。因此,本发明可以为用户提供方便、迅速的数据传输方法。
本发明不受上述的实施方式的限制,并且能够在权利要求限定的本发明的范围内进行各种改进和变化。这些改进或变化应当被视为落入本发明的保护范围内。