用磁盘文件虚拟闪存读写数据的方法

文档序号:6340577阅读:572来源:国知局
专利名称:用磁盘文件虚拟闪存读写数据的方法
技术领域
;本发明公开了一种虚拟闪存技术。
背景技术
在一些电子设备(包括但不限于网络设备、工控机设备等)的实现中,用于存储和读取数据的载体往往是闪存,当前业界标准的闪存使用方法是1)按照一定大小分成多块,每块有一定字节数的容量,访问闪存时采用绝对或者相对地址(以下统一称为地址),地址和块号是相关的。2)读操作将闪存的一个地址区间的数据读取到指定开始地址和相同大写的内存中,真实闪存的读操作可以是随机的;3)写操作将内存的一个地址区间的数据写到指定开始地址和相同大小的闪存中,如果闪存的地址区间是跨越不同块的,就要求分解成多块,分别以块为单位进行操作,要先将该块内容全部读出到一个建立在内存中的缓冲(这个缓冲的大小和块一样,是完整映象),全部擦除该块内容,然后根据要写的内容更新该缓冲(可能是部分),再将缓冲全部写入该块;如果涉及多块,依次按块进行上述操作;4)擦除操作主要是因为闪存的物理特性,写之前要先擦除,当然也可以是为了保密需要而作纯粹的擦除。5)一般设备软件的驱动都对闪存操作作了这样的封装读、写、擦除。
随着技术的发展,一些设备开始采用磁盘作为存储器,使用磁盘文件系统的读写操作来访问数据。
由于这两种设备的软件的数据访问部分是不相关的,因而,对数据访问而言,形成了两种不同的设备平台。
上述现有技术存在如下缺点1)对于直接使用闪存的设备平台,在写操作前必须擦除对应的闪存块,然后再写操作,速度比较慢;2)对于直接使用磁盘文件系统的设备平台,将一些重要数据存储时要按照文件名或者记录来区分,在结构组织上比较复杂,对上层软件而言不如直接访问绝对或者相对地址来得方便;3)当需要将直接读写闪存的应用软件模块移植到使用磁盘的设备平台上时,需要改写上层软件的数据访问方式,牵涉的应用模块很多,需要重新设计实现相关部分,有很大的改写工作量;4)当在一个使用磁盘的设备平台上开发新的软件或者模块时,如果需要同时考虑将来会移植到直接使用闪存的设备平台上,那么,其中有数据读写的应用模块是否需要改写是个问题。

