一种访问数据的方法、装置和智能卡的制作方法

文档序号:354465阅读:218来源:国知局
专利名称:一种访问数据的方法、装置和智能卡的制作方法
技术领域
本发明涉及智能卡技术领域,尤其涉及一种访问数据的方法、装置和智能卡。
背景技术
从硬件结构上来说,智能卡如图1所示,包括CPU (Central Processing Unit,中央处理器)、RAM (Random Access Memory,随机存储器)、EEPROM (Electrical Iy Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)禾口 ROM (Read-OnIy Memory, 只读存储器)组成。但是,随着智能卡硬件技术的发展,EEPROM逐渐被成本较低、存储空间较大的非易失性的NorFlash闪存所取代,NandFlash作为NorFlash的辅助存储器,因此, 目前智能卡的结构如图2所示,包括CPU、RAM、NorFlash和NandFlash组成。智能卡上的RAM用于存储用于程序运行的数据,是程序运行的空间,RAM保存的数据是易失性的,智能卡掉电或重新启动后其保存的数据将完全丢失;RAM的空间一般为十几KB或几十KB左右,因此采用RAM来运行较大的程序时,程序的编写难度较大,有时甚至难以实现。而NorFlash设置有通用的RAM接口,可以挂接在CPU的地址总线或数据总线上, 并且NorFlash的存储空间要比RAM的存储空间大,因此,可以在NorFlash中保存程序运行的代码和一些非易失性的数据;应用程序可以直接在NorFlash闪存内运行,不需要再把程序代码读取到RAM中。NandFlash使用1/0 (Input/Output,输入输出)端口来串行地存取数据,该 NandFlash的8个引脚可用来传送控制信息、地址信息和数据信息。NandFlash不可以挂接在CPU的地址总线上,因此,用户不能按地址读写的方式在NandFlash上保存程序代码,需要采用专用的驱动程序来按块在NandFlash上读或写数据。Nand结构虽然能提供较高的单元密度即可以达到较高的存储密度,并且写入数据和擦除数据的速度也较快,但是在应用 Nand结构时,对于flash的管理需要特殊的系统接口。由于智能卡的RAM的存储空间较为有限,而NandFlash的存储空间很大且读或写数据的速度不慢,因此,可以利用NandFlash中的部分存储空间作为RAM的虚拟内存空间, 以供智能卡在运行程序时使用。目前,在智能卡中访问RAM的虚拟内存空间时,通过该智能卡的MMU (Memory Management Unit,内存管理单元)来实现,具体如下智能卡中设置有一个多级数据结构的页表(一般情况下,内存空间小于或等于 4GB时设置的页表为2级的数据结构,当内存空间大于4GB时设置的页表为3级的数据结构),如智能卡的内存空间为4GB,可将该内存空间分为IOM组,每组包括IOM页,每页 4KB。系统运行时,智能卡的CPU直接从设置的页表中读取内存地址,若读取的内存地址为虚拟地址时,需要通过该智能卡中的MMU来读取虚拟地址对应的内存空间中的数据。采用上述方式虽然实现了对智能卡的虚拟内存空间进行了数据访问,但是其存在以下缺陷该方式只适用于具有MMU功能的智能卡,对于不能支持MMU功能的智能卡无法通过上述方式来对智能卡的虚拟内存空间进行数据访问,而目前大多数的智能卡都不具有MMU的功能,通用性较低、推广范围比较窄,并且,现有技术也没有给出如何访问不具有MMU 功能的智能卡中虚拟空间的方法。

发明内容
本发明提供一种访问数据的方法、装置和智能卡,以实现不需要MMU来对智能卡的虚拟内存空间进行数据访问,降低了对智能卡的虚拟内存空间进行数据访问的难度,并且对于不具有MMU功能的智能卡都可以使用,从而提高了通用性。一种访问数据的方法,包括接收数据访问指令,并根据所述数据访问指令确定出指令类型和待访问的目标地址;在确定所述目标地址为虚拟地址且所述虚拟地址在设置的虚拟地址范围内时,确定出所述目标地址在非易失性存储器的页索引中的偏移量;在所述偏移量对应的存储空间中进行相应的数据访问操作,所述数据访问操作与确定出的所述指令类型相对应。一种访问数据的装置,包括接收单元,用于接收数据访问指令,并根据所述数据访问指令确定出指令类型和待访问的目标地址;确定单元,用于在所述目标地址为虚拟地址且所述虚拟地址在设置的虚拟地址范围内时,确定出所述目标地址在非易失性存储器的页索引中的偏移量;数据访问单元,用于在所述确定单元确定出的所述偏移量对应的存储空间中进行相应的数据访问操作,所述数据访问操作与确定出的所述指令类型相对应。一种智能卡,包括前述访问数据的装置。本发明实施例中,在接收到数据访问指令时,根据数据访问指令确定出指令类型和待访问的目标地址;并在确定待访问的目标地址为虚拟地址且所述虚拟地址在设置的虚拟地址范围内时,确定出目标地址在非易失性存储器的页索引中的偏移量;再在所述偏移量对应的存储空间中进行相应的数据访问操作。采用本发明技术方案,一方面,实现了对智能卡的虚拟内存空间进行数据访问,从而以实现不需要MMU来对智能卡的虚拟内存空间进行数据访问,降低了对智能卡的虚拟内存空间进行数据访问的难度,并且对于不具有MMU 功能的智能卡都可以使用,从而提高了通用性;另一方面,将非易失性存储器中的部分存储空间作为智能卡的虚拟内存空间,扩展了 RAM的内存空间,从而确保了智能卡虚拟内存空间比较充足,可以为较大的应用程序提供运行内存,提高了运行应用程序的成功率。


图1为现有技术中智能卡的结构示意图之一;图2为现有技术中智能卡的结构示意图之二 ;图3为本发明实施例中数据访问的方法流程图;图4为本发明实施例中提供的数据访问的详细流程图;图5为本发明实施例中访问数据的装置的结构示意图。
具体实施例方式针对现有技术存在的上述技术问题,本发明实施例提供一种访问数据的方法、装置和智能卡,以实现不需要MMU来对智能卡的虚拟内存空间进行数据访问,降低了对智能卡的虚拟内存空间进行数据访问的难度,并且对于不具有MMU功能的智能卡都可以使用, 从而提高了通用性。该访问数据的方法包括接收数据访问指令,并根据所述数据访问指令确定出指令类型和待访问的目标地址;在确定所述目标地址为虚拟地址且所述虚拟地址在设置的虚拟地址范围内时,确定出所述目标地址在非易失性存储器的页索引中的偏移量; 在所述偏移量对应的存储空间中进行相应的数据访问操作,所述数据访问操作与确定出的所述指令类型相对应。采用本发明技术方案,一方面,实现了对智能卡的虚拟内存空间进行数据访问,从而以实现不需要MMU来对智能卡的虚拟内存空间进行数据访问,降低了对智能卡的虚拟内存空间进行数据访问的难度,并且对于不具有MMU功能的智能卡都可以使用,从而提高了通用性;另一方面,将非易失性存储器中的部分存储空间作为智能卡的虚拟内存空间,扩展了 RAM的内存空间,从而确保了智能卡虚拟内存空间比较充足,可以为较大的应用程序提供运行内存,提高了运行应用程序的成功率。下面结合说明书附图对本发明技术方案进行详细的描述。参见图3,为本发明实施例中数据访问的方法流程图,该方法包括步骤301、接收数据访问指令,并根据该数据访问指令确定出指令类型和待访问的目标地址。步骤302、在确定待访问的目标地址为虚拟地址且在该虚拟地址设置的虚拟地址范围内时,确定出该目标地址在非易失性存储器(如EEPROM、NorFlash或NandFlash)的页索引中的偏移量。步骤303、在确定出的所述偏移量对应的存储空间中进行相应的数据访问操作,该数据访问操作与确定的所述指令类型相对应。上述流程步骤301中,根据该数据访问指令确定出指令类型和需要访问的目标地址,包括获取所述数据访问指令的指令地址,并从指令地址、指令编码值、目标地址的映射关系中,确定出与所述指令地址对应的指令编码值和目标地址,并根据所述指令地址对应的指令编码值确定出所述指令类型。本发明实施例中,可通过智能卡中的链接寄存器(即R13寄存器)获取所述数据访问指令的指令地址。较佳地,上述流程步骤303之前,还可以包括步骤当RAM当前的缓冲页的索引与非易失性存储器中目标地址所对应的页索引不一致时,将所述非易失性存储器中与所述目标地址所在的索引页中的数据读入到RAM当前的缓冲页中。上述步骤303中,在确定出的所述偏移量对应的存储空间中进行相应的数据访问操作,包括当确定指令类型为数据保存指令(即STR指令)时,将待保存数据写入到所述RAM 的缓冲页中相应偏移量处的内存空间中,该偏移量与所述目标地址对应;再将RAM中存储的所述待保存数据写入到非易失性存储器中相应偏移量对应的存储空间中,该偏移量为所述目标地址在NandFlash的页索引中的偏移量。
上述流程步骤301还包括步骤根据所述指令地址对应的指令编码值确定出目标寄存器;上述流程步骤303中,在确定出的所述偏移量对应的存储空间中进行相应的数据访问操作,包括在确定指令类型为数据读取指令(即LDR指令)时,将所述RAM当前缓冲页中的所述目标地址对应的偏移量处内存空间中的数据,保存到确定出的所述目标寄存器中。上述流程步骤301之前,还包括步骤300、接收应用程序发送的内存分配请求,该内存分配请求中携带有需要分配的内存量,并为该应用程序分配相应大小的物理内存空间或虚拟内存空间,且将分配的物理内存空间对应的物理地址或分配的虚拟内存空间对应的虚拟地址分配给所述应用程序。该步骤300中,具体可包括接收到应用程序发送的内存分配请求时,判断RAM可使用的内存空间大于或等于所述内存量时,从RAM的可使用内存空间中为该应用程序分配相应大小的物理内存空间,并将分配的物理内存空间对应的物理地址分配给所述应用程序;判断RAM可使用的内存空间小于所述内存量时,从虚拟内存空间中为该应用程序分配相应大小的虚拟内存空间,并将分配的虚拟内存空间对应的虚拟地址分配给所述应用程序。较佳地,本发明实施例中的数据访问指令可以是智能卡生成的数据中断(即 DataAbort中断)。如应用程序在运行过程中访问分配给它的虚拟地址对应的数据时,由于虚拟地址是智能卡中实际不存在的地址,因此,智能卡的CPU判断该应用程序访问数据异常,并产生数据中断。本发明技术方案适用于各种类型的智能卡,如ARM芯片、MIPS芯片等,为更清楚的描述本发明技术方案,下面以智能卡为ARM芯片、非易失性存储器为NandFlash为例对本发明技术方案进行详细的描述。假设,将NandFlash中的部分存储空间作为RAM的虚拟内存空间,如IM比特,并设置与该虚拟内存空间对应的虚拟地址的地址范围为0x100000 0x200000,即虚拟地址的起始地址为0X100000,终止地址为0X200000。下面采用较为详细的方法流程对本发明技术方案进行详细的描述;该方法流程如图4所示,包括步骤401、智能卡的CPU接收应用程序RAM内存分配请求(该内存分配请求中携带有需要分配的内存量),并从RAM的物理内存空间或虚拟内存空间中为该应用程序分配相应大小的内存空间,并将分配的内存空间对应的地址分配给所述应用程序。该步骤中,具体包括CPU调用内存分配函数检查RAM中当前可使用的物理内存空间是否大于或等于内存分配请求中携带的内存量,若是,则从RAM中可使用的物理内存空间中为该应用程序分配相应大小的物理内存空间,并将分配的物理内存空间对应的物理地址分配给所述应用程序;若否,则从RAM的虚拟内存空间中分配相应大小的虚拟内存空间, 并将分配的虚拟内存空间对应的虚拟地址分配给该应用程序。步骤402、智能卡的CPU判断所述应用程序访问的存储地址为虚拟地址时,产生数据中断(即DataAbort中断)。步骤403 步骤404、智能卡的CPU通过智能卡中的链接寄存器获取引起数据中断的指令地址,并从指令地址、指令编码值、虚拟地址的映射关系中,获取与该引起数据中断的指令地址对应的指令编码值和虚拟地址,并根据获取的指令编码值确定出指令类型和目标寄存器。步骤405、判断所述RAM当前的缓冲页的索引是否与NandFlash中目标地址所对应的页索引一致,若是则执行步骤407,否则执行步骤406。步骤406、将NandFlash中目标地址所在索引页中的数据读入到RAM当前的缓冲页中。步骤407、判断指令类型为数据保存指令时,执行步骤408 步骤409;判断指令类型为数据读取指令时,执行步骤410 411。步骤408、将待保存数据写入到所述RAM的缓冲页中的相应偏移量对应的内存空间中,该偏移量与所述目标地址对应。步骤409、将RAM缓冲页中的所述待保存数据写入到NandFlash中相应偏移量对应的存储空间中,该偏移量为目标地址在NandFlash的页索引中的偏移量。步骤410、读取所述RAM当前缓冲页中的所述目标地址对应的偏移量处内存空间中的数据。步骤411、将步骤410读取的数据保存到步骤404确定出的目标寄存器中。步骤412、将PC寄存器(即程序寄存器,用于存储当前需要执行的指令对应的地址)中的值从引起中断的指令的地址修改为下一条指令对应的地址,并指示智能卡的CPU 执行PC寄存器中指示的下一条指令。本发明实施例中,智能卡应用程序代码一般都是采用高级语言编写(如采用C语言编写),并通过C编译器对编写后的程序代码进行编译,得到汇编语言;最后根据汇编语言生成具有特殊意义的汇编指令码,如在c语言源代码中,实现对虚拟地址0x100000进行赋值的代码可如下u32*address = (u32*) 0x100000 -J/ 无符号 32 位整型的虚拟地址 0x100000^address = 0x100 ;// 将 0x100 的值赋给虚拟地址 0x100000对程序代码进行编译得到的汇编结构与编译器类型有关,如在KeiluVisioM编译器下,得到的指令地址、指令编码值、目标地址和目标寄存器的映射关系如下表1所示表 1
指令地址指令编码值汇编指令码汇编指令码含义0X000020E8E3A00601MOV RO5#0X00100000将立即数0X100000放入到寄存器RO中0X000020ECE3A01C01MOV Rl5#0X00000100将立即数0X100放入寄存器Rl 中0X000020F0E5801000STR Rl5 [R0]将寄存器Rl中的值放入寄存器RO中的值所对应的地址表1中的“指令编码值”是智能卡的CPU能够直接执行的指令,该指令编码值的格式可如下表2所示表 权利要求
1.一种访问数据的方法,其特征在于,包括接收数据访问指令,并根据所述数据访问指令确定出指令类型和待访问的目标地址;在确定所述目标地址为虚拟地址且所述虚拟地址在设置的虚拟地址范围内时,确定出所述目标地址在非易失性存储器的页索引中的偏移量;在所述偏移量对应的存储空间中进行相应的数据访问操作,所述数据访问操作与确定出的所述指令类型相对应。
2.如权利要求1所述的方法,其特征在于,所述根据所述数据访问指令确定出指令类型和待访问的目标地址,包括获取所述数据访问指令的指令地址,并从指令地址、指令编码值、目标地址的映射关系中,确定出与所述指令地址对应的指令编码值和目标地址,并根据所述指令地址对应的指令编码值确定出所述指令类型。
3.如权利要求1或2所述的方法,其特征在于,在所述偏移量对应的存储空间中进行相应的数据访问操作之前,所述方法还包括当随机存储器RAM当前的缓冲页的索引与非易失性存储器中目标地址所对应的页索引不一致时,将所述非易失性存储器中所述目标地址所在的索引页中的数据读入到RAM当前的缓冲页中。
4.如权利要求3所述的方法,其特征在于,所述在所述偏移量对应的存储空间中进行相应的数据访问操作,包括在确定指令类型为数据保存指令时,将待保存数据写入到所述RAM的缓冲页中第一偏移量对应的内存空间中,所述第一偏移量与所述目标地址对应;将所述RAM中存储的所述待保存数据写入到非易失性存储器中第二偏移量对应的存储空间中,所述第二偏移量为所述目标地址在非易失性存储器的页索引中的偏移量。
5.如权利要求2所述的方法,其特征在于,所述方法还包括根据所述指令地址对应的指令编码值确定出目标寄存器;在所述偏移量对应的存储空间中进行相应的数据访问操作,包括在确定指令类型为数据读取指令时,将所述RAM当前缓冲页中的所述目标地址对应的偏移量处内存空间中的数据,保存到确定出的所述目标寄存器中。
6.如权利要求1所述的方法,其特征在于,所述方法还包括接收应用程序发送的内存分配请求,该内存分配请求中携带有需要分配的内存量;根据所述内存量为所述应用程序分配相应大小的物理内存空间或虚拟内存空间,且将分配的物理内存空间对应的物理地址或分配的虚拟内存空间对应的虚拟地址分配给所述应用程序。
7.如权利要求6所述的方法,其特征在于,为所述应用程序分配相应大小的物理内存空间或虚拟内存空间,包括当RAM中可使用的内存空间大于或等于所述内存量时,从RAM的可使用内存空间中为所述应用程序分配相应大小的物理内存空间;当所述RAM中可使用的内存空间小于所述内存量时,从所述RAM的虚拟内存空间中为所述应用程序分配相应大小的虚拟内存空间。
8.如权利要求1所述的方法,其特征在于,所述数据访问指令为数据中断DataAbort。
9.如权利要求1所述的方法,其特征在于,所述非易失性存储器为电可擦可编程只读存储器 EEPROM、NorFlash 或 NandFlash。
10.一种访问数据的装置,其特征在于,包括接收单元,用于接收数据访问指令,并根据所述数据访问指令确定出指令类型和待访问的目标地址;确定单元,用于在所述目标地址为虚拟地址且所述虚拟地址在设置的虚拟地址范围内时,确定出所述目标地址在非易失性存储器的页索引中的偏移量;数据访问单元,用于在所述确定单元确定出的所述偏移量对应的存储空间中进行相应的数据访问操作,所述数据访问操作与确定出的所述指令类型相对应。
11.如权利要求10所述的装置,其特征在于,所述接收单元具体用于接收数据访问指令,并获取所述数据访问指令的指令地址,并从指令地址、指令编码值、目标地址的映射关系中,确定出与所述指令地址对应的指令编码值和目标地址,并根据所述指令地址对应的指令编码值确定出所述指令类型。
12.如权利要求10或11所述的装置,其特征在于,所述确定单元进一步用于,在随机存储器RAM当前的缓冲页的索引与非易失性存储器中目标地址所对应的页索引不一致时,将所述非易失性存储器中所述目标地址所在的索引页中的数据读入到RAM当前的缓冲页中。
13.如权利要求12所述的装置,其特征在于,所述数据访问单元,具体用于在所述确定单元确定指令类型为数据保存指令时,将待保存数据写入到所述RAM的缓冲页中第一偏移量对应的内存空间中,所述第一偏移量与所述目标地址对应;将所述RAM中存储的所述待保存数据写入到非易失性存储器中第二偏移量对应的存储空间中,所述第二偏移量为所述目标地址在非易失性存储器的页索引中的偏移量。
14.如权利要求11所述的装置,其特征在于,所述确定单元进一步用于,根据所述指令地址对应的指令编码值确定出目标寄存器;所述数据访问单元具体用于在所述确定单元确定的指令类型为数据读取指令时,将所述RAM当前缓冲页中的所述目标地址对应的偏移量处内存空间中的数据,保存到所述确定单元确定出的目标寄存器中。
15.如权利要求10所述的装置,其特征在于,还包括内存分配单元所述接收单元进一步用于,接收应用程序发送的内存分配请求,该内存分配请求中携带有需要分配的内存量;内存分配单元,用于根据所述接收单元接收到的内存分配请求中的内存量,为所述应用程序分配相应大小的物理内存空间或虚拟内存空间,且将分配的物理内存空间对应的物理地址或分配的虚拟内存空间对应的虚拟地址分配给所述应用程序。
16.如权利要求15所述的装置,其特征在于,所述内存分配单元,具体用于判断RAM中可使用的内存空间大于或等于所述内存量时,从RAM的可使用内存空间中为所述应用程序分配相应大小的物理内存空间;判断所述RAM中可使用的内存空间小于所述内存量时,从所述RAM的虚拟内存空间中为所述应用程序分配相应大小的虚拟内存空间。
17.一种智能卡,其特征在于,包括上述权利要求10 16任一项所述的装置。
全文摘要
本发明公开了一种访问数据的方法、装置和智能卡,以实现不需要MMU来对智能卡的虚拟内存空间进行数据访问。该方法包括接收数据访问指令,并根据所述数据访问指令确定出指令类型和待访问的目标地址;在确定所述目标地址为虚拟地址且该虚拟地址在设置的虚拟地址范围内时,确定出所述目标地址在非易失性存储器的页索引中的偏移量;在所述偏移量对应的存储空间中进行相应的数据访问操作,该数据访问操作与确定出的所述指令类型相对应。采用本发明技术方案,实现不需要MMU来对智能卡的虚拟内存空间进行数据访问,降低了对智能卡的虚拟内存空间进行数据访问的难度,并且对于不具有MMU功能的智能卡都可以使用,从而提高了通用性。
文档编号G06K19/07GK102169459SQ20101056505
公开日2011年8月31日 申请日期2010年11月29日 优先权日2010年11月29日
发明者贾庆刚 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1