一种Flash存储器的数据存取方法技术

技术编号:18710865 阅读:36 留言:0更新日期:2018-08-21 22:40
本发明专利技术公开一种Flash存储器的数据存取方法,所述Flash存储器重新规划分为根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区。所述存取方法包括根存储区操作、子存储区操作及数据存储区操作;其中根存储区操作包括根存储区初始化、根分类记录读取、根分类记录插入和根分类记录删除;子存储区操作包括子存储区初始化、子存储区销毁、子分类记录读取、子分类记录插入和子分类记录删除;数据存储区操作包括数据存储区初始化、数据记录读取、数据记录插入和数据记录删除。本发明专利技术能够解决使用FLASH存储器程序代码长和操作复杂的问题。

A data access method for Flash memory

The invention discloses a data access method for Flash memory. The Flash memory is reprogrammed into root storage area, sub-storage area pool and data storage area. The sub-storage area pool comprises more than one sub-storage area. The access method includes root storage operation, sub-storage operation and data storage operation, wherein root storage operation includes root storage initialization, root classification record reading, root classification record insertion and root classification record deletion, and sub-storage operation includes sub-storage initialization, sub-storage area destruction, and sub-classification record deletion. Record reading, sub-classification record insertion and sub-classification record deletion; data storage operations include data storage initialization, data record reading, data record insertion and data record deletion. The invention can solve the problem of using FLASH memory program code length and complex operation.

【技术实现步骤摘要】
一种Flash存储器的数据存取方法
本专利技术属于数据存储领域,具体涉及一种Flash存储器的数据存取方法。
技术介绍
数据存储是单片机系统中不可缺少的功能,主要用于存储系统的运行参数,以及在运行过程中采集到的大量数据。在单片机系统中使用的数据存储器分为EEPROM和FLASH两种。EEPROM具有单字节读写的能力,操作灵活,但是容量小,价格高,适合存储少量的运行参数等信息。FLASH具有按块擦除和按页读写的能力,容量大,价格低,适合存储大量的记录数据。FLASH有两种存储方式,一种存取方式是直接在FLASH上建立FAT16或者是FAT32文件分配表,以文件夹存储分类信息,以文件存储数据信息。这种方式操作方便,但是存储密度低,并且需要大量的程序代码,不适合小程序存储容量的单片机使用。第二是直接以扇区为单位按扇区编号顺序存取。这种方式存储密度高,程序代码量少,但是不能实现信息的分类存储,并且不能实现数据的插入、删除及自动覆盖等操作。
技术实现思路
本专利技术的目的在于提供一种基于Flash存储器的数据存取方法,解决使用FLASH存储器程序代码长和操作复杂的问题。为了解决所述技术问题,本专利技术采用的技术方案是:一种Flash存储器的数据存取方法,所述Flash存储器包括根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区,其中根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据信息;所述根存储区包括根存储区占用链表、根存储区空闲链表和根分类记录区,其中根存储区占用链表为根存储区占用记录组成的静态链表,根存储区空闲链表为根存储区空闲记录组成的静态链表,根分类记录区用于存储根分类记录;所述子存储区包括子存储区占用链表、子存储区空闲链表和子分类记录区,其中子存储区占用链表为子存储区占用记录组成的静态链表,子存储区空闲链表为子存储区空闲记录组成的静态链表,子分类记录区用于存储子分类记录;所述数据存储区包括数据存储区空闲链表和数据记录区,数据存储区空闲链表为数据存储区空闲记录组成的静态链表,数据记录区用于存储数据记录;所述数据存取方法包括根存储区操作、子存储区操作及数据存储区操作;其中根存储区操作包括根存储区初始化、根分类记录读取、根分类记录插入和根分类记录删除;子存储区操作包括子存储区初始化、子存储区销毁、子分类记录读取、子分类记录插入和子分类记录删除;数据存储区操作包括数据存储区初始化、数据记录读取、数据记录插入和数据记录删除。本专利技术所述的一种Flash存储器的数据存取方法,根存储区初始化步骤为:规划出FLASH存储器的部分扇区为根存储区,初始化根存储区占用链表,初始化根存储区空闲链表;其中根存储占用链表包括根存储区占用链表头和根存储区占用链表长度,根存储空闲链表包括根存储区空闲链表头和根存储区空闲链表长度;根存储占用链表初始化步骤为:将根存储区占用链表头置为系统定义的最大数,将根存储区占用链表长度置为0;根存储空闲链表初始化步骤为:将根存储区空闲链表头置为1,将根存储区空闲链表长度置为根分类记录数,将编号为1的根分类记录的后一条空闲记录的位置字段置为2,将编号为2的根分类记录的后一条空闲记录位置的字段置为3,依次类推,直到最后一条根分类记录的后一条空闲记录位置字段置为系统定义的最大数。本专利技术所述的一种Flash存储器的数据存取方法,根分类记录读取的步骤包括:S01)、若根存储区占用链表长度为0,则退出根分类记录读取操作;S02)、若根存储区占用链表长度为一个正整数,将根存储区占用链表头的值作为当前根分类记录的位置,读取当前根分类记录的后一条占用记录位置字段;S03)、若后一条占用记录位置字段等于系统定义的最大数,则退出根分类记录读取操作;S04)、若后一条占用记录位置字段小于系统定义的最大数,将当前根分类记录的后一条占用记录作为当前根分类记录,依次类推,直到当前根分类记录的后一条占用记录位置字段等于系统定义的最大数或者是判断当前根分类记录为要查找的记录为止。本专利技术所述的一种Flash存储器的数据存取方法,根分类记录插入的步骤包括:S01)、若根存储区空闲链表长度为0,则退出根分类记录插入操作;S02)、若根存储区空闲链表长度为一个正整数,将第一条根存储区空闲记录作为当前根分类记录,将要插入的根分类信息写入当前根分类记录的根分类信息标识字段;若当前插入的根分类的下一级是子分类则执行子存储区初始化操作,并将初始化的子存储区的起始位置赋值给当前根分类记录的下一级位置字段,当前记录的下一级类型标识置为子分类;S03)、若当前插入的根分类的下一级为数据,则执行数据记录插入操作,并将插入的数据记录的起始位置赋值给当前根分类记录的下一级位置字段,当前根分类记录的下一级类型标识置为数据;S04)、将当前根分类记录的后一条空闲记录位置字段的值赋值给根存储区空闲链表头;将根存储区占用链表头的值赋值给当前根分类记录的后一条空闲记录位置字段;将当前根分类记录的位置赋值给根存储区占用链表头。本专利技术所述的一种Flash存储器的数据存取方法,根分类记录删除的步骤包括:S01)、若根存储区占用链表长度为0,则退出根分类记录删除操作;S02)、若根存储区占用链表长度为一个正整数,将根存储区占用链表头的值作为当前根分类记录的位置,若当前根分类记录不是要删除的根分类记录,则将当前根分类记录的后一条占用记录作为当前根分类记录继续比较,直到当前根分类记录为要删除的根分类记录为止;若没有找到要删除的根分类记录,则退出根分类记录删除操作;S03)、若找到要删除的根分类记录,将当前根分类记录的后一条占用记录位置字段的值赋值给当前根分类记录的前一条根分类记录的后一条占用记录位置字段,如果当前根分类记录为第一条根存储区占用记录,则将当前根分类记录的后一条占用记录位置字段的值赋值给根存储区占用链表头;然后,将根存储区空闲链表头的值赋值给当前根分类记录的后一条占用记录位置字段,将当前根分类记录的位置值赋值给根存储区空闲链表头;S04)、若当前根分类记录的下一级类型标识为子分类则执行子存储区销毁操作,若当前根分类记录的下一级类型标识为数据则执行数据记录删除操作。本专利技术所述的-种Flash存储器的数据存取方法,子存储区初始化步骤为:从子存储区池中选择一个未使用的子存储区,然后初始化子存储区占用链表,初始化子存储区空闲链表;其中子存储区占用链表包括子存储区占用链表头和子存储区占用链表长度,子存储区空闲链表包括子存储区空闲链表头和子存储区空闲链表长度;子存储区占用链表初始化步骤包括:将子存储区占用链表头置为系统定义的最大数,将子存储区占用链表长度置为0;子存储区空闲链表初始化步骤包括:将子存储区空闲链表头置为1,将子存储区空闲链表长度置为子分类记录数,将编号为1的子分类记录的后一条空闲记录位置字段置为2,将编号为2的子分类记录的后一条空闲记录位置字段置为3,依次类推,直到最后一条子分类记录的后一条空闲记录位置字段置为系统定义的最大数。本专利技术所述的一种Flash存储器的数据存取方法,所述的子存储区销毁操作步骤包括:将要销毁的子存储区的所有扇区执行擦除操作,如果要销毁的子存储区还有下一级子存储区,则通过子存储区销毁操作逐级销本文档来自技高网...

【技术保护点】
1.一种Flash存储器的数据存取方法,其特征在于:所述Flash存储器的数据存储结构包括根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区,其中根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据信息;所述根存储区包括根存储区占用链表、根存储区空闲链表和根分类记录区,其中根存储区占用链表为根存储区占用记录组成的静态链表,根存储区空闲链表为根存储区空闲记录组成的静态链表,根分类记录区用于存储根分类记录;所述子存储区包括子存储区占用链表、子存储区空闲链表和子分类记录区,其中子存储区占用链表为子存储区占用记录组成的静态链表,子存储区空闲链表为子存储区空闲记录组成的静态链表,子分类记录区用于存储子分类记录;所述数据存储区包括数据存储区空闲链表和数据记录区,数据存储区空闲链表为数据存储区空闲记录组成的静态链表,数据记录区用于存储数据记录;所述数据存取方法包括根存储区操作、子存储区操作及数据存储区操作;其中根存储区操作包括根存储区初始化、根分类记录读取、根分类记录插入和根分类记录删除;子存储区操作包括子存储区初始化、子存储区销毁、子分类记录读取、子分类记录插入和子分类记录删除;数据存储区操作包括数据存储区初始化、数据记录读取、数据记录插入和数据记录删除。...

【技术特征摘要】
1.一种Flash存储器的数据存取方法,其特征在于:所述Flash存储器的数据存储结构包括根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区,其中根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据信息;所述根存储区包括根存储区占用链表、根存储区空闲链表和根分类记录区,其中根存储区占用链表为根存储区占用记录组成的静态链表,根存储区空闲链表为根存储区空闲记录组成的静态链表,根分类记录区用于存储根分类记录;所述子存储区包括子存储区占用链表、子存储区空闲链表和子分类记录区,其中子存储区占用链表为子存储区占用记录组成的静态链表,子存储区空闲链表为子存储区空闲记录组成的静态链表,子分类记录区用于存储子分类记录;所述数据存储区包括数据存储区空闲链表和数据记录区,数据存储区空闲链表为数据存储区空闲记录组成的静态链表,数据记录区用于存储数据记录;所述数据存取方法包括根存储区操作、子存储区操作及数据存储区操作;其中根存储区操作包括根存储区初始化、根分类记录读取、根分类记录插入和根分类记录删除;子存储区操作包括子存储区初始化、子存储区销毁、子分类记录读取、子分类记录插入和子分类记录删除;数据存储区操作包括数据存储区初始化、数据记录读取、数据记录插入和数据记录删除。2.根据权利要求1所述的Flash存储器的数据存取方法,其特征在于:根存储区初始化步骤为:规划出FLASH存储器的部分扇区为根存储区,初始化根存储区占用链表,初始化根存储区空闲链表;其中根存储占用链表包括根存储区占用链表头和根存储区占用链表长度,根存储空闲链表包括根存储区空闲链表头和根存储区空闲链表长度;根存储占用链表初始化步骤为:将根存储区占用链表头置为系统定义的最大数,将根存储区占用链表长度置为0;根存储空闲链表初始化步骤为:将根存储区空闲链表头置为1,将根存储区空闲链表长度置为根分类记录数,将编号为1的根分类记录的后一条空闲记录的位置字段置为2,将编号为2的根分类记录的后一条空闲记录位置的字段置为3,依次类推,直到最后一条根分类记录的后一条空闲记录位置字段置为系统定义的最大数。3.根据权利要求2所述的Flash存储器的数据存取方法,其特征在于:根分类记录读取的步骤包括:S01)、若根存储区占用链表长度为0,则退出根分类记录读取操作;S02)、若根存储区占用链表长度为一个正整数,将根存储区占用链表头的值作为当前根分类记录的位置,读取当前根分类记录的后一条占用记录位置字段;S03)、若后一条占用记录位置字段等于系统定义的最大数,则退出根分类记录读取操作;S04)、若后一条占用记录位置字段小于系统定义的最大数,将当前根分类记录的后一条占用记录作为当前根分类记录,依次类推,直到当前根分类记录的后一条占用记录位置字段等于系统定义的最大数或者是判断当前根分类记录为要查找的记录为止。4.根据权利要求2所述的Flash存储器的数据存取方法,其特征在于:根分类记录插入的步骤包括:S01)、若根存储区空闲链表长度为0,则退出根分类记录插入操作;S02)、若根存储区空闲链表长度为一个正整数,将第一条根存储区空闲记录作为当前根分类记录,将要插入的根分类信息写入当前根分类记录的根分类信息标识字段;若当前插入的根分类的下一级是子分类则执行子存储区初始化操作,并将初始化的子存储区的起始位置赋值给当前根分类记录的下一级位置字段,当前记录的下一级类型标识置为子分类;S03)、若当前插入的根分类的下一级为数据,则执行数据记录插入操作,并将插入的数据记录的起始位置赋值给当前根分类记录的下一级位置字段,当前根分类记录的下一级类型标识置为数据;S04)、将当前根分类记录的后一条空闲记录位置字段的值赋值给根存储区空闲链表头;将根存储区占用链表头的值赋值给当前根分类记录的后一条空闲记录位置字段;将当前根分类记录的位置值赋值给根存储区占用链表头。5.根据权利要求2所述的Flash存储器的数据存取方法,其特征在于:根分类记录删除的步骤包括:S01)、若根存储区占用链表长度为0,则退出根分类记录删除操作;S02)、若根存储区占用链表长度为一个正整数,将根存储区占用链表头的值作为当前根分类记录的位置,若当前根分类记录不是要删除的根分类记录,则将当前根分类记录的后一条占用记录作为当前根分类记录继续比较,直到当前根分类记录为要删除的根分类记录为止;若没有找到要删除的根分类记录,则退出根分类记录删除操作;S03)、若找到要删除的根分类记录,将当前根分类记录的后一条占用记录位置字段的值赋值给当前根分类记录的前一条根分类记录的后一条占用记录位置字段,如果当前根分类记录为第一条根存储区占用记录,则将当前根分类记录的后一条占用记录位置字段的值赋值给根存储区占用链表头;然后,将根存储区空闲链表头的值赋值给当前根分类记录的后一条占用记录位置字段,将当前根分类记录的位置赋值给根存储区空闲链表头;S04)、若当前根分类记录的下一级类型标识为子分类则执行子存储区销毁操作,若当前根分类记录的下一级类型标识为数据则执行数据记录删除操作。6.根据权利要求1所述的Flash存储器的数据存取方法,其特征在于:子存储区初始化步骤为:从子存储区池中选择一个未使用的子存储区,然后初始化子存储区占用链表,初始化子存储区空闲链表;其中子存...

【专利技术属性】
技术研发人员:田海峰董艳锋
申请(专利权)人:曲阜师范大学
类型:发明
国别省市:山东,37

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

1