发明内容
本发明的目的意在克服上述现有技术的不足,提供一种使应用软件的数据读写操作能够在上述两种不同的设备平台上透明地平滑移植和兼容开发的用磁盘文件虚拟闪存读写数据的方法。
实现上述目的的技术方案一种用磁盘文件虚拟闪存读写数据的方法,包括以下步骤a、根据需要的闪存容量配置产生对应的磁盘文件;b、根据步骤a)建立闪存地址到文件和相对文件头部的偏移量的映射关系,使每一个闪存的有效地址都可以映射到磁盘文件和相对文件头部的偏移量;c、根据应用模块需要访问的闪存地址区间,按照步骤b)通过映射关系转换成文件和偏移量的区间进行读写访问;d、将步骤c)的读写操作封装成和闪存读写函数具有一样的输入输出参数。
采用上述技术方案,本发明突出的技术进步在于1)原先使用直接闪存操作的应用软件模块在移植到使用磁盘文件系统的设备平台上时,不需要修改其数据读写的操作,可以直接使用。2)在使用磁盘文件系统的设备平台上,如果有应用模块需要将来移植到直接闪存操作的设备平台上的,该应用模块可以按照虚拟闪存技术来设计,以后移植不存在问题。3)在使用磁盘文件系统的设备平台上,即使对于没有移植可能的应用模块,使用虚拟闪存技术来读写数据,访问的算法会更方便、安全。因为这样数据的组织方式和存储的绝对地址都固定下来了,即使是代表虚拟闪存的真实磁盘文件也是从一开始就固定下来,而在文件大小和占据的磁盘空间位置(多个扇区)上不会发生变化,变化的是其中的内容,对于磁盘文件而言,当有变化大小的情形时,是可能发生错误的。这对于网络设备中的一些典型设计的继承使用,尤其重要。4)随着计算机技术的发展,磁盘相比闪存有速度快、容量大、便宜、可移动、更换方便等特点。5)通过按照单个块或者多个块映象成不同文件,可以方便地发现因程序错误造成读写闪存地址的越界操作,提高了软件的可测性和可维护性;6)可以方便地在磁盘文件操作系统下,通过对文件进行复制,方便地备份闪存数据。
下面通过实施例对本发明作进一步详细的描述实施例一种用磁盘文件虚拟闪存读写数据的方法,包括以下步骤a、根据需要的闪存容量配置产生对应的磁盘文件。可以是一个闪存块对应一个文件(第一种),也可以是多个块分组,每个组对应一个文件(第二种),或者所有的块对应一个文件(第三种);对于核心算法,按照第二种的分组方式来实现,第一种和第三种是第二种的两个特例,一个组可以只有一块,或者是全部块,或者部分块。
b、根据步骤a)建立闪存地址到文件和相对文件头部的偏移量的映射关系,使每一个闪存的有效地址都可以映射到磁盘文件和相对文件头部的偏移量。偏移量可以是以字节为单位,或者规定最小的访问单位字节数,或者按照2个或者4个或者多个字节对齐等,根据实际闪存的操作特点而定。
c、根据应用模块需要访问的闪存地址区间,按照步骤b)通过映射关系转换成文件和相对文件头部的偏移量的区间进行读写访问。其响应的操作是1)读操作,如果指定的闪存地址区间跨越多个不同分组,那么会依次打开每个分组对应的映象文件进行读操作,将数据依次读入指定的内存;2)写操作如果指定的闪存地址区间跨越多个不同分组,那么会依次打开每个分组对应的映象文件进行写操作,将数据依次写入对应的文件偏移量区间的文件位。由于磁盘文件系统的特点,在此可以省略将整块先复制出来、再擦除、再更新写入的方法,没有显式的擦除,而是直接可以写操作,因而写操作速度快捷、方便。当然,如果原来的真实闪存驱动具有按块擦除数据的函数、或者有必要为保密而加一个擦除操作,可以根据应用场合设立和真实闪存擦除操作有一样参数的一个擦除函数。
d、将步骤c)的读写操作封装成和闪存读写函数具有一样的输入输出参数,如果虚拟闪存操作函数和实际闪存操作函数同名,则可采用重载方式;如果不同名,用简单的统一替换函数名即可完成。或者在所述封装的虚拟闪存操作函数中作一个判断的开关,若使用磁盘的设备平台则选择用磁盘虚拟闪存操作,若使用闪存的设备平台则选择用真实闪存操作。
按照上述步骤完成后,在磁盘文件系统上利用对磁盘的读写操作通过一定的映射转换,模拟成对闪存的操作,应用模块将可以按照直接访问闪存的方式访问数据,其余相关算法流程不用变动,使得上层应用软件的读写数据的算法在是否存在真实闪存的设备平台上是一样的。原先使用闪存的上层应用软件模块可以平滑移植到使用磁盘文件系统的设备平台上,或者在磁盘文件的平台上的新开发的应用模块通过本技术仿佛就运行在使用闪存的平台上。
本发明的虚拟闪存技术已在格林耐特公司的AS8208和AS8826和NATXP1000等使用磁盘文件系统的网络设备上实现的。这些产品使用的部分模块是从公司的其它网络产品移植过来,原来的应用模块使用直接闪存操作的方式来读写数据,使用了虚拟闪存技术后,应用模块的相关部分无需改动;而在虚拟闪存的设备平台上新实现的一些模块功能,又可以很方便地移植回使用闪存地设备平台上。从而较大程度地提高了公司的开发效率,节约了开发成本。
权利要求
1.一种用磁盘文件虚拟闪存读写数据的方法,其特征在于包括以下步骤a、根据需要的闪存容量配置产生对应的磁盘文件;b、根据步骤a)建立闪存地址到文件和相对文件头部的偏移量的映射关系,使每一个闪存的有效地址都可以映射到磁盘文件和相对文件头部的偏移量;c、根据应用模块需要访问的闪存地址区间,按照步骤b)通过映射关系转换成文件和偏移量的区间进行读写访问;d、将步骤c)的读写操作封装成和闪存读写函数具有一样的输入输出参数。
2.如权利要求1所述的用磁盘文件虚拟闪存读写数据的方法,其特征在于步骤b)可以是一个闪存块对应一个文件,也可以是多个块分组,每个组对应一个文件,还可以是所有的块对应一个文件。
3.如权利要求2所述的用磁盘文件虚拟闪存读写数据的方法,其特征在于一个组可以只有一块,或者是全部块,或者是部分块。
4.如权利要求1所述的用磁盘文件虚拟闪存读写数据的方法,其特征在于偏移量可以是以字节为单位,或者规定最小的访问单位字节数,或者按照2个或者4个或者多个字节对齐。
5.如权利要求1~4任意一项所述的用磁盘文件虚拟闪存读写数据的方法,其特征在于如果虚拟闪存操作函数和实际闪存操作函数同名,则可采用重载方式;如果不同名,用简单的统一替换函数名。
6.如权利要求1~4任意一项所述的用磁盘文件虚拟闪存读写数据的方法,其特征在于在所述封装的虚拟闪存操作函数中作一个判断的开关,若使用磁盘的设备平台则选择用磁盘虚拟闪存操作,若使用闪存的设备平台则选择用真实闪存操作。
全文摘要
本发明公开一种虚拟闪存技术,具体地说是一种用磁盘文件虚拟闪存读写数据的方法,包括以下步骤a)根据需要的闪存容量配置产生对应的磁盘文件;b)根据步骤a)建立闪存地址到文件和相对文件头部的偏移量的映射关系,使每一个闪存的有效地址都可以映射到磁盘文件和相对文件头部的偏移量;c)根据应用模块需要访问的闪存地址区间,按照步骤b)通过映射关系转换成文件和偏移量的区间,进行读写访问;d)将步骤c)的读写操作封装成和闪存读写函数具有一样的输入输出参数。本发明在只有磁盘设备而没有闪存设备的环境上,让需要对闪存读写数据的上层软件实现透明的平滑移植和兼容开发,提高了开发效率和数据安全性,缩短了移植需要的时间。
文档编号G06F12/08GK1598789SQ0314687
公开日2005年3月23日 申请日期2003年9月16日 优先权日2003年9月16日
发明者宋强 申请人:深圳市格林耐特通信技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1