一种闪存的数据存取方法及装置制造方法及图纸

技术编号:3869638 阅读:149 留言:0更新日期:2012-04-11 18:40
本发明专利技术适用于数据存储领域,提供了一种闪存的数据存取方法和装置,所述方法包括下述步骤:将闪存中的数据加载至内存,读取静态存储器中存储的修改命令;对内存中的数据执行修改命令后,将内存中的数据拷贝至闪存,并清空静态存储器中存储的修改命令;在对内存中的数据执行修改命令时,将修改命令保存至静态存储器;当静态存储器满时,直接将内存中的数据拷贝到闪存,并清空SRAM中存储的修改命令。本发明专利技术实施例通过将对内存中的数据执行的修改命令存储至SRAM中,并在SRAM满时,将内存中的数据拷贝至闪存,从而较大程度上降低了对闪存的擦写频率,延长了闪存的使用寿命。

【技术实现步骤摘要】

本专利技术属于数据存储领域,尤其涉及一种闪存的数据存储方法及装置。
技术介绍
在嵌入式产品中,特别是带有嵌入式操作系统的工控产品中,通常采用非易失性闪存(FLASH)作为存储器,来存储程序或者中间数据,以降低产品的 功耗和成本,提高产品的性能和质量。现有的闪存的数据存取方法一般如下 先根据闪存的物理结构将闪存划分为一个以上的段,并给予每个段唯一编号, 在每段内划分一个以上的逻辑块,并在段内给予每个逻辑块唯一编号,闪存的 基本读写方式是以页为单位写入,以块为单位擦除,且必须在擦除之后才能写 入数据,对闪存中段的擦除是循环交替进行的,通过设计合理的文件系统算法, 使闪存中每一段的擦除次数相同,从而实现对闪存的均匀磨损和断电保护,可 以有效延长闪存的使用寿命。但由于闪存的基本读写方式是以页为单位写入,以块为单位擦除,且必须 在擦除之后才能写入数据,而闪存的可擦除次数是有限的, 一般为100000到 1000000次,当闪存中的某个位被擦除的次数达到极限值(一般为100000到 1000000次)后,闪存的该位就无法再被擦除,这样即使有文件系统的优化保 护,但当对闪存的擦写较频繁时,还是会减少闪存的使用寿命。
技术实现思路
本专利技术实施例的目的在于提供一种闪存的数据存取方法,旨在解决现有的 闪存的数据存取方法对闪存的擦写次数过多而减少闪存的使用寿命的问题。 本专利技术实施例是这样实现的, 一种闪存的数据存取方法,所述方法包括下述步骤将闪存中的数据加载至内存;读取静态存储器中存储的修改命令,对内存中的数据执行所述修改命令, 将内存中的数据拷贝至闪存,并清空静态存储器中存储的修改命令;在对内存中的数据执行修改命令时,将所述修改命令保存至静态存储器; 当所述静态存储器已满时,将内存中的数据拷贝至闪存。 本专利技术实施例的另一目的在于提供一种闪存的数据存取装置,所述装置包括数据加载单元,用于将闪存中的数据加载至内存;修改命令存储单元,用于将对内存中的数据的修改命令保存至静态存储器; 修改命令读取单元,用于在系统启动时,读取所述静态存储器中存储的修 改命令;改命令,得到更新后的数据,并将更新后的数据拷贝至闪存,或者在所述静态 存储器满时,将内存中的数据拷贝至闪存。在本专利技术实施例中,将闪存中的数据加载至内存,读取SRAM中存储的修 改命令,对内存中的数据执行这些修改命令后,将内存中的数据拷贝至闪存, 清空SRAM中存储的修改命令,在对内存中的数据执行修改命令,得到更新后 的数据时,将该修改命令存储至SRAM,当SRAM满时,将内存中的数据拷贝 至闪存,并清空SRAM中存储的修改命令,从而在保证闪存中的数据的准确性 的同时,减少了对闪存的擦写频率,延长了闪存的使用寿命。附图说明图1是本专利技术实施例提供的闪存的数据存取方法的实现流程图; 图2是本专利技术实施例提供的闪存的数据存取装置的结构框图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本专利技术进^亍进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本专利技术,并不用于限定本专利技术。在本专利技术实施例中,将闪存中的数据加载至内存,读取SRAM中存储的修 改命令,对内存中的数据执行这些修改命令后,将内存中的数据拷贝至闪存, 清空SRAM中存储的修改命令,在对内存中的数据执行修改命令,得到更新后 的数据时,将该修改命令存储至SRAM,当SRAM满时,将内存中的数据拷贝 至闪存,并清空SRAM中存储的修改命令,从而减少了对闪存的擦写频率,延 长了闪存的使用寿命。图1示出了本专利技术实施例提供的闪存的数据存取方法的实现流程,详述如下在步骤S101中,对静态存储器(Static RAM)进行初始化,将SRAM初 始化为可访问状态。在本专利技术实施例中,仅在第一次使用该方法对闪存的数据进行存取时需要 对静态存储器进行初始化。需要对SRAM进行的初始化包括设置SRAM的空 间用途和将SRAM映射到内存的某一地址。其中设置SRAM的空间用途是为了避免SRAM中的数据存储混乱而造成 的系统性能的下降。在设置SRAM的空间用途时,可以根据系统的需要,灵活 的设置,举例说明如下,但设置SRAM的空间用途的方式不以该举例说明为限将该SRAM的空间设置为两部分,其中一部分用于保存修改命令,称为修 改命令存储区,另一部分用于保存当前SRAM中有效修改命令的条数,称为命 令总数存储区。为了后续的扩展应用,在设置SRAM的空间用途时,也可以将 该SRAM的空间设置为三部分,分别为修改命令存储区、命令总数存储区和保 留区,其中保留区备后续使用。其它则没有限定,若需要划分为更多部分也可 以,根据具体的环境而定。当然,还可以根据整个系统的需要来设置SRAM的控件用途。其中每个存储区的大小可以根据每个存储区需要存储的数据量来确定,如假设SRAM的空间总大小为256K,则可以按照如下方式设置SRAM 的空间用途将SRAM的前IK的设置为命令总数存储区,用于保存当前SRAM中有效 修改命令的条数;将SRAM的中间240K设置为修改命令存储区,用于存储对 加载至内存中的数据的执行的修改命令;将SRAM的剩余空间设置为保留区, 以备后用。将SRAM映射到内存的某一地址是为了可以对SRAM进行读写操作。其 具体过程如下先执行SRAM的硬件驱动程序,实现MMAP函数以将SRAM映射到内存 的某一地址,并对SRAM控制寄存器的相关参数进行设置。其中,实现MMAP 函数只需调用如下内核函^t即可remap_page—range (vm->vm_start, SRAM一ADDR一START + ( vm-〉vm_pgoff 《PAGE—SHIFT ), SRAM一ADDR一SIZE, vm-〉vm_page_prot)其中需要设置的SRAM控制寄存器为硬件中SRAM所使用的是第几个通 道,如SMCBCR2,地址为0xf0080008。根据SRAM的读写单元的长度,设置 SRAM控制寄存器的数据长度,在本专利技术实施例中,以SRAM的读写长度为 16位为例,进行说明。此时将SRAM控制寄存器的数据长度设置为16位,并 将其总线占用周期数设置为6到8区间内的任意值,以使该闪存的数据存储达 到最佳效果。在本专利技术实施例中,当SRAM控制寄存器的总线占用周期数太长, 如设置为大于8时,根据测试,将影响其它部件的正常运转,其外在表现是每 次读取SRAM时,将造成屏幕闪烁。执行了 SRAM硬件驱动程序后,通过在应用程序里调用如下系统函数 (INT認* )mmap( NULL, TOTAL—SRAM, PROT一READ | PROT—WRITE, MAP—SHARED , fd, 0 ),即可获得SRAM映射到内存中的虚拟地址的首地址, ,人而-将SRAM初始化为可访问状态。在步骤S102中,将闪存中的数据加载至内存,并读取SRAM中的修改命令,对加载至内存中的数据执行读取的修改命令,得到更新后的数据。在本专利技术实施例中,在系统启动后,先将闪存中的凄t据加载至内存,此时,如果SRAM中存储有修改命令,则读取SRAM中存储的修改命令,并对加载 至内存中的数据执行读取的修改命令,得到更新后的数据。在步骤S103中,本文档来自技高网...

【技术保护点】
一种闪存的数据存取方法,其特征在于,所述方法包括下述步骤: 将闪存中的数据加载至内存; 读取静态存储器中存储的修改命令,对内存中的数据执行所述修改命令,将内存中的数据拷贝至闪存,并清空静态存储器中存储的修改命令; 在对内存 中的数据执行修改命令时,将所述修改命令保存至静态存储器; 当所述静态存储器已满时,将内存中的数据拷贝至闪存。

【技术特征摘要】

【专利技术属性】
技术研发人员:梁日雄刘军余加波
申请(专利权)人:深圳市宝捷信科技有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1