CN108376121B - 一种Flash存储器的数据存储方法 - Google Patents
一种Flash存储器的数据存储方法 Download PDFInfo
- Publication number
- CN108376121B CN108376121B CN201810171806.5A CN201810171806A CN108376121B CN 108376121 B CN108376121 B CN 108376121B CN 201810171806 A CN201810171806 A CN 201810171806A CN 108376121 B CN108376121 B CN 108376121B
- Authority
- CN
- China
- Prior art keywords
- storage area
- sub
- root
- linked list
- idle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种Flash存储器的数据存储方法,包括根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区,其中根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据信息;所述根存储区包括根存储区占用链表、根存储区空闲链表和根分类记录区,其中根存储区占用链表为根存储区占用记录组成的静态链表,根存储区空闲链表为根存储区空闲记录组成的静态链表,根分类记录区用于存储根分类记录。本发明能够解决使用FLASH存储器程序代码长和操作复杂的问题。
Description
技术领域
本发明属于数据存储领域,具体涉及一种Flash存储器的数据存储方法。
背景技术
数据存储是单片机系统中不可缺少的功能,主要用于存储系统的运行参数,以及在运行过程中采集到的大量数据。在单片机系统中使用的数据存储器分为EEPROM和FLASH两种。EEPROM具有单字节读写的能力,操作灵活,但是容量小,价格高,适合存储少量的运行参数等信息。FLASH具有按块擦除和按页读写的能力,容量大,价格低,适合存储大量的记录数据。FLASH有两种存储方式,一种存取方式是直接在FLASH上建立FAT16或者是FAT32文件分配表,以文件夹存储分类信息,以文件存储数据信息。这种方式操作方便,但是存储密度低,并且需要大量的程序代码,不适合小程序存储容量的单片机使用。第二是直接以扇区为单位按扇区编号顺序存取。这种方式存储密度高,程序代码量少,但是不能实现信息的分类存储,并且不能实现数据的插入、删除及自动覆盖等操作。
发明内容
本发明的目的在于提供一种基于Flash存储器的数据存储方法,解决使用FLASH存储器程序代码长和操作复杂的问题。
为了解决所述技术问题,本发明采用的技术方案是:一种Flash存储器的数据存储方法,包括根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区,其中根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据信息;所述根存储区包括根存储区占用链表、根存储区空闲链表和根分类记录区,其中根存储区占用链表为根存储区占用记录组成的静态链表,根存储区空闲链表为根存储区空闲记录组成的静态链表,根分类记录区用于存储根分类记录;所述子存储区包括子存储区占用链表、子存储区空闲链表和子分类记录区,其中子存储区占用链表为子存储区占用记录组成的静态链表,子存储区空闲链表为子存储区空闲记录组成的静态链表,子分类记录区用于存储子分类记录;所述数据存储区包括数据存储区空闲链表和数据记录区,数据存储区空闲链表为数据存储区空闲记录组成的静态链表,数据记录区记录数据记录。
本发明所述的一种Flash存储器的数据存储方法,根存储区占用链表包括根存储区占用链表头、根存储区占用链表长度,根存储区占用链表头是第一条根存储区占用记录的位置,根存储区占用链表长度是根存储区占用记录的数量。
本发明所述的一种Flash存储器的数据存储方法,所述的根存储区占用链表头为一正整数,根存储区占用链表长度为一正整数或0。
本发明所述的一种Flash存储器的数据存储方法,所述的根存储区空闲链表包括根存储区空闲链表头、根存储区空闲链表长度,根存储区空闲链表头是第一条根存储区空闲记录的位置,根存储区空闲链表长度是根存储区空闲记录的数量。
本发明所述的一种Flash存储器的数据存储方法,所述的根存储区空闲链表头为一正整数,根存储区空闲链表长度为一正整数或0。
本发明所述的一种Flash存储器的数据存储方法,根分类记录区存储的根分类记录包括根存储区占用记录和根存储区空闲记录,根存储区占用记录包括四个字段,四个字段的内容分别为根分类信息标识、下一级类型标识、下一级位置和后一条占用记录的位置;根存储区空闲记录包括四个字段,前三个字段无效,最后一个字段的内容为后一条空闲记录的位置。
本发明所述的一种Flash存储器的数据存储方法,所述的子存储区占用链表包括子存储区占用链表头、子存储区占用链表长度,子存储区占用链表头是第一条子存储区占用记录的位置,子存储区占用链表长度是子存储区占用记录的数量。
本发明所述的一种Flash存储器的数据存储方法,所述的子存储区占用链表头为一正整数,子存储区占用链表长度为一正整数或0。
本发明所述的一种Flash存储器的数据存储方法,所述的子存储区空闲链表包括子存储区空闲链表头、子存储区空闲链表长度,子存储区空闲链表头是第一条子存储区空闲记录的位置,子存储区空闲链表长度是子存储区空闲记录的数量。
本发明所述的一种Flash存储器的数据存储方法,所述的子存储区空闲链表头为一正整数,子存储区空闲链表长度为一正整数或0。
本发明所述的一种Flash存储器的数据存储方法,子分类记录区存储的子分类记录包括子存储区占用记录和子存储区空闲记录,子存储区占用记录包括四个字段,四个字段的内容分别为本级分类信息标识、下一级类型标识、下一级位置和后一条占用记录的位置;子存储区空闲记录包括四个字段,前三个字段无效,最后一个字段的内容为后一条空闲记录的位置。
本发明所述的一种Flash存储器的数据存储方法,数据存储区空闲链表包括数据存储区空闲链表头、数据存储区空闲链表长度,数据存储区空闲链表头为第一条数据存储区空闲记录的位置,数据存储区空闲链表长度为数据存储区空闲记录的数量,数据存储区空闲记录包括后一条空闲记录的位置字段。
本发明所述的一种Flash存储器的数据存储方法,数据存储区空闲链表头为一正整数,数据存储区空闲链表长度为一正整数或0。
本发明的有益效果:本发明将Flash存储器的扇区分为根存储区、子存储区和数据存储区,子存储区还可以有下一级子存储区,可以满足单片机系统对存储器容量的要求,降低了原有Flash存储器文件存储方式对硬件及软件资源占用,有效解决小程序存储容量的单片机存储大量数据的问题,各分类信息区采用静态链表的组织结构,提高了存储器的读写寿命。本发明所述的Flash存储器的数据存储方法并不仅限于应用单片机系统中,还可以应用在嵌入式系统中。
附图说明
图1为本发明所述Flash存储器的数据存储方法整个存储区的结构图;
图2为根存储区的结构示意图;
图3为子存储区的结构示意图;
图4为数据存储区的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了能够更清晰的了解数据存储方法,如图1所示。本实施例所述Flash存储器的数据存储方法由根存储区、子存储区构成的子存储区池和数据存储区三部分组成,根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据本身的信息。
可以根据实际需求来确定各部分占用的实际存储空间容量,对于分类信息层次深且数量多而数据量小的情况,可以为子存储区池分配更大的空间;对于分类信息层次浅且数量少而数据量大的情况,可以为数据存储区分配更大的空间。子存储区的大小可以根据实际需要分配,且各子存储区大小可以不一样。FLASH存储器一般以512字节为一页,根存储区可以由一页或者多页存储,子存储区池也可以由一页或多页存储,数据存储区的每条数据记录亦可以由一页或多页存储。
根存储区结构如图2所示,根存储区由根存储区占用链表、根存储区空闲链表和根分类记录区组成。其中根存储区占用链表为根存储区占用记录组成的静态链表,由占用链表头指向该链表。根存储区占用链表包括根存储区占用链表头、根存储区占用链表长度。根存储区占用链表头为一正整数,是第一条根存储区占用记录的位置。所述的根存储区占用链表长度为一正整数或0,是根存储区占用记录的数量。
根存储区空闲链表为根存储区空闲记录组成的静态链表,由空闲链表头指向该链表。根存储区空闲链表包括根存储区空闲链表头、根存储区空闲链表长度。根存储区空闲链表头为一正整数,是第一条根存储区空闲记录的位置。根存储区空闲链表长度为一正整数或0,是根存储区空闲记录的数量。
可以将根存储区占用链表头和占用链表长度,以及空闲链表头和空闲链表长度单元放在FLASH存储器第一个扇区中固定的位置。各单元的数据宽度为4个字节。根分类记录区存储的根分类记录包括根存储区占用记录和根存储区空闲记录,根存储区占用记录由根分类信息标识、下一级类型标识、下一级位置和后一条占用记录位置组成。其中根分类信息标识为标识该条根分类记录的内容信息,可以是一个设备的名称或者是一个日期类型等。下一级类型标识为子类型或者是数据。下一级位置用于指向下一级存储区的位置,可以为子存储区的位置或者是数据记录的位置。后一条占用记录位置用于指向后一条根存储区占用记录位置。根存储区空闲记录只有后一条空闲记录位置有效,其余三个字段无效。其中后一条空闲记录位置用于指向后一条根存储区空闲记录位置。根分类记录由从第二个扇区开始的若干个连续的扇区组成,每个扇区可以存储多条根分类记录。
子存储区结构如图3所示,子存储区由子存储区占用链表、子存储区空闲链表和子分类记录区组成。其中子存储区占用链表为子存储区占用记录组成的静态链表,由占用链表头指向该链表。子存储区占用链表包括子存储区占用链表头、子存储区占用链表长度。子存储区占用链表头为一正整数,是第一条子存储区占用记录的位置。子存储区占用链表长度为一正整数或0,是子存储区占用记录的数量。
子存储区空闲链表为子存储区空闲记录组成的静态链表,由空闲链表头指向该链表。子存储区空闲链表包括子存储区空闲链表头、子存储区空闲链表长度。子存储区空闲链表头为一正整数,是第一条子存储区空闲记录的位置。子存储区空闲链表长度为一正整数或0,是子存储区空闲记录的数量。
可以将子存储区占用链表头和占用链表长度,以及空闲链表头和空闲链表长度单元放在该子存储区的第一个扇区中固定的位置。各单元的数据宽度为4个字节。子分类记录区存储的子分类记录包括子存储区占用记录和子存储区空闲记录,子存储区占用记录由本级分类信息标识、下一级类型标识、下一级位置和后一条占用记录位置组成。其中本级分类信息标识为标识该条子分类记录的内容信息,可以是一个日期类型或时间类型等。下一级类型标识为子类型或者是数据。下一级子位置用于指向下一级子存储区或者是数据记录的位置。后一条占用记录位置用于指向后一条子存储区占用记录位置。子存储区空闲记录只有后一条空闲记录位置有效,其余三个字段无效。其中后一条区空闲记录位置用于指向后一条子存储区空闲记录位置。子分类记录由从该子存储区第二个扇区开始的若干个连续的扇区组成,每个扇区可以存储多条子分类记录。
数据存储区结构如图4所示,数据存储区由数据存储区空闲链表和数据记录组成。数据存储区空闲链表为数据存储区空闲记录组成的静态链表,由空闲链表头指向该链表。可以将空闲链表头和空闲链表长度单元放在数据存储区的第一个扇区中固定的位置,各单元的数据宽度为4个字节。数据存储区空闲记录包含后一条空闲记录位置字段,用以指向后一条空闲记录位置。该字段可以直接利用空闲记录的第一个扇区的某一固定位置来存放。
综上所述,本发明的Flash存储器的数据存储方法及存取方法可以满足单片机系统对存储器容量的要求,降低了原有Flash存储器文件存储方式对硬件及软件资源占用,有效解决小程序存储容量的单片机存储大量数据的问题,各分类信息区采用静态链表的组织结构,提高了存储器的读写寿命。
本发明的一个实施例中,在单片机系统中使用512MB的Flash存储器,由根分类、一级子分类和数据组成整个数据存储,实现了500个根分类,每个根分类下有1000个子分类,每条数据记录1kB的存储容量。
应当指出的是,本发明所述的Flash存储器的数据存储方法并不仅限于应用单片机系统中,还可以应用在嵌入式系统中。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种Flash存储器的数据存储方法,其特征在于:包括根存储区、子存储区池和数据存储区,子存储区池包括1个以上的子存储区,其中根存储区用于存储数据的根分类信息,子存储区用于存储数据的子分类信息,数据存储区用于存储数据信息;所述根存储区包括根存储区占用链表、根存储区空闲链表和根分类记录区,其中根存储区占用链表为根存储区占用记录组成的静态链表,根存储区空闲链表为根存储区空闲记录组成的静态链表,根分类记录区用于存储根分类记录;所述子存储区包括子存储区占用链表、子存储区空闲链表和子分类记录区,其中子存储区占用链表为子存储区占用记录组成的静态链表,子存储区空闲链表为子存储区空闲记录组成的静态链表,子分类记录区用于存储子分类记录;所述数据存储区包括数据存储区空闲链表和数据记录区,数据存储区空闲链表为数据存储区空闲记录组成的静态链表,数据记录区用于存储数据记录;根分类记录区存储的根分类记录包括根存储区占用记录和根存储区空闲记录,根存储区占用记录包括四个字段,四个字段的内容分别为根分类信息标识、下一级类型标识、下一级位置和后一条占用记录的位置;根存储区空闲记录包括四个字段,前三个字段无效,最后一个字段的内容为后一条空闲记录的位置。
2.根据权利要求1所述的Flash存储器的数据存储方法,其特征在于:所述的根存储区占用链表包括根存储区占用链表头、根存储区占用链表长度。
3.根据权利要求1所述的Flash存储器的数据存储方法,其特征在于:所述的根存储区空闲链表包括根存储区空闲链表头、根存储区空闲链表长度。
4.根据权利要求1所述的Flash存储器的数据存储方法,其特征在于:所述的子存储区占用链表包括子存储区占用链表头、子存储区占用链表长度。
5.根据权利要求1所述的Flash存储器的数据存储方法,其特征在于:所述的子存储区空闲链表包括子存储区空闲链表头、子存储区空闲链表长度。
6.根据权利要求1所述的Flash存储器的数据存储方法,其特征在于:子分类记录区存储的子分类记录包括子存储区占用记录和子存储区空闲记录,子存储区占用记录包括四个字段,四个字段的内容分别为子分类信息、下一级类型标识、下一级位置和后一条占用记录的位置;子存储区空闲记录包括四个字段,前三个字段无效,最后一个字段的内容为后一条空闲记录的位置。
7.根据权利要求1所述的Flash存储器的数据存储方法,其特征在于:数据存储区空闲链表包括数据存储区空闲链表头、数据存储区空闲链表长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810171806.5A CN108376121B (zh) | 2018-03-01 | 2018-03-01 | 一种Flash存储器的数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810171806.5A CN108376121B (zh) | 2018-03-01 | 2018-03-01 | 一种Flash存储器的数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108376121A CN108376121A (zh) | 2018-08-07 |
CN108376121B true CN108376121B (zh) | 2021-10-22 |
Family
ID=63018334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810171806.5A Active CN108376121B (zh) | 2018-03-01 | 2018-03-01 | 一种Flash存储器的数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108376121B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007856B (zh) * | 2019-03-05 | 2020-08-04 | 四川九洲电器集团有限责任公司 | 数据存储方法、装置及闪存芯片 |
CN112241375B (zh) * | 2020-10-14 | 2024-02-13 | 哲库科技(北京)有限公司 | 一种存储器的分配方法、装置及终端设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212097B1 (en) * | 1999-03-25 | 2001-04-03 | Sony Corporation | Nonvolatile memory |
CN1405683A (zh) * | 2001-09-18 | 2003-03-26 | 华为技术有限公司 | Flash存储文件管理方法 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
CN102402394A (zh) * | 2010-09-13 | 2012-04-04 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
CN103081434A (zh) * | 2010-08-24 | 2013-05-01 | 华为技术有限公司 | 智能存储器 |
CN103577574A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件系统 |
CN105930280A (zh) * | 2016-05-27 | 2016-09-07 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009107506A1 (en) * | 2008-02-29 | 2009-09-03 | Kabushiki Kaisha Toshiba | Memory system |
CN102279805A (zh) * | 2011-09-06 | 2011-12-14 | 四川九洲电器集团有限责任公司 | 一种存储器数据存放及读取方法 |
CN106445416B (zh) * | 2016-09-22 | 2019-08-09 | 飞天诚信科技股份有限公司 | 一种数据记录的存储、查询和检索的方法及装置 |
-
2018
- 2018-03-01 CN CN201810171806.5A patent/CN108376121B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212097B1 (en) * | 1999-03-25 | 2001-04-03 | Sony Corporation | Nonvolatile memory |
CN1405683A (zh) * | 2001-09-18 | 2003-03-26 | 华为技术有限公司 | Flash存储文件管理方法 |
CN103081434A (zh) * | 2010-08-24 | 2013-05-01 | 华为技术有限公司 | 智能存储器 |
CN102402394A (zh) * | 2010-09-13 | 2012-04-04 | 腾讯科技(深圳)有限公司 | 一种基于哈希算法的数据存储方法及装置 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
CN103577574A (zh) * | 2013-11-05 | 2014-02-12 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于nand flash的高可靠线性文件系统 |
CN105930280A (zh) * | 2016-05-27 | 2016-09-07 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
Non-Patent Citations (5)
Title |
---|
I2C串行总线存储技术在单片机系统中的应用;董艳锋等;《山西电子技术》;20070831(第4期);第19-20+49页 * |
MSM结构ZnO/Cu薄膜的接触特性;董艳锋等;《发光学报》;20120430;第33卷(第4期);第412-416页 * |
基于SD卡的单片机软件自更新的实现方法;孙天佑;《计算机应用与软件》;20131031;第2.1节,表1 * |
基于Spark的并行频繁模式挖掘算法;曹博等;《计算机工程与应用》;20160831;第86-91页 * |
基于单片机和NANDFLASH芯片的嵌入式文件系统;邹锦坤等;《自动化与信息工程》;20070930;第38-40页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108376121A (zh) | 2018-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109496300B (zh) | 一种存储介质垃圾回收方法、存储介质和程序产品 | |
CN1307555C (zh) | 数据存储装置 | |
US8843691B2 (en) | Prioritized erasure of data blocks in a flash storage device | |
KR101324688B1 (ko) | 영구 가비지 컬렉션을 갖는 메모리 시스템 | |
JP4938460B2 (ja) | 不揮発性メモリおよびブロック管理システムを伴う方法 | |
US7991942B2 (en) | Memory block compaction method, circuit, and system in storage devices based on flash memories | |
KR101329068B1 (ko) | 블록 관리를 가지는 비휘발성 메모리 | |
CN101241472B (zh) | 映射管理方法及系统 | |
EP1771862B1 (en) | Method and device to improve usb flash write performance | |
US6742078B1 (en) | Management, data link structure and calculating method for flash memory | |
US20120166709A1 (en) | File system of flash memory | |
US20150186259A1 (en) | Method and apparatus for storing data in non-volatile memory | |
KR101356470B1 (ko) | 플래시 파일 시스템 | |
JP4682261B2 (ja) | 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法 | |
CN108733306A (zh) | 一种文件合并方法及装置 | |
CN108376121B (zh) | 一种Flash存储器的数据存储方法 | |
CN108664482B (zh) | Flash存储器及存储文件管理方法 | |
EP2264602A1 (en) | Memory device for managing the recovery of a non volatile memory | |
US20090024810A1 (en) | Memory area management method | |
KR20110070656A (ko) | 플래시 메모리의 데이터 처리 방법 및 장치 | |
Lee et al. | Efficient logging of metadata using NVRAM for NAND flash based file system | |
CN108415852B (zh) | 一种Flash存储器的数据存取方法 | |
CN108304331B (zh) | 基于NorFlash的环形队列式数据存储方法及装置 | |
KR101465426B1 (ko) | 익스텐트 매핑 플래시 디바이스 | |
CN111324284B (zh) | 一种存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |