一种提高智能卡文件系统FLASH写入寿命的方法与流程

文档序号:17473502发布日期:2019-04-20 05:58阅读:338来源:国知局
一种提高智能卡文件系统FLASH写入寿命的方法与流程

本发明涉及计算机数据存储技术领域,特别是一种提高智能卡文件系统flash写入寿命的方法。



背景技术:

智能卡上的文件系统一般采用iso7816标准规范,该规范定义的文件系统操作简单,文件在创建的时候就制定好文件长度和属性。文件目录结构简单,同层文件以及目录之间通过链表连接。由于智能卡应用场景的特殊性,该文件系统文件建立后,一般不需要删除操作,也没有临时文件的概念。

传统上对以上文件系统的实现采用的是极其简单的方式,文件表项和文件内容存放在一起,并且在物理介质上连续存放。由于智能卡文件系统的存储介质一般采用flash,因此在更新文件内容时,必须首先对文件所占据的物理介质执行擦除操作,然后才能执行写入操作。由于flash物理特性的限制,擦除操作需要很长的时间,因此降低了文件系统写入的效率。同时,由于文件在物理介质上的存放地址固定,因此高频率写入的文件所占据的存储区域就会磨损得很快,从而降低了存储介质的使用寿命。

为了提高存储介质的使用寿命,就需要采用磨损均衡算法,即将对文件的写入分散到存储介质的每个区域,而不是固定使用同一段地址。目前针对大容量flash介质,如nandfalsh,有各种不同的磨损均衡算法,效果也足够优秀。但由于智能卡存储场景的特殊性,当前绝大多数的磨损均衡算法并不适用。智能卡存储场景一般具备以下特点:

1)需要存储在卡上的用户数据较少,一般小于100kb,因此一般采用容量较小的flash介质,如norflash,eflash等;

2)系统资源严重受限,算法需要尽量简单;

3)文件的删除操作频率很低。

当前绝大多数的磨损均衡算法比较复杂,需要耗费较多的系统资源,而且主要针对大容量存储介质,需要在介质上存储比较多的管理元数据,而这明显不适合容量较小的智能卡上的存储器。



技术实现要素:

本发明所要解决的技术问题是:针对传统智能卡文件系统实现方式效率低下,写入存储介质未经磨损均衡,寿命较低的问题,提供了一种提高智能卡文件系统flash写入寿命的方法。

本发明采用的技术方案如下:一种提高智能卡文件系统flash写入寿命的方法,具体包括以下过程:

将存储区域划分为相同大小的物理块,将划分的物理块从0开始编号;每个物理块内部的第一个字节存放块类型标志,用于区分不同的块类型;第二个字节存放块有效标志,用于标识块内存放数据是否有效;块的剩下其它部分为数据区,用于存储数据;

当需要改写逻辑块内容时,从存储区域重新分配空闲的物理块,写入数据,逻辑块指向重新分配的物理块;

采用块有效标识对旧的物理块标记失效。

进一步的,块的大小等于flash存储介质的最小擦除单位。

进一步的,所述块有效标志通过不同的值分别表示块有效,或者块未被使用,或者块已失效。

进一步的,当块类型为有效块时,所述块类型标志、块有效标志以及数据区组成映射块,所述数据区包括多个映射表项。

进一步的,所述映射表包括8个字节,前4字节存放逻辑块号,后4字节存放逻辑块号对应的物理块号。

进一步的,重新分配空闲的物理块的具体过程为:从物理块0开始,顺序扫描所有物理块的块有效标志,如果存在空闲块,则优先分配该块为新的物理块;如果不存在空闲块,但存在失效块,则首先擦除该失效块,然后选择该块物理块作为新分配的物理块。

进一步的,存储区域存储的数据文件采用分区的方式分别存储文件头和文件内容。

进一步的,对所述文件头进行扩展,在文件头中加入数据文件对应的逻辑块号,建立文件和逻辑块之间的映射关系。

进一步的,对数据文件的读写访问过程为:

采用iso7816标准规定的文件访问方式,在文件头分区中查找到对应的文件头;

从文件头中取出文件内容对应的逻辑块号;

从映射表中通过查表操作取得逻辑块号对应的物理块号;

对物理块进行读写操作。

与现有技术相比,采用上述技术方案的有益效果为:本发明的技术方案采用具备磨损均衡效果的映射方式来管理物理存储介质,提高了写入效率和写入寿命;同时根据智能卡应用场景对不同数据的访问规律不同,本发明的技术方案对文件系统文件头和数据采取了分区处理的策略,进一步降低了对物理介质的改写频率,提高了写入寿命。

附图说明

图1是本发明存储介质管理方式示意图。

图2是本发明映射块存储方式示意图。

图3是本发明空闲块分配流程示意图。

具体实施方式

下面结合附图对本发明做进一步描述。

一种提高智能卡文件系统flash写入寿命的方法,采用逻辑地址与物理地址映射的方式来管理物理存储介质,具体包括以下过程:

如图1所示,将存储区域划分为相同大小的物理块,将划分的物理块从0开始编号,具有块0到块n一共n+1个块;每个物理块内部的第一个字节存放块类型标志,用于区分不同的块类型;第二个字节存放块有效标志,用于标识块内存放数据是否有效;块的剩下其它部分为数据区,用于存储数据;当需要改写逻辑块内容时,从存储区域重新分配空闲的物理块,写入数据,逻辑块指向重新分配的物理块;采用块有效标识对旧的物理块标记失效。本发明采用分配新物理块的方式来实现逻辑块内容的改写,即当新创建一个逻辑块或者更新已有逻辑块内容时,并不更新其对应物理块内容,而是从内存池中新分配一个空闲的物理块,,写入数据,然后直接更新该逻辑块对应的映射表项,使得该逻辑块指向新分配的物理块。这种方法避免了改写时对物理块的擦除操作,因此提高了写入效率。但是,此时旧的物理块并没有擦除,因此还必须使用块有效标志对旧的物理块进行标示,表示该物理块已经“失效”。

优选地,块的大小等于flash存储介质的最小擦除单位。这样可以降低存储数据之间的耦合。

块有效标志和块类型:

在本实施例中,块有效标志的值为0x55表示块有效,0xff表示块未被使用,其余值均表示块已失效。

块类型标志用于区分两种不同的块类型,如图2所示,当块类型标示值为0x55时,所述块类型标志、块有效标志以及数据区组成映射块,用于存放逻辑块号到物理块号的映射关系,这时数据区包括多个映射表项,图中有n+1个映射表项。当块类型标识值为0xaa标示数据块,用于存放数据。

所述映射表包括8个字节,前4字节存放逻辑块号,后4字节存放逻辑块号对应的物理块号。这样就建立起了一个映射表。通过查询该映射表,可以快速的由逻辑块号索引到其对应的物理块号。数据块内部则直接存储文件系统管理数据和用户数据。

优选地,如图3所示,本实施例采用一种简单的方法分配空闲的物理块,重新分配空闲的物理块的具体过程为:从物理块0开始,顺序扫描所有物理块的块有效标志,检查当前块的块类型标志,如果存在空闲块,则优先分配该块为新的物理块;如果不存在空闲块,判断是否已经是最后一个物理块,如果不是最后一个物理块,则指向下一个物理块,返回到检查当前物理块的块有效标志的步骤,如果是最后一个物理块,则指向第一个物理块,继续检查当前块类型标志,判断是否失效。如果没有失效,则指向下一个物理块;如果失效则擦除该物理块,分配该块为新的物理块。上述分配方法可以有效的将写入的数据分散到物理介质的所有块中,因此具备一定的磨损均衡的效果,提高了物理介质写入寿命。同时由于其逻辑简单,因此适用于系统资源严重受限的智能卡应用场景。

优选地,本实施例存储区域存储的数据文件采用分区的方式分别存储文件头和文件内容。由于在智能卡的应用场景中,文件头的更新频率非常低,因此我们将文件头存放在独立的分区,不采用前面章节描述的映射方式,而是采用直接存储的方式来管理。

优选地,对所述文件头进行扩展,在文件头中加入数据文件对应的逻辑块号,建立文件和逻辑块之间的映射关系。如表1所示,本实施例对智能卡文件系统数据文件(ef文件)的文件头进行了扩展,在文件头中加入了文件内容对应的逻辑块号,由此建立文件与逻辑块之间的映射关系。

表1

由此,在本发明的实现方式中,对目录文件(df文件)的访问与传统方法一致。对数据文件(ef文件)的读写访问步骤与传统方法有所不同,具体如下:

(1)采用iso7816标准规定的文件访问方式,在文件头分区中查找到对应的文件头;

(2)从文件头中取出文件内容对应的逻辑块号;

(3)从映射表中通过查表操作取得逻辑块号对应的物理块号;

(4)对物理块进行读写操作。

本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1