CN103927189A - 智能卡片内操作系统补丁的实现方法 - Google Patents
智能卡片内操作系统补丁的实现方法 Download PDFInfo
- Publication number
- CN103927189A CN103927189A CN201310009473.3A CN201310009473A CN103927189A CN 103927189 A CN103927189 A CN 103927189A CN 201310009473 A CN201310009473 A CN 201310009473A CN 103927189 A CN103927189 A CN 103927189A
- Authority
- CN
- China
- Prior art keywords
- function
- patch
- array
- pointer
- address
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种智能卡片内操作系统补丁的实现方法,将片内操作系统的主程序存放在ROM中,在主程序中建立第一函数指针数组,将要打补丁的函数地址填入第一函数指针数组,并产生相对应的索引;将片内操作系统的补丁程序存入EEPROM中,在补丁程序中,在固定的EEPROM地址上建立第二函数指针数组;在主程序中定义一个工作数组指针,用来存放函数指针数组的首地址;在主程序中先确定好补丁程序中的第二函数指针数组的首地址和补丁标识的存放地址;主程序执行时先检查是否有补丁标识,若无标识,则将第一函数指针数组的首地址付给工作数组指针;若发现补丁标识,则将第二函数指针数组的首地址付给工作数组指针。本发明能够提高COS的运行效率。
Description
技术领域
本发明涉及智能卡操作系统软件开发领域,特别是涉及一种智能卡COS(Chip Operating System,片内操作系统)补丁的实现方法。
背景技术
智能卡片内操作系统程序一般是在智能卡生产时将操作系统的程序通过掩膜的方式固化在芯片ROM内,程序不允许再修改。如果要修改操作系统程序错误(BUG)或增加新的功能,一般使用补丁来实现,补丁程序代码一般是存放在可多次擦写的EEPROM中。
COS补丁的一般实现方法是每个补丁函数运行时都要去判断这个函数否打过补丁,如果有补丁,就运行补丁程序,否则运行原程序。这种方法的缺点是会使COS的运行速度降低。
发明内容
本发明要解决的技术问题是提供一种智能卡片内操作系统补丁的实现方法,能够提高COS的运行效率。
为解决上述技术问题,本发明的智能卡片内操作系统补丁的实现方法,包括如下步骤:
步骤一,将智能卡片内操作系统的主程序存放在ROM中,在所述主程序中建立第一函数指针数组,将需要打补丁的函数地址填入该第一函数指针数组,并产生相对应的索引;
将智能卡片内操作系统的补丁程序存入EEPROM中,在所述补丁程序中,在固定的EEPROM地址上建立第二函数指针数组;
步骤二,在所述主程序中定义一个工作数组指针,用来存放函数指针数组的首地址;由工作数组指针来选择第一函数指针数组或第二函数指针数组;
步骤三,在所述主程序中先确定好补丁程序中的第二函数指针数组的首地址和补丁标识的存放地址;
步骤四,主程序执行时先检查是否有补丁标识,若无标识,则将第一函数指针数组的首地址付给所述工作数组指针;若发现补丁标识,则将第二函数指针数组的首地址付给工作数组指针。
采用本发明的方法,通过两个函数指针数组,使主程序只需在上电时判断一次片内操作系统是否有补丁标识,并选择其中的一个函数指针数组工作,之后的流程与是否有补丁无关,即无需再判断补丁标识;片内操作系统即使打补丁也不影响其运行速度,提高了COS运行效率。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
附图是智能卡片内操作系统补丁的实现方法流程图。
具体实施方式
所述智能卡片内操作系统补丁的实现方法,将整个智能卡片内操作系统分为两个部分,一部分是存放在ROM中的主程序,另一部分是存放在EEPROM中的补丁程序,两部分程序中都有一个函数指针数组。在ROM的主程序中建立第一函数指针数组,将所有需要打补丁的函数的地址放入在该数组中,并产生相对应的索引,即用需要打补丁的函数地址初始化第一函数指针数组。同时,在EERPOM的地址范围内,在一个确定的地址上建立第二函数指针数组。两个函数指针数组的索引号相同,但内容将会有所不同;两个函数指针数组相同的内容是在EEPROM中没有重复定义的补丁函数的地址,不同的是在开发补丁程序时实际已经更新补丁函数的地址。即,在所述补丁程序中实现要打补丁的函数,并将第二函数指针数组中要打补丁的函数地址更新为新的补丁函数地址;如果在所述补丁程序中有补丁函数做了重新定义,则将这个重新定义的补丁函数的地址更新到所述第二函数指针数组的相应位置。
结合附图所示,主程序执行时,用需要打补丁的函数地址初始化第一函数指针;主程序通过读取EEPROM中的补丁标识,判断EEPROM中是否有补丁标识;若有补丁标识,则将第二函数指针数组的首地址交付给工作数组指针,若无补丁标识,则将第一函数指针数组的首地址交付给工作数组指针;所述第二函数指针数组的首地址,在所述主程序中作为一个常量引用。
补丁程序先在第二函数指针数组中找到需要打补丁的函数地址,然后将该地址更换为新的补丁函数的地址。
在所述主程序中,所有需要打补丁的函数不是被直接调用,而是通过工作数组指针选择的函数指针数组中的地址调用相应的函数。
在所述主程序中,对于未来可能会增加的新功能,先定义一定数量的空函数,即只定义函数,该函数不做任何事;并将该函数当作正常的将要打补丁的函数同样处理,将所述空函数地址填入第一函数指针数组中。
存放在ROM的主程序具体实现方法,包括如下步骤:
步骤1,先定义一个工作数组指针,用于存放第一函数指针数组或第二函数指针数组的首地址。程序一开始,会判断是否有补丁标识(位于EEPROM的地址范围中,事先确定为具体地址),如无补丁标识,则将第一函数指针数组的首地址付给工作数组指针;如发现补丁标识,则将第二函数指针数组的首地址付给工作数组指针。
步骤2,在主程序中,当要调用函数时,将通过工作数组指针,找到函数指针数组内相对应的函数地址,通过此地址调用函数,实现功能。
存放在EEPROM中的补丁程序具体实现方法,包括如下步骤:
第1步,在确定的EEPROM地址上建立第二函数指针数组,更新真正想要打补丁的函数,并将此函数地址写入第二函数指针数组相应的位置。
第2步,在EEPROM确定的地址位置上置补丁标识。
补丁标识是存放在EEPROM中,智能卡芯片内的EEPROM,在没写入具体值时,它是一个不确定值,可以用2个字节作为标识,如0X55AA等,这个确定的值,如果不是通过人为写入,它是不会出现在EEPROM中;采用下载工具下载补丁时,同时将此标识写入EEPROM中。
补丁标识和补丁程序通过下载工具写入EEPROM中。
实施例一,存放在ROM中的主程序代码:
实施例二,存放在EEPROM中的补丁程序代码。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (7)
1.一种智能卡片内操作系统补丁的实现方法,其特征在于:
步骤一,将智能卡片内操作系统的主程序存放在ROM中,在所述主程序中建立第一函数指针数组,将要打补丁的函数地址填入该第一函数指针数组,并产生相对应的索引;
将智能卡片内操作系统的补丁程序存入EEPROM中,在所述补丁程序中,在固定的EEPROM地址上建立第二函数指针数组;
步骤二,在所述主程序中定义一个工作数组指针,用来存放函数指针数组的首地址;由工作数组指针来选择第一函数指针数组或第二函数指针数组;
步骤三,在所述主程序中先确定好补丁程序中的第二函数指针数组的首地址和补丁标识的存放地址;
步骤四,主程序执行时先检查是否有补丁标识,若无标识,则将第一函数指针数组的首地址付给所述工作数组指针;若发现补丁标识,则将第二函数指针数组的首地址付给工作数组指针。
2.根据权利要求1所述的方法,其特征在于:在所述主程序中,所有需要打补丁的函数不是被直接调用,而是通过函数指针数组中的地址调用相应的函数。
3.根据权利要求1所述的方法,其特征在于:在所述主程序中,对于未来会增加的新功能,先定义一定数量的空函数,即只定义函数,该函数不做任何事;并将该函数当作正常的将要打补丁的函数同样处理,将所述空函数地址填入第一函数指针数组中。
4.根据权利要求1所述的方法,其特征在于:两个函数指针数组的索引号相同,并且具有相同的在EEPROM中没有重复定义的补丁函数的地址。
5.根据权利要求1或4所述的方法,其特征在于:在所述补丁程序中实现要打补丁的函数,并将第二函数指针数组中要打补丁的函数地址更新为新的补丁函数地址;如果在所述补丁程序中有补丁函数做了重新定义,则将这个重新定义的补丁函数的地址更新到所述第二函数指针数组的相应位置。
6.根据权利要求1所述的方法,其特征在于:所述第二函数指针数组的首地址,在所述主程序中作为一个常量引用。
7.根据权利要求1所述的方法,其特征在于:所述补丁标识为2字节,存放在EEPROM中;智能卡芯片内的EEPROM,在没写入具体值时,它是一个不确定值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310009473.3A CN103927189B (zh) | 2013-01-11 | 2013-01-11 | 智能卡片内操作系统补丁的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310009473.3A CN103927189B (zh) | 2013-01-11 | 2013-01-11 | 智能卡片内操作系统补丁的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927189A true CN103927189A (zh) | 2014-07-16 |
CN103927189B CN103927189B (zh) | 2017-10-31 |
Family
ID=51145421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310009473.3A Active CN103927189B (zh) | 2013-01-11 | 2013-01-11 | 智能卡片内操作系统补丁的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927189B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019047142A1 (zh) * | 2017-09-08 | 2019-03-14 | 深圳市汇顶科技股份有限公司 | 程序打补丁的方法、装置、微控制单元和终端设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060064338A (ko) * | 2004-12-08 | 2006-06-13 | 삼성에스디에스 주식회사 | 스마트 카드 운영체제의 패치 방법 |
KR100678609B1 (ko) * | 2005-09-13 | 2007-02-06 | 주식회사 하이스마텍 | 스마트카드에서 명령어 호출 시스템 및 방법, 이를 위한패치 시스템 및 방법 |
CN101533481A (zh) * | 2009-04-03 | 2009-09-16 | 东信和平智能卡股份有限公司 | 掩膜智能卡的功能扩展方法 |
-
2013
- 2013-01-11 CN CN201310009473.3A patent/CN103927189B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060064338A (ko) * | 2004-12-08 | 2006-06-13 | 삼성에스디에스 주식회사 | 스마트 카드 운영체제의 패치 방법 |
KR100678609B1 (ko) * | 2005-09-13 | 2007-02-06 | 주식회사 하이스마텍 | 스마트카드에서 명령어 호출 시스템 및 방법, 이를 위한패치 시스템 및 방법 |
CN101533481A (zh) * | 2009-04-03 | 2009-09-16 | 东信和平智能卡股份有限公司 | 掩膜智能卡的功能扩展方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019047142A1 (zh) * | 2017-09-08 | 2019-03-14 | 深圳市汇顶科技股份有限公司 | 程序打补丁的方法、装置、微控制单元和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103927189B (zh) | 2017-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273148B (zh) | 数据的更新驱动迁移 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN105487907A (zh) | 一种差分包的制作方法和装置 | |
CN102662688B (zh) | 一种Nor flash更新方法及装置 | |
CN103517141A (zh) | 基于ip机顶盒分段式数据升级方法 | |
CN108984328A (zh) | 一种堆栈回溯的方法及装置 | |
EP2321734B1 (en) | Type descriptor management for frozen objects | |
CN115695186A (zh) | 一种物联网设备升级方法、系统及电子设备 | |
CN104699500A (zh) | 智能设备中实现引导程序自动升级的方法 | |
CN103632185A (zh) | 一种具有扩展功能的掩膜智能卡 | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
EP3507690B1 (en) | Java card application memory footprint optimization | |
CN103761118B (zh) | 一种智能卡及智能卡内部署应用的方法 | |
CN103927189A (zh) | 智能卡片内操作系统补丁的实现方法 | |
JP6810626B2 (ja) | 現金処理システム | |
CN110399166A (zh) | ME Nonce值的保存方法、装置、设备及存储介质 | |
EP2898413B1 (en) | A security module and a method for optimum memory utilization | |
CN110990018B (zh) | 一种嵌入式系统的编译方法及编译系统 | |
CN109508299A (zh) | 存储器定位方法、装置、计算机装置及计算机可读存储介质 | |
EP3525500B1 (en) | Method for reducing non-volatile memory fragmentation in integrated circuit cards, corresponding card and apparatus | |
CN108363614B (zh) | 一种应用的业务模块管理方法、装置及服务器 | |
CN101887529A (zh) | 一种用户可自行更换加密算法的射频识别卡及其方法 | |
JP6769150B2 (ja) | 電子情報記憶媒体、情報処理方法、及び情報処理プログラム | |
CN104793964A (zh) | java卡及其应用更新方法、应用于java卡的终端、智能卡系统 | |
CN117406933B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |