CN103927189B - 智能卡片内操作***补丁的实现方法 - Google Patents
智能卡片内操作***补丁的实现方法 Download PDFInfo
- Publication number
- CN103927189B CN103927189B CN201310009473.3A CN201310009473A CN103927189B CN 103927189 B CN103927189 B CN 103927189B CN 201310009473 A CN201310009473 A CN 201310009473A CN 103927189 B CN103927189 B CN 103927189B
- Authority
- CN
- China
- Prior art keywords
- function
- patch
- array
- address
- pointers
- 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
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种智能卡片内操作***补丁的实现方法,将片内操作***的主程序存放在ROM中,在主程序中建立第一函数指针数组,将要打补丁的函数地址填入第一函数指针数组,并产生相对应的索引;将片内操作***的补丁程序存入EEPROM中,在补丁程序中,在固定的EEPROM地址上建立第二函数指针数组;在主程序中定义一个工作数组指针,用来存放函数指针数组的首地址;在主程序中先确定好补丁程序中的第二函数指针数组的首地址和补丁标识的存放地址;主程序执行时先检查是否有补丁标识,若无标识,则将第一函数指针数组的首地址付给工作数组指针;若发现补丁标识,则将第二函数指针数组的首地址付给工作数组指针。本发明能够提高COS的运行效率。
Description
技术领域
本发明涉及智能卡操作***软件开发领域,特别是涉及一种智能卡COS(ChipOperating System,片内操作***)补丁的实现方法。
背景技术
智能卡片内操作***程序一般是在智能卡生产时将操作***的程序通过掩膜的方式固化在芯片ROM内,程序不允许再修改。如果要修改操作***程序错误(BUG)或增加新的功能,一般使用补丁来实现,补丁程序代码一般是存放在可多次擦写的EEPROM中。
COS补丁的一般实现方法是每个补丁函数运行时都要去判断这个函数是否打过补丁,如果有补丁,就运行补丁程序,否则运行原程序。这种方法的缺点是会使COS的运行速度降低。
发明内容
本发明要解决的技术问题是提供一种智能卡片内操作***补丁的实现方法,能够提高COS的运行效率。
为解决上述技术问题,本发明的智能卡片内操作***补丁的实现方法,包括如下步骤:
步骤一,将智能卡片内操作***的主程序存放在ROM中,在所述主程序中建立第一函数指针数组,将需要打补丁的函数地址填入该第一函数指针数组,并产生相对应的索引;
将智能卡片内操作***的补丁程序存入EEPROM中,在所述补丁程序中,在固定的EEPROM地址上建立第二函数指针数组;
步骤二,在所述主程序中定义一个工作数组指针,用来存放函数指针数组的首地址;由工作数组指针来选择第一函数指针数组或第二函数指针数组;
步骤三,在所述主程序中先确定好补丁程序中的第二函数指针数组的首地址和补丁标识的存放地址;
步骤四,主程序执行时先检查是否有补丁标识,若无标识,则将第一函数指针数组的首地址赋给所述工作数组指针;若发现补丁标识,则将第二函数指针数组的首地址赋给工作数组指针。
采用本发明的方法,通过两个函数指针数组,使主程序只需在上电时判断一次片内操作***是否有补丁标识,并选择其中的一个函数指针数组工作,之后的流程与是否有补丁无关,即无需再判断补丁标识;片内操作***即使打补丁也不影响其运行速度,提高了COS运行效率。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
附图1是智能卡片内操作***补丁的实现方法流程图。
具体实施方式
所述智能卡片内操作***补丁的实现方法,将整个智能卡片内操作***分为两个部分,一部分是存放在ROM中的主程序,另一部分是存放在EEPROM中的补丁程序,两部分程序中都有一个函数指针数组。在ROM的主程序中建立第一函数指针数组,将所有需要打补丁的函数的地址放入在该数组中,并产生相对应的索引,即用需要打补丁的函数地址初始化第一函数指针数组。同时,在EERPOM的地址范围内,在一个确定的地址上建立第二函数指针数组。两个函数指针数组的索引号相同,但内容将会有所不同;两个函数指针数组相同的内容是在EEPROM中没有重复定义的补丁函数的地址,不同的是在开发补丁程序时实际已经更新补丁函数的地址。即,在所述补丁程序中实现要打补丁的函数,并将第二函数指针数组中要打补丁的函数地址更新为新的补丁函数地址;如果在所述补丁程序中有补丁函数做了重新定义,则将这个重新定义的补丁函数的地址更新到所述第二函数指针数组的相应位置。
结合附图1所示,主程序执行时,用需要打补丁的函数地址初始化第一函数指针;主程序通过读取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 CN103927189A (zh) | 2014-07-16 |
CN103927189B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110192178B (zh) * | 2017-09-08 | 2023-03-10 | 深圳市汇顶科技股份有限公司 | 程序打补丁的方法、装置、微控制单元和终端设备 |
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 | 东信和平智能卡股份有限公司 | 掩膜智能卡的功能扩展方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103927189A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021102B (zh) | 自动化测试文件的生成方法及装置 | |
CN104205174A (zh) | 图形处理中的拼补着色 | |
CN107122188B (zh) | 项目进度条图像生成的方法及装置 | |
CN111179066B (zh) | 业务数据的批量处理方法、装置、服务器和存储介质 | |
US9311289B1 (en) | Spreadsheet document tab conditional formatting | |
CN110347545A (zh) | 一种业务平台缓存策略的测试方法及装置 | |
CN107741904A (zh) | 测试机自动配置方法、装置、设备及存储介质 | |
CN108279947A (zh) | 金融自助设备sp安装包适配的方法及装置 | |
CN109783346A (zh) | 基于关键字驱动的自动化测试方法、装置及终端设备 | |
CN109597979A (zh) | 清单表格生成方法、装置、计算机设备和存储介质 | |
CN103020753A (zh) | 单据状态显示***和单据状态显示方法 | |
CN106020905A (zh) | 一种微控制器固件开发与更新的方法及*** | |
CN103927189B (zh) | 智能卡片内操作***补丁的实现方法 | |
CN108984210A (zh) | 用于使用控制依赖图来将控制流程序转换成数据流程序的技术 | |
CN102541639B (zh) | 一种cpu卡数据处理方法、***及cpu卡 | |
CN102681936B (zh) | 一种针对金融***测试结果的验证方法及装置 | |
CN109542432A (zh) | 风控规则编辑方法及终端设备 | |
CN107133391A (zh) | 施工图纸的生成方法和*** | |
CN103729404A (zh) | 预算数据处理方法和*** | |
CN102662807A (zh) | 一种Java卡栈性能测试应用程序及其框架的制作方法 | |
CN110516333A (zh) | 一种pcb中的器件布局方法、装置、设备及可读存储介质 | |
CN109324838A (zh) | 单片机程序的执行方法、执行装置及终端 | |
CN113709099B (zh) | 混合云防火墙规则下发方法、装置、设备及存储介质 | |
CN112131134A (zh) | Ipo项目的时间点触发测试方法、装置、设备和存储介质 | |
CN109918373A (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 |