CN101840520A - 一种智能卡及访问智能卡闪存的方法 - Google Patents

一种智能卡及访问智能卡闪存的方法 Download PDF

Info

Publication number
CN101840520A
CN101840520A CN200910244079A CN200910244079A CN101840520A CN 101840520 A CN101840520 A CN 101840520A CN 200910244079 A CN200910244079 A CN 200910244079A CN 200910244079 A CN200910244079 A CN 200910244079A CN 101840520 A CN101840520 A CN 101840520A
Authority
CN
China
Prior art keywords
flash memory
instruction
data
smart card
type
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
Application number
CN200910244079A
Other languages
English (en)
Other versions
CN101840520B (zh
Inventor
贾庆刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Watchdata Co ltd
Original Assignee
Beijing WatchData System Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing WatchData System Co Ltd filed Critical Beijing WatchData System Co Ltd
Priority to CN 200910244079 priority Critical patent/CN101840520B/zh
Publication of CN101840520A publication Critical patent/CN101840520A/zh
Application granted granted Critical
Publication of CN101840520B publication Critical patent/CN101840520B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种智能卡及访问智能卡闪存的方法,涉及智能卡领域,为解决现有技术中访问智能卡时需要在主程序体中调用大量的闪存接口函数带来的问题。本发明访问智能卡闪存的方法包括:在地址保护单元中设置闪存地址的访问权限为不可读写;当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;根据指令类型及其对应的指令信息,访问智能卡闪存。本发明还公开了一种利用此方法访问智能卡内存的智能卡。本发明用于智能卡对存储空间的访问。

Description

一种智能卡及访问智能卡闪存的方法
技术领域
本发明涉及智能卡领域,尤其涉及一种智能卡及访问智能卡闪存的方法。
背景技术
智能卡硬件结构一般包括中央处理器(CPU)、随机存储器(RAM)、可编程只读存储器(EEPROM)和只读存储器(ROM)。EEPROM是非易失存储单元,因其成本高,存储空间小等原因逐渐被技术趋于成熟、成本较低、存储空间较大的NOR FLASH和NAND FLASH所取代。NOR FLASH和NAND FLASH都是闪存芯片,它们是非易失性存储器,以块为单位进行擦除和再编程。
在实际的程序编写过程中,需要对闪存进行访问时,对它的读写操作需要按块进行擦除,然后再进行写入,一般这个过程是通过在所编写的主程序中调用特定的闪存接口函数来完成。特别是,如果程序只需要读写闪存的某个字节,则需要先将目标字节所在的块读到RAM空间中,在RAM空间中对目标字节修改后,再将RAM空间的数据写回到闪存中。通过这种方式达到修改某个字节的目的,对于一些程序设计来说十分不便。
再如,在C语言程序中要修改结构体中的某个变量,则需要在程序中调用大量的闪存接口函数来进行修改。首先,要在RAM中创建结构体的缓冲,计算出结构体的大小,然后通过闪存接口函数从闪存中读取结构体的数据到RAM中的缓冲,再对结构体中需要修改的变量进行修改,最后,再由闪存接口函数将结构体数据写回到闪存中。如果程序经常需要通过结构体的方式来修改保存在闪存中的结构体数据,那么就需要频繁的在RAM空间中创建结构体的缓冲,将数据修改完成后还需要释放这部分RAM空间。如果RAM空间管理不善,很容易生成RAM空间碎片,同时对于代码的可读性、精简性都会带来很大的影响。
特别是对于一些移植项目,如果在原开发平台程序采用C语言编写,选取按字节采用指针的方式访问RAM中的结构体空间,而目标开发平台程序如果需要将结构体数据保存在闪存中,那么按字节采用指针方式访问闪存空间的结构体数据,就要多次调用闪存接口函数,并且大量修改原程序代码,会给程序的移植带来很大的不利,而且容易产生错误。
综上所述,现有访问智能卡闪存的方法需要在主程序体中调用大量的闪存接口函数,造成对闪存的访问繁琐并且易出现错误的问题。
发明内容
本发明提供一种访问智能卡闪存的方法,能够简化对智能卡闪存访问的过程。
为解决上述技术问题,本发明提供了一种访问智能卡闪存的方法,所采用的技术方案,包括:在地址保护单元中设置闪存地址的访问权限为不可读写;当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;根据指令类型及其对应的指令信息,访问智能卡闪存。
采用本发明技术方案所提供的访问智能卡闪存的方法,能通过地址保护单元的功能对闪存进行访问,编程人员不必考虑闪存读取程序接口和闪存写入程序接口的问题,简化了闪存读取和写入的过程,为程序编写带来方便。
本发明还提供了一种智能卡,能够简化对智能卡闪存访问的过程。
为解决上述技术问题,本发明还提供了一种智能卡,采用的技术方案包括:地址保护单元,用于设定闪存地址的访问权限为不可读写;数据异常处理单元,用于当指令代码访问地址保护单元中闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;访问单元,用于根据指令类型及其对应的指令信息,访问智能卡闪存。
采用本发明技术方案所提供的智能卡,能通过地址保护单元的功能对闪存进行访问,编程人员不必考虑闪存读取程序接口和闪存写入程序接口的问题,简化了闪存读取和写入的过程,为程序编写带来方便。
附图说明
图1为本发明实施例访问智能卡闪存的方法流程图;
图2为本发明实施例ARM汇编指令代码的典型格式;
图3为本发明实施例智能卡的系统框图。
具体实施方式
下面结合附图对本发明实施例访问智能卡闪存的方法进行详细描述。
如图1所示,本发明实施例访问智能卡闪存的方法,包括:
S1、在地址保护单元中设置闪存地址的访问权限为不可读写。
具体地,本实施例以目前业界广泛使用的采用ARM芯片的智能卡为例。ARM芯片的地址保护单元为内存保护单元(MPU),在内存保护单元地址保护设定程序中设定需要进行读写保护的闪存地址空间,本实施例将闪存地址0xA0000到0xBFFFF设定为不可读写。
S2、当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息。
本实施例中,如果需要对闪存中0xA0000到0xBFFFF这段地址空间进行读取或写入操作,那么在智能卡应用系统中进行程序代码编写时,利用C语言指针,指针指向需要访问的闪存地址,本实施例中编写的C语言代码如下:
u32*p=(u32*)0xA0000;
*p=0X100;
C语言代码经过ARM编译器编译之后会生成ARM汇编指令代码,汇编指令代码的具体形式与所用的编译器有关,本实施例中编译生成的汇编指令代码如下:
MOV R0,#0xA0000
MOV R1,#0X100
STR R1,[R0]
ARM汇编指令代码的典型格式如图2所示,opcode表示指令操作符编码,cond表示指令执行的条件,S表示决定指令的操作是否影响CPSR的值,Rd表示目标寄存器编码,Rn表示包含第一个操作数的寄存器编码,Shifter_operand表示移位操作数。智能卡应用系统执行汇编指令代码,当执行到STR R1,[R0]这条指令时,链接寄存器LR获取引起异常的指令STR R1,[R0],进行数据异常处理。数据异常处理步骤由智能卡应用系统中的数据异常中断处理程序执行。
进一步地,提取指令代码和智能卡所有寄存器的值,将指令码按照指令格式和所有寄存器的值写入全局变量数组中。
具体地,是由智能卡应用系统中数据异常中断处理程序获取引起中断的指令码STR R1,[R0],并且将指令码按照图2所示的32位指令格式写入全局变量数组中,同时获取智能卡芯片的所有寄存器的值写入全局变量数组中。其中,
全局变量数组是与指令码等位长的线性数组,所含单元的个数与智能卡芯片所具有寄存器个数相同。
进一步地,从全局变量数组中获取指令代码的指令类型及其对应的指令信息。
具体地,智能卡应用系统中的指令分析程序对产生中断的指令代码进行分析,获取指令代码的指令类型及其对应的指令信息。
具体地,从指令码格式中opcode处获取指令类型。
S3、根据指令类型及其对应的指令信息,访问智能卡闪存。
进一步地,指令类型包括写入指令,与其对应的指令信息包括要写入闪存的目标地址和待写入闪存的数据。
具体地,本实施例中STR R1,[R0]为写入指令。
进一步地,根据指令类型及其对应的指令信息,访问智能卡闪存,具体为:从智能卡应用系统中调用闪存写入接口函数,将待写入闪存的数据写入到要写入闪存的目标地址在闪存中对应的位置。
进一步地,除写入指令外,指令类型还包括读取指令,与其对应的指令信息包括数据存放的目标地址和数据存放的目标寄存器。
具体地,在汇编指令中LDR为读取指令。
进一步地,所述根据指令类型及其对应的指令信息,访问所述智能卡闪存,具体为:
从智能卡应用系统中调用闪存读取接口函数,从数据存放的目标地址在闪存中对应的位置读取目标数据。
进一步地,在从数据存放的目标地址在闪存中对应的位置读取目标数据之后,该方法还包括:将目标数据赋给全局变量数组中的数据存放的目标寄存器,更新全局变量数组;由数据异常中断处理程序将更新的全局变量数组写回指令代码所在程序段中。
采用本发明技术方案所提供的访问智能卡闪存的方法,能通过地址保护单元的功能以指针地址的形式对闪存进行访问,编程人员不必考虑闪存读取程序接口和闪存写入程序接口的问题,简化了闪存读取和写入的过程,为程序编写带来方便。
如图3所示,本发明实施例还提供了一种智能卡1,包括:地址保护单元2,用于设定闪存地址的访问权限为不可读写;数据异常处理单元3,用于当指令代码访问地址保护单元中闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;访问单元4,用于根据指令类型及其对应的指令信息,访问智能卡闪存。
具体地,本实施例的地址保护单元为ARM芯片的内存保护单元(MPU)。进一步地,本实施例智能卡,数据异常处理单元3包括,指令提取模块301,用于提取指令代码和智能卡所有寄存器的值,将指令代码按照指令格式和所有寄存器的值写入全局变量数组中;指令分析模块302,用于从全局变量数组中获取指令代码的指令类型及其对应的指令信息。
具体地,本实施例的数据异常处理单元3包括链接寄存器,其中链接寄存器用于获取指令代码的指令类型及其对应的指令信息。
进一步地,本实施例智能卡,指令类型包括读取指令,与其对应的指令信息包括数据存放的目标地址和数据存放的目标寄存器。
进一步地,本实施例智能卡,指令类型包括写入指令,与其对应的指令信息包括要写入闪存的目标地址和待写入闪存的数据。
进一步地,本实施例智能卡,访问单元4包括:闪存读取接口函数模块401,用于从数据存放的目标地址在闪存中对应的位置读取目标数据;赋值模块403,用于将目标数据赋给全局变量数组中的数据存放的目标寄存器,更新所述全局变量数组;数据写回模块404,用于将更新的全局变量数组写回指令代码所在程序段。
进一步地,本实施例智能卡,访问单元4还包括:闪存写入接口函数模块402,用于调用闪存写入接口函数,将待写入闪存的数据写入到要写入闪存的目标地址在闪存中对应的位置。
采用本发明技术方案所提供的智能卡,能通过地址保护单元功能以指针地址的形式对闪存进行访问,编程人员不必考虑闪存读取程序接口和闪存写入程序接口的问题,简化了闪存读取和写入的过程,为程序编写带来方便。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (17)

1.一种访问智能卡闪存的方法,其特征在于,该方法包括:
在地址保护单元中设置闪存地址的访问权限为不可读写;
当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;
根据所述指令类型及其对应的指令信息,访问所述智能卡闪存。
2.按照权利要求1所述的访问智能卡闪存的方法,其特征在于,所述进行数据异常处理,获取指令代码的指令类型及其对应的指令信息,包括:
提取所述指令代码和智能卡所有寄存器的值,将所述指令代码按照指令格式和所述所有寄存器的值写入全局变量数组中;
从所述全局变量数组中获取指令代码的指令类型及其对应的指令信息。
3.按照权利要求1或2所述的访问智能卡闪存的方法,其特征在于,所述指令类型包括读取指令,与其对应的所述指令信息包括数据存放的目标地址和数据存放的目标寄存器。
4.按照权利要求3所述的访问智能卡闪存的方法,其特征在于,所述根据所述指令类型及其对应的指令信息,访问所述智能卡闪存,包括:
调用闪存读取接口函数,从所述数据存放的目标地址在闪存中对应的位置读取目标数据。
5.按照权利要求4所述的访问智能卡闪存的方法,所述调用闪存读取接口函数,从所述数据存放的目标地址在闪存中对应的位置读取目标数据之后,该方法还包括:
将所述目标数据赋给所述全局变量数组中的所述数据存放的目标寄存器,更新所述全局变量数组;
将更新的全局变量数组写回指令代码所在程序段。
6.按照权利要求1或2所述的访问智能卡闪存的方法,其特征在于,所述指令类型包括写入指令,与其对应的所述指令信息包括要写入闪存的目标地址和待写入闪存的数据。
7.按照权利要求6所述的访问智能卡闪存的方法,其特征在于,所述根据所述指令类型及其对应的指令信息,访问所述智能卡闪存,包括:
调用闪存写入接口函数,将所述待写入闪存的数据写入到所述要写入闪存的目标地址在闪存中对应的位置。
8.按照权利要求1所述的访问智能卡闪存的方法,其特征在于:所述获取指令代码的指令类型及其对应的指令信息具体为采用链接寄存器获取所述指令代码的指令类型及其对应的指令信息。
9.一种智能卡,其特征在于,包括:
地址保护单元,用于设定闪存地址的访问权限为不可读写;
数据异常处理单元,用于当指令代码访问所述地址保护单元中所述闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;
访问单元,用于根据所述指令类型及其对应的指令信息,访问智能卡闪存。
10.按照权利要求9所述的智能卡,其特征在于,所述数据异常处理单元包括:
指令提取模块,用于提取所述指令代码和智能卡所有寄存器的值,将所述指令代码按照指令格式和所述所有寄存器的值写入全局变量数组中;
指令分析模块,用于从所述全局变量数组中获取指令代码的指令类型及其对应的指令信息。
11.按照权利要求9或10所述的智能卡,其特征在于,所述指令类型包括读取指令,与其对应的所述指令信息包括数据存放的目标地址和数据存放的目标寄存器。
12.按照权利要求11所述的智能卡,其特征在于,所述访问单元包括:
闪存读取接口函数模块,用于从所述数据存放的目标地址在闪存中对应的位置读取目标数据。
13.按照权利要求12所述的智能卡,其特征在于,所述访问单元还包括:
赋值模块,用于将所述目标数据赋给所述全局变量数组中的所述数据存放的目标寄存器,更新所述全局变量数组;
数据写回模块,用于将更新的全局变量数组写回指令代码所在程序段。
14.按照权利要求9或10所述的智能卡,其特征在于,所述指令类型包括写入指令,与其对应的所述指令信息包括要写入闪存的目标地址和待写入闪存的数据。
15.按照权利要求14所述的智能卡,其特征在于,所述访问单元包括:
闪存写入接口函数模块,用于调用闪存写入接口函数,将所述待写入闪存的数据写入到所述要写入闪存的目标地址在闪存中对应的位置。
16.按照权利要求9所述的智能卡,其特征在于:所属智能卡包括嵌入式芯片,所述地址保护单元为所述嵌入式芯片的内存保护单元。
17.按照权利要求9所述的智能卡,其特征在于:所述数据异常处理单元包括链接寄存器,其中链接寄存器用于获取所述指令代码的指令类型及其对应的指令信息。
CN 200910244079 2009-12-28 2009-12-28 一种智能卡及访问智能卡闪存的方法 Expired - Fee Related CN101840520B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910244079 CN101840520B (zh) 2009-12-28 2009-12-28 一种智能卡及访问智能卡闪存的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910244079 CN101840520B (zh) 2009-12-28 2009-12-28 一种智能卡及访问智能卡闪存的方法

Publications (2)

Publication Number Publication Date
CN101840520A true CN101840520A (zh) 2010-09-22
CN101840520B CN101840520B (zh) 2012-07-25

Family

ID=42743882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910244079 Expired - Fee Related CN101840520B (zh) 2009-12-28 2009-12-28 一种智能卡及访问智能卡闪存的方法

Country Status (1)

Country Link
CN (1) CN101840520B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169459A (zh) * 2010-11-29 2011-08-31 北京握奇数据系统有限公司 一种访问数据的方法、装置和智能卡
CN104317743A (zh) * 2014-09-29 2015-01-28 上海华为技术有限公司 对spi flash的写保护方法和控制器
CN112463263A (zh) * 2020-12-03 2021-03-09 北京元心科技有限公司 程序运行方法、装置、电子设备及计算机可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030102A (ja) * 2002-06-25 2004-01-29 Sony Corp 情報記憶装置、およびメモリアクセス制御システム、および方法、並びにコンピュータ・プログラム
CN100559507C (zh) * 2004-01-29 2009-11-11 群联电子股份有限公司 具防写功能的微型存储装置
JP2006053703A (ja) * 2004-08-11 2006-02-23 Hitachi Ltd 記憶制御システム及び方法
CN100517277C (zh) * 2006-10-31 2009-07-22 佛山市顺德区顺达电脑厂有限公司 闪存的保护模块及其关机方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169459A (zh) * 2010-11-29 2011-08-31 北京握奇数据系统有限公司 一种访问数据的方法、装置和智能卡
CN102169459B (zh) * 2010-11-29 2013-04-24 北京握奇数据系统有限公司 一种访问数据的方法、装置和智能卡
CN104317743A (zh) * 2014-09-29 2015-01-28 上海华为技术有限公司 对spi flash的写保护方法和控制器
WO2016050140A1 (zh) * 2014-09-29 2016-04-07 华为技术有限公司 对spi flash的写保护方法和控制器
CN104317743B (zh) * 2014-09-29 2018-06-05 上海华为技术有限公司 对spi flash的写保护方法和控制器
CN112463263A (zh) * 2020-12-03 2021-03-09 北京元心科技有限公司 程序运行方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN101840520B (zh) 2012-07-25

Similar Documents

Publication Publication Date Title
US7321951B2 (en) Method for testing flash memory power loss recovery
US7340566B2 (en) System and method for initializing a memory device from block oriented NAND flash
CN102169459B (zh) 一种访问数据的方法、装置和智能卡
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
CN101814318B (zh) 多层存储单元与非型闪存储存系统及其控制器与存取方法
US8000153B2 (en) Enhanced erase for flash storage device
CN102591783B (zh) 可编程存储器控制器
CN110908925A (zh) 高效能垃圾收集方法以及数据存储装置及其控制器
CN108563590B (zh) 基于片上flash存储器的otp控制器和控制方法
US6798713B1 (en) Implementing software breakpoints
WO2003060721A3 (de) Verfahren und anordnung zum beschreiben von nv-memories in einer controller-architektur sowie ein entsprechendes computerprogrammprodukt und ein entsprechendes computerlesbares speichermedium
CN101840520B (zh) 一种智能卡及访问智能卡闪存的方法
US6925522B2 (en) Device and method capable of changing codes of micro-controller
EP3057100B1 (en) Memory device and operating method of same
US7644247B2 (en) System controller for flash memory
BRPI0212222B1 (pt) método para resolver referências não resolvidas dentro de código de computador carregado em um cartão inteligente possuindo uma memória não volátil e uma memória de acesso randômico, mídia de computador legível, cartão inteligente e método de resolver referências não resolvidas em uma estrutura de dados em um dispositivo de computar
US8122205B2 (en) Structured virtual registers for embedded controller devices
JP2006525568A (ja) 携帯型データ記憶媒体のメモリ管理
US8117427B2 (en) Motherboard, storage device and controller thereof, and booting method
US8312205B2 (en) Method for identifying a page of a block of flash memory, and associated memory device
JP2004348342A (ja) Icカードとicカードの処理方法
JP2010092113A (ja) 記憶装置、電子装置、および、データ管理方法
US20120017035A1 (en) Runtime reprogramming of a processor code space memory area
JP2000243093A (ja) フラッシュメモリへのデータ記憶方法及びフラッシュメモリからのデータ読出方法
US20040133755A1 (en) Minimization of overhead of non-volatile memory operation

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
CB03 Change of inventor or designer information

Inventor after: Jia Qinggang

Inventor after: Wang Youjun

Inventor before: Jia Qinggang

CB03 Change of inventor or designer information
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden

Patentee after: BEIJING WATCHDATA Co.,Ltd.

Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden

Patentee before: BEIJING WATCH DATA SYSTEM Co.,Ltd.

DD01 Delivery of document by public notice
DD01 Delivery of document by public notice

Addressee: Patent of Beijing grip Data Co.,Ltd. The person in charge

Document name: Patent termination notice

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120725

Termination date: 20211228