CN100504872C - 一种在电信智能卡中存储应用数据的方法 - Google Patents
一种在电信智能卡中存储应用数据的方法 Download PDFInfo
- Publication number
- CN100504872C CN100504872C CNB200610171632XA CN200610171632A CN100504872C CN 100504872 C CN100504872 C CN 100504872C CN B200610171632X A CNB200610171632X A CN B200610171632XA CN 200610171632 A CN200610171632 A CN 200610171632A CN 100504872 C CN100504872 C CN 100504872C
- Authority
- CN
- China
- Prior art keywords
- application
- branch
- data
- pointer
- application data
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种在电信智能卡中存储应用数据的方法。其中,所述应用数据保存在由多个定长记录文件组成的消息堆文件中,以链表的方式连接一个或多个记录文件构成一个应用数据并保存到所述电信智能卡内的分支下;该应用数据包括应用头、应用体和应用尾三个部分;应用头中包含上一个应用/分支指针、下一个应用/分支指针,上一个应用/分支指针指向分支中它的前一个应用数据,下一个应用/分支指针指向分支中它的后一个应用数据。在本发明中,应用数据与分支构成一个环状的双向链表,可以方便查找分支和链表中的任意一个应用数据。利用本发明,能够在电信智能卡上灵活分配空间,方便存储大容量数据。
Description
技术领域
本发明涉及一种在电信智能卡中存储应用数据的方法,尤其涉及一种在电信智能卡中存储和管理大量基于智能卡应用开发工具开发的应用数据的方法,属于电信智能卡技术领域。
背景技术
电信智能卡是在电信领域使用的各类智能卡(Smart Card)的统称,包括GSM蜂窝移动通信系统所使用的SIM卡,CDMA通信系统所使用的UIM卡,PHS通信系统使用的PIM卡等。这些卡都具有与之相对应的智能卡应用开发工具,例如SIM卡为STK(SIM TOOL KIT),UIM卡为UTK应用开发包,PIM卡为PTK应用开发包。
以目前使用最为广泛的SIM卡为例,参见图1所示,一个典型的SIM卡包括位于底层的卡片操作系统(Card OS),与卡片操作系统直接对接的STK和文件管理(file management)模块,由STK负责管理的多项应用业务等。其中,STK允许基于智能卡的用户身份识别模块SIM运行自己的应用软件,并通过空中下载(Over the Air,简写为OTA)技术向用户提供个性化菜单。OTA技术是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。它使得移动通信服务商不但可以提供移动语音和数据服务,而且还可以提供更多的移动新业务下载。通过菜单定制,空中下载技术可以让用户根据自己的需要选取感兴趣的业务,删除不需要的业务,随时下载、更新,以实现个性化的SIM卡配置。
在现阶段,最为简单可靠的空中下载接口是短消息通道。借助于STK功能和短消息通道,支持空中下载的OTA卡提供人机接口界面供用户发起下载申请,OTA应用下载服务器根据用户请求,以数据短消息(SIM_DataDownload模式)的形式将相应的服务下载内容发给用户手机,并将下载数据传递给用户OTA卡,OTA卡对下载内容进行组织存贮,就可以实现相应的STK卡菜单管理。
SIM卡的发展方向就是卡片的存储容量越来越大。目前,128k甚至256k的大容量SIM卡已经开始走向市场。大容量SIM卡的出现为实现复杂的STK应用奠定了基础,同时也产生了新的问题:对卡片内与应用业务有关的数据管理难度增大。例如对于卡片中几十K和几百K数据的管理,现有的方法是:卡片中根据STK菜单中几个大的分支,建立对应的文件,每个文件中存放本分支下的所有的应用数据。在这种管理模式下,应用数据是按顺序排放的,如果增加一个新的应用则直接把应用数据写在文件后部空闲的部分;如果删除一个应用,则要把后面的数据向前移动,使存储器不产生碎片。这样的存储管理方法会直接带来两个缺陷:①存储器在删除应用的时候,要大量移动数据,这样操作是非常危险的。智能卡中的存储器擦写次数有一定限制,而且擦写所需要的时间也比较长。②每个分支的应用存储空间是事先分配好的,在使用中不能动态的分配。所以不能灵活满足应用的需要。
其他类型的电信智能卡如UIM卡、PIM卡等也与之情况类似,在此不一一赘述了。
发明内容
本发明的目的是针对现有存储管理方法的不足,提供一种在电信智能卡中能够有效存储和管理大量基于智能卡应用开发工具开发的应用数据的方法。
为实现上述的发明目的,本发明采用下述的技术方案:
一种在电信智能卡中存储应用数据的方法,其特征在于:
所述应用数据保存在由多个定长记录文件组成的消息堆文件中,以链表的方式连接一个或多个记录文件构成一个应用数据并保存到所述电信智能卡内的分支下;
所述应用数据包括应用头、应用体和应用尾三个部分;
所述应用头中包含上一个应用/分支指针、下一个应用/分支指针,所述上一个应用/分支指针指向分支中它的前一个应用数据,所述下一个应用/分支指针指向分支中它的后一个应用数据。
其中,所述定长记录文件的头两字节保存该应用数据存储的下一个定长记录文件的指针。
所述应用数据的最后一个定长记录文件中,其头两字节保存分支中下一个应用数据的第一个定长记录文件的指针。
所述上一个应用/分支指针是分支的第一个应用数据时,它指向分支。
所述下一个应用/分支指针是分支的最后一个应用数据时,它指向分支。
所述上一个应用/分支指针和下一个应用/分支指针的表示方式是:高位为0表示低15位为应用的记录指针;高位为1表示低15位为分支的记录指针。
所述消息堆文件中未被使用的定长记录文件存放在空闲链表中;
当有新的应用数据下载时,从所述空闲链表中分配定长记录文件给所述新的应用数据;
所述新的应用数据保存分配的定长记录文件后,插入分支的应用链表中。
删除一个应用数据时,释放的定长记录文件添加到所述空闲链表中。
在所述应用数据的应用头中定义用来表示应用数据是否被收全的消息完整标记。
当电信智能卡收到新的应用数据的第一条短信时,根据传输层中的该批次短信总数X,设置所述消息完整标记的低X位为0,其他位为1,其中X为正整数;再根据传输层中的该条短信的序号,设置所述消息完整标记对应位为1,保存短信;
当收到该应用数据的其他短信时,根据传输层中的该条短信的序号,设置消息完整标记对应位为1,保存短信;
当消息完整标记为OxFF时,表示应用数据收全了所有的短信。
所述应用包括但不限于基于空中下载技术的STK应用。
本发明所提供的在电信智能卡中存储应用数据的方法中,应用数据与分支构成一个环状的双向链表,可以方便查找分支和链表中的任意一个应用数据。利用本发明,能够在电信智能卡上灵活分配空间,方便存储大容量数据。
附图说明
下面结合附图和具体实施方式对本发明作进一步的说明。
图1是一个典型的电信智能卡的内部结构示意图。
图2为应用头的数据结构示意图。
图3为消息堆的数据结构示意图。
图4为消息堆中,记录的数据结构示意图。
图5为页面存储模型的示意图。
具体实施方式
下面,以目前使用最为广泛的SIM卡为例对本发明加以详细的说明。
基于OTA技术下载的STK应用数据(简称为STK应用)由应用头、应用体和应用尾三个部分组成。图2显示了应用头的基本数据结构。该应用头主要是保存与存储和浏览相关的数据和属性。应用体是STK应用的内容。应用尾主要保存一些附加的数据。根据具体应用业务的不同,每个STK应用的长度也各不相同,小的STK应用一条数据短信就能够实现下载,最大的STK应用要用8条数据短信才能够下载。
在本发明中,STK应用保存在被叫做消息堆的一组文件中。图3显示了该消息堆的数据基本结构。其中,文件名为2900/6F01-6F31,结构类型为二进制,记录方式管理,记录大小为116,访问条件为:读PIN1;刷新ADM;去活ADM;激活ADM等。在消息堆文件中,页面记录链表指针的低15位为数据链的下一条记录的指针,“FFFF”表示没有后续的记录。消息堆是由多个定长记录文件组成,STK应用根据自身的大小占用一个或多个定长记录文件(以下简称记录)。
参见图4所示的消息堆中记录的数据结构,在记录的头两字节保存着STK应用存储的下一个记录的指针,使用这种方式把多条记录组成一个STK应用。STK应用的最后一条记录的头两字节保存的是分支中下一个STK应用的第一条记录的指针。这样设计的目的是被同一个分支占用的所有记录都在同一个链表中的,当整个分支被删除时操作将比较方便。
消息堆文件中未被使用的记录存放在空闲链表中。当有新的STK应用下载的时候就要从空闲链表中分配一些记录给新的STK应用,新的STK应用在保存到这些记录后,插入分支的应用链表中。如果删除一个STK应用释放的记录要加到空闲链表中去。
STK应用以双向链表的方式保存到分支下。应用头中包含上一个应用/分支指针、下一个应用/分支指针。上一个应用/分支指针指向分支中它的前一个STK应用,当这个应用是分支的第一个STK应用时它将指向分支。下一个应用/分支指针指向分支中它的后一个STK应用,当这个应用是分支的最后一个STK应用时它将指向分支。在每个分支的基本信息也保存着分支的第一个和最后一应用的指针。上面所述的STK应用与分支构成一个环状的双向链表,这样的设计可以方便查找分支和链表中的任意一个STK应用。
上一个应用/分支指针和下一个应用/分支指针的表示方式是:高位为0表示低15位为STK应用的记录指针;高位为1表示低15位为分支的记录指针。记录指针的详细定义为低10位为栏目注册表中的记录号,范围为0~1023;高5位为文件ID的低5位,文件ID的高11位固定为“1101111000”。分支注册表的文件ID固定为0x6F00。消息堆文件的文件ID为0x6F01-0x6f1F,最多可以分配31744记录、管理3.5M的数据。
应用头中定义的消息完整标记是用来表示一个STK应用是否被收全的。当卡片收到新的STK应用的第一条短信时,卡片会根据传输层中的该批次短信总数X,设置消息完整标记的低X位为0,其他位为1,其中X为正整数。再根据传输层中的该条短信的序号,设置消息完整标记对应位为1,保存短信。当收到该STK应用的其他短信时,则根据传输层中的该条短信的序号,设置消息完整标记对应位为1,保存短信。当消息完整标记为OxFF时,表示STK应用收全了所有的短信。这样做的好处是批次间乱序的情况不影响应用的接收。原有处理方式是只有同一个批次全部收全的时候,卡片才会保存收到的STK应用,如果前一个批次的短信没有接收全的时候,短信是存储在缓冲区中的,当收到另外一个批次的短信的时候,卡片先要清除卡片缓冲区的数据。前一个批次的短信就将被丢弃。
参见图5所示的页面存储模型,电信智能卡处理STK应用数据的典型流程如下:
●浏览“分支1”下的STK应用:
A.从“分支1”的属性中获取分支第一个STK应用的指针,赋值给指针变量A。
B.判断指针A最高位是否为1,如果为1,表示分支下没有后续的STK应用,转到E。
C.读取指针A指向记录中的应用的标题,并把它加到菜单数据中。
D.获取指针A指向应用的下一个应用/分支指针,赋值给指针变量A。转到B。
E.根据菜单数据,组织SelectItme主动式命令,发给手机显示。
在上述的步骤E中,SelectItme主动式命令是STK命令中的一条,它的作用是:电信智能卡发送给手机一些可显示的选项,用户可以选择其中一项,手机再把用户选择的结果传递给电信智能卡。
●删除STK应用,例如删除“分支1”中的“STK应用3”:
A.保存删除STK应用的指针“0x0406”(下面称作指针A)、它的最后一条记录指针0x0408(下面称作指针B)、上一个应用指针/分支指针0x0403(下面称作指针C)和下一个应用指针/分支指针0x0412(下面称作指针D)。
B.把空闲链表的头指针0x0409写到指针B指向记录的下一条记录指针。
C.把指针A写道空闲链表的头指针。
D.判断指针C是否为STK应用指针(指针C的最高位是否为1)?是,把指针D写道指针C指向分支的第一个STK应用指针。转到F。
E.把指针D写道指针C指向的STK应用的下一个应用指针。找到指针C指向STK应用的最后一条记录0x0406,把指针D写到该记录的下一条记录指针。
F.判断指针D是否为STK应用指针(指针C的最高位是否为1)?是,把指针C写道指针D指向分支的最后一个STK应用指针。转到H。
G.把指针C写道指针D指向的STK应用的下一个应用指针。
H.程序结束,返回正确代码。
●添加STK应用:
A.在STK应用制定的分支下查找是否有相同ID的STK应用存在。如果存在转到F。
B.查找空闲链表的空记录个数。如果记录数不够,程序结束,返回错误代码。
C.保存空链表头指针(下面称作指针A),把分配的最后一个记录的下一条记录指针写道空链表头指针。
D.把新分配的STK应用插到分支的STK应用链表中。
E.设置STK应用的消息完整标记。
F.根据传输层中的该条短信的序号设置消息完整标记对应的位为1。保存短信到指定序号的记录中。
G.判断消息完整标记是否为Oxff。是,程序结束,返回STK应用已经收全的代码。
H.程序结束,返回短信保存成功的代码。
在上述的实施例中,所介绍的应用都是STK应用,但显然UTK应用或者PTK应用等也同样能适用于本发明,在此就不一一赘述了。
上面对本发明所述的在电信智能卡中存储应用数据的方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (12)
1.一种在电信智能卡中存储应用数据的方法,所述应用数据为基于智能卡应用开发工具开发的数据,其特征在于:
所述应用数据保存在由多个定长记录文件组成的消息堆文件中,以链表的方式连接一个或多个记录文件构成一个应用数据并保存到所述电信智能卡内的分支下。
2.如权利要求1所述的在电信智能卡中存储应用数据的方法,其特征在于:
所述应用数据包括应用头、应用体和应用尾三个部分;
所述应用头中包含上一个应用/分支指针、下一个应用/分支指针,所述上一个应用/分支指针指向分支中它的前一个应用数据,所述下一个应用/分支指针指向分支中它的后一个应用数据。
3.如权利要求1所述的在电信智能卡中存储应用数据的方法,其特征在于:
在所述定长记录文件的头两字节保存该应用数据存储的下一个定长记录文件的指针。
4.如权利要求1所述的在电信智能卡中存储应用数据的方法,其特征在于:
所述应用数据的最后一个定长记录文件中,其头两字节保存分支中下一个应用数据的第一个定长记录文件的指针。
5.如权利要求2所述的在电信智能卡中存储应用数据的方法,其特征在于:
所述上一个应用/分支指针是分支的第一个应用数据时,它指向分支。
6.如权利要求2所述的在电信智能卡中存储应用数据的方法,其特征在于:
所述下一个应用/分支指针是分支的最后一个应用数据时,它指向分支。
7.如权利要求5或6所述的在电信智能卡中存储应用数据的方法,其特征在于:
所述上一个应用/分支指针和下一个应用/分支指针的表示方式是:高位为0表示低15位为应用的记录指针;高位为1表示低15位为分支的记录指针。
8.如权利要求1所述的在电信智能卡中存储应用数据的方法,其特征在于:
所述消息堆文件中未被使用的定长记录文件存放在空闲链表中;
当有新的应用数据下载时,从所述空闲链表中分配定长记录文件给所述新的应用数据;
所述新的应用数据保存分配的定长记录文件后,插入分支的应用链表中。
9.如权利要求8所述的在电信智能卡中存储应用数据的方法,其特征在于:
删除一个应用数据时,释放的定长记录文件添加到所述空闲链表中。
10.如权利要求2所述的在电信智能卡中存储应用数据的方法,其特征在于:
在所述应用数据的应用头中定义用来表示应用数据是否被收全的消息完整标记。
11.如权利要求10所述的在电信智能卡中存储应用数据的方法,其特征在于:
当电信智能卡收到新的应用数据的第一条短信时,根据传输层中的该批次短信总数X,设置所述消息完整标记的低X位为0,其他位为1,其中X为正整数;再根据传输层中的该条短信的序号,设置所述消息完整标记对应位为1,保存短信;
当收到该应用数据的其他短信时,根据传输层中的该条短信的序号,设置消息完整标记对应位为1,保存短信;
当消息完整标记为0xFF时,表示应用数据收全了所有的短信。
12.如权利要求1~6及8~11中任意一项所述的在电信智能卡多应用之间建立相互联系的方法,其特征在于:
所述应用包括但不限于基于空中下载技术的STK应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610171632XA CN100504872C (zh) | 2006-12-31 | 2006-12-31 | 一种在电信智能卡中存储应用数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610171632XA CN100504872C (zh) | 2006-12-31 | 2006-12-31 | 一种在电信智能卡中存储应用数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101000620A CN101000620A (zh) | 2007-07-18 |
CN100504872C true CN100504872C (zh) | 2009-06-24 |
Family
ID=38692592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610171632XA Expired - Fee Related CN100504872C (zh) | 2006-12-31 | 2006-12-31 | 一种在电信智能卡中存储应用数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100504872C (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009113017A1 (en) | 2008-03-10 | 2009-09-17 | Nxp B.V. | Method and devices for installing and retrieving linked mifare applications |
CN101404797B (zh) * | 2008-11-07 | 2012-12-19 | 中兴通讯股份有限公司 | 长短消息的存储方法、存储管理装置以及存储系统 |
CN101588404B (zh) * | 2009-06-16 | 2012-05-09 | 中兴通讯股份有限公司 | 针对通用集成电路卡上多应用管理的实现方法及装置 |
CN102520418A (zh) * | 2011-12-28 | 2012-06-27 | 东南大学 | 一种用于保证gps导航数据完整性的数据存储实现方法 |
CN102608622B (zh) * | 2012-03-08 | 2013-07-10 | 东南大学 | 一种全球定位系统导航数据的完整性存储方法 |
CN104239564B (zh) * | 2014-09-28 | 2018-02-09 | 深圳市锐明技术股份有限公司 | 一种文件索引组织及修复的方法及装置 |
CN108345671A (zh) * | 2018-02-09 | 2018-07-31 | 深圳市道通科技股份有限公司 | 文件存储方法、装置和终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1418032A (zh) * | 2002-11-13 | 2003-05-14 | 大唐微电子技术有限公司 | 用户识别模块存储空间的动态分配方法 |
CN1444414A (zh) * | 2002-03-12 | 2003-09-24 | 斯伦贝谢神码(北京)信息技术有限公司 | 用户识别模块卡、空中激活用户识别模块卡的方法和系统 |
CN1633141A (zh) * | 2005-01-18 | 2005-06-29 | 大唐微电子技术有限公司 | 将sim卡电话簿导入智能终端的方法和所用的智能终端 |
-
2006
- 2006-12-31 CN CNB200610171632XA patent/CN100504872C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1444414A (zh) * | 2002-03-12 | 2003-09-24 | 斯伦贝谢神码(北京)信息技术有限公司 | 用户识别模块卡、空中激活用户识别模块卡的方法和系统 |
CN1418032A (zh) * | 2002-11-13 | 2003-05-14 | 大唐微电子技术有限公司 | 用户识别模块存储空间的动态分配方法 |
CN1633141A (zh) * | 2005-01-18 | 2005-06-29 | 大唐微电子技术有限公司 | 将sim卡电话簿导入智能终端的方法和所用的智能终端 |
Non-Patent Citations (1)
Title |
---|
INDEL 200500027A 2006.12.08 |
Also Published As
Publication number | Publication date |
---|---|
CN101000620A (zh) | 2007-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100504872C (zh) | 一种在电信智能卡中存储应用数据的方法 | |
CN101751406B (zh) | 一种实现基于列存储的关系型数据库的方法及装置 | |
CN100468402C (zh) | 一种数据存储及查询方法 | |
CN101227671B (zh) | 与移动终端交互管理数据库的方法及智能卡 | |
CN100378663C (zh) | 将应用程序动态下载到用户识别模块的方法、系统及模块 | |
CN1149816C (zh) | 移动电话的扩展电话本 | |
CN101582092B (zh) | 一种实现保存内存中的数据的方法及装置 | |
US20060179066A1 (en) | Flexible file format for updating an address book | |
CN1913546A (zh) | 一种手机短信分类存储的方法 | |
CN100476726C (zh) | 一种资源受限设备及数据访问方法 | |
CN104462141A (zh) | 一种数据存储与查询的方法、系统及存储引擎装置 | |
CN104380322A (zh) | 用户事件内容、关联的装置和方法 | |
CN100499682C (zh) | 对用户识别卡中的电话薄联系人记录进行分组的方法 | |
CN114153848B (zh) | 区块链数据存储方法及装置、电子设备 | |
CN100524312C (zh) | 一种智能卡的海量数据存储与管理方法 | |
CN102760075A (zh) | 一种实现智能卡应用部署的方法及系统 | |
US20130095866A1 (en) | Method and terminal for processing short message | |
CN100334582C (zh) | 在手持装置中存储和检索数据的方法及装置 | |
CN102436380A (zh) | 一种stk菜单处理系统及其对菜单的处理方法 | |
CN100411468C (zh) | 移动通信终端短信的删除方法 | |
CN101404797B (zh) | 长短消息的存储方法、存储管理装置以及存储系统 | |
CN103595845B (zh) | 在用户识别卡中存储通讯记录的方法、装置及终端 | |
CN101014059A (zh) | 电子电话簿的数据信息存储和扩展的方法 | |
CN115809248B (zh) | 数据查询方法和装置以及存储介质 | |
CN100525542C (zh) | 可实现大量短消息存储和管理的用户识别模块及其方法 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090624 Termination date: 20131231 |