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

文档序号:6585419阅读:155来源:国知局
专利名称:一种智能卡及访问智能卡闪存的方法
技术领域
本发明涉及智能卡领域,尤其涉及一种智能卡及访问智能卡闪存的方法。
背景技术
智能卡硬件结构一般包括中央处理器(CPU)、随机存储器(RAM)、可编程只读存储 器(EEPR0M)和只读存储器(ROM)。EEPR0M是非易失存储单元,因其成本高,存储空间小等原 因逐渐被技术趋于成熟、成本较低、存储空间较大的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),在内存保护单元地址保护设定程序中设定需要进行 读写保护的闪存地址空间,本实施例将闪存地址OxAOOOO到OxBFFFF设定为不可读写。S2、当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指 令类型及其对应的指令信息。本实施例中,如果需要对闪存中OxAOOOO到OxBFFFF这段地址空间进行读取或写 入操作,那么在智能卡应用系统中进行程序代码编写时,利用C语言指针,指针指向需要访 问的闪存地址,本实施例中编写的C语言代码如下u32*p = (u32*) OxAOOOO ;*p = 0X100 ;C语言代码经过ARM编译器编译之后会生成ARM汇编指令代码,汇编指令代码的具 体形式与所用的编译器有关,本实施例中编译生成的汇编指令代码如下MOV R0, #0xA0000MOV Rl, #0X100STR Rl, [R0]ARM汇编指令代码的典型格式如图2所示,opcode表示指令操作符编码,cond表 示指令执行的条件,S表示决定指令的操作是否影响CPSR的值,Rd表示目标寄存器编码, Rn表示包含第一个操作数的寄存器编码,Shifter_operand表示移位操作数。智能卡应用 系统执行汇编指令代码,当执行到STR Rl,[R0]这条指令时,链接寄存器LR获取引起异常 的指令STR Rl,[R0],进行数据异常处理。数据异常处理步骤由智能卡应用系统中的数据异常中断处理程序执行。进一步地,提取指令代码和智能卡所有寄存器的值,将指令码按照指令格式和所 有寄存器的值写入全局变量数组中。具体地,是由智能卡应用系统中数据异常中断处理程序获取引起中断的指令码 STR Rl, [R0],并且将指令码按照图2所示的32位指令格式写入全局变量数组中,同时获取 智能卡芯片的所有寄存器的值写入全局变量数组中。其中,全局变量数组是与指令码等位长的线性数组,所含单 元的个数与智能卡芯片所具 有寄存器个数相同。进一步地,从全局变量数组中获取指令代码的指令类型及其对应的指令信息。具体地,智能卡应用系统中的指令分析程序对产生中断的指令代码进行分析,获 取指令代码的指令类型及其对应的指令信息。具体地,从指令码格式中opcode处获取指令类型。S3、根据指令类型及其对应的指令信息,访问智能卡闪存。进一步地,指令类型包括写入指令,与其对应的指令信息包括要写入闪存的目标 地址和待写入闪存的数据。具体地,本实施例中STR Rl, [R0]为写入指令。进一步地,根据指令类型及其对应的指令信息,访问智能卡闪存,具体为从智能 卡应用系统中调用闪存写入接口函数,将待写入闪存的数据写入到要写入闪存的目标地址 在闪存中对应的位置。进一步地,除写入指令外,指令类型还包括读取指令,与其对应的指令信息包括数 据存放的目标地址和数据存放的目标寄存器。具体地,在汇编指令中LDR为读取指令。进一步地,所述根据指令类型及其对应的指令信息,访问所述智能卡闪存,具体 为从智能卡应用系统中调用闪存读取接口函数,从数据存放的目标地址在闪存中对 应的位置读取目标数据。进一步地,在从数据存放的目标地址在闪存中对应的位置读取目标数据之后,该 方法还包括将目标数据赋给全局变量数组中的数据存放的目标寄存器,更新全局变量数 组;由数据异常中断处理程序将更新的全局变量数组写回指令代码所在程序段中。采用本发明技术方案所提供的访问智能卡闪存的方法,能通过地址保护单元的功 能以指针地址的形式对闪存进行访问,编程人员不必考虑闪存读取程序接口和闪存写入程 序接口的问题,简化了闪存读取和写入的过程,为程序编写带来方便。如图3所示,本发明实施例还提供了一种智能卡1,包括地址保护单元2,用于设 定闪存地址的访问权限为不可读写;数据异常处理单元3,用于当指令代码访问地址保护 单元中闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;访 问单元4,用于根据指令类型及其对应的指令信息,访问智能卡闪存。具体地,本实施例的地址保护单元为ARM芯片的内存保护单元(MPU)。进一步地, 本实施例智能卡,数据异常处理单元3包括,指令提取模块301,用于提取指令代码和智能 卡所有寄存器的值,将指令代码按照指令格式和所有寄存器的值写入全局变量数组中;指令分析模块302,用于从全局变量数组中获取指令代码的指令类型及其对应的指令信息。具体地,本实施例的数据异常处理单元3包括链接寄存器,其中链接寄存器用于获取指令代码的指令类型及其对应的指令信息。进一步地,本实施例智能卡,指令类型包括读取指令,与其对应的指令信息包括数 据存放的目标地址和数据存放的目标寄存器。进一步地,本实施例智能卡,指令类型包括写入指令,与其对应的指令信息包括要 写入闪存的目标地址和待写入闪存的数据。进一步地,本实施例智能卡,访问单元4包括闪存读取接口函数模块401,用于 从数据存放的目标地址在闪存中对应的位置读取目标数据;赋值模块403,用于将目标数 据赋给全局变量数组中的数据存放的目标寄存器,更新所述全局变量数组;数据写回模块 404,用于将更新的全局变量数组写回指令代码所在程序段。 进一步地,本实施例智能卡,访问单元4还包括闪存写入接口函数模块402,用于 调用闪存写入接口函数,将待写入闪存的数据写入到要写入闪存的目标地址在闪存中对应 的位置。采用本发明技术方案所提供的智能卡,能通过地址保护单元功能以指针地址的形 式对闪存进行访问,编程人员不必考虑闪存读取程序接口和闪存写入程序接口的问题,简 化了闪存读取和写入的过程,为程序编写带来方便。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
一种访问智能卡闪存的方法,其特征在于,该方法包括在地址保护单元中设置闪存地址的访问权限为不可读写;当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;根据所述指令类型及其对应的指令信息,访问所述智能卡闪存。
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所述的智能卡,其特征在于所述数据异常处理单元包括链接寄存 器,其中链接寄存器用于获取所述指令代码的指令类型及其对应的指令信息。
全文摘要
本发明公开了一种智能卡及访问智能卡闪存的方法,涉及智能卡领域,为解决现有技术中访问智能卡时需要在主程序体中调用大量的闪存接口函数带来的问题。本发明访问智能卡闪存的方法包括在地址保护单元中设置闪存地址的访问权限为不可读写;当指令代码访问受保护的闪存地址时,进行数据异常处理,获取指令代码的指令类型及其对应的指令信息;根据指令类型及其对应的指令信息,访问智能卡闪存。本发明还公开了一种利用此方法访问智能卡内存的智能卡。本发明用于智能卡对存储空间的访问。
文档编号G06K19/073GK101840520SQ200910244079
公开日2010年9月22日 申请日期2009年12月28日 优先权日2009年12月28日
发明者贾庆刚 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1