CN109947364A - 一种用于flash/eeprom中的实时数据存储方法 - Google Patents
一种用于flash/eeprom中的实时数据存储方法 Download PDFInfo
- Publication number
- CN109947364A CN109947364A CN201910105432.1A CN201910105432A CN109947364A CN 109947364 A CN109947364 A CN 109947364A CN 201910105432 A CN201910105432 A CN 201910105432A CN 109947364 A CN109947364 A CN 109947364A
- Authority
- CN
- China
- Prior art keywords
- sector
- data
- flash
- eeprom
- time data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000001514 detection method Methods 0.000 claims description 7
- 238000013500 data storage Methods 0.000 claims description 3
- 241001269238 Data Species 0.000 description 4
- 230000007812 deficiency Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种用于FLASH/EEPROM中的实时数据存储方法,该方法包括如下步骤:(1)检测需保存的数据字节数n;(2)检测FLASH/EEPROM的扇区大小m;(3)将每个扇区分成k段,标记为Bi(i=1,2,...,k),每段字节数为li(i=1,2,...,k),满足li(i=1,2,...,k‑1)≥n;(4)擦除扇区,保存数据并依次写入Bi(i=1,2,...,k‑1)中;(5)进入下一个扇区,返回步骤(4)。本发明通过对扇区进行分段处理,使一个扇区内能够存储多个数据,充分利用扇区容量,有效减少扇区擦除次数,延长存储介质的使用寿命。
Description
技术领域
本发明涉及单片机数据存储领域,尤其涉及一种用于FLASH/EEPROM中的实时数据存储方法。
背景技术
现有技术的单片机应用中,需要在运行时保存一些重要实时数据到单片机内部Flash或EEPROM中,做为掉电后可恢复的数据备份,这些实时数据随时间变化而变化,但具有相同的字节长度,而且写入频率很高(通常为几十毫秒~几秒)、长度很短(通常为几个~几十个字节)。
现有技术的FLASH/EEPROM实时数据存储方法中以扇区为最小的写入单元,每一次存储数据时都需要至少占用一个扇区,对于扇区容量的利用不充分,而且每存储一次数据都需要擦除一次扇区,扇区的使用寿命短。具体的写入步骤为:1、擦除扇区; 2、写入数据;3、读取数据,与原数据比较判断是否成功写入。如果写入与读出的数据不一致,可以判断为扇区失效,需要变更为其它扇区。当所有的扇区都失效后,***就会部分功能失效。同时在低成本的单片机应用中,FLASH或EEPROM的可擦除次数很有限,一般仅在1万次~10万次之间;可用的扇区数量也很少,这会大大降低***的寿命和可靠性。
发明内容
本发明的目的在于克服现有技术的缺陷,提供一种能够充分利用扇区容量,减少扇区擦写次数的FLASH/EEPROM中的实时数据存储方法。
为实现本发明的目的,本发明采用以下技术方案:
一种用于FLASH/EEPROM中的实时数据存储方法,包括如下步骤:
(1)检测需保存的数据字节数n;
(2)检测FLASH/EEPROM的扇区大小m;
(3)将每个扇区分成k段,标记为Bi(i=1,2,...,k),每段字节数为li(i=1,2,...,k),满足li(i=1,2,...,k-1)≥n;
(4)擦除扇区,保存数据并依次写入Bi(i=1,2,...,k-1)中;
(5)进入下一个扇区,返回步骤(4)。
作为一种优选,步骤(3)中除第k段外的其余段字节数均相同且大于n,即li(i=1,2,...,k-1)=a,a>n。
作为另一种优选,步骤(3)中除第k段外的其余段字节数均等于需保存数据字节数n,即li(i=1,2,...,k-1)=n。
进一步的,步骤(4)中包括扇区检测,若扇区正常则进行数据存储,扇区错误则进入下一步骤。
进一步的,扇区检测包括:在B1中写入数据,读取B1中的数据至缓存,校验数据正确性。
作为一种优选,步骤(3)中第k段的字节数小于需保存数据的字节数n。
本发明以需存储数据的长度为一个单位对扇区进行分段,使一个扇区内可以保存多个数据,充分利用扇区的容量;同时,只在存储首段数据时对扇区进行擦除操作,直到扇区存满过程中均不进行擦除操作,大大降低扇区的擦除次数,延长其使用寿命。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性前提下,还可以根据这些附图获得其他附图。
图1是本发明实施例的数据存储流程图;
图2是本发明实施例的步骤(4)流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一种实施例,而不是全部的实施例。下面结合附图和实施例对本发明作进一步的说明,但不作为本发明的限定。
如图1所示,本实施例涉及一种用于FLASH/EEPROM中的实时数据存储方法,包括如下步骤:
步骤一,检测需保存的数据字节数n;在很多单片机的应用中,需要在运行时保存一些重要数据到单片机内部Flash或EEPROM中,做为掉电后可恢复的数据备份(如车辆的行驶里程、运行环境的温湿度等实时数据),这些数据的写入频率高、长度短、且字节长度统一(需要指出的是,当此存储方法用于已知字节数的数据存储时可将字节数直接写入程序中,但为了方便说明并使方法具有通用性,此步骤不可省略)。
步骤二,检测FLASH/EEPROM的扇区大小m;每一种FLASH/EEPROM都具有固定的扇区大小,存储介质型号选定后其每一个扇区大小就固定了,因此,读取其扇区大小只需要读取芯片型号即可得到,需要指出的是扇区大小需大于需保存数据长度的2倍以上,即m≥2n时此方法才适用,因此并不将此判定条件作为此方法的内部判定条件,而是在运用此方法前人为判断是否适用。
步骤三,将每个扇区分成k段,标记为Bi(i=1,2,...,k),每段字节数为li(i=1,2,...,k),满足li(i=1,2,...,k-1)≥n;在本实施例中,选择一种最优选的分段方式,以需保存数据的字节数n作为分段长度,将扇区分成k段,前k-1段的长度均相同且等于n,第k段的长度小于n,即li(i=1,2,...,k-1)=n,lk<n,使扇区容量得到最大化利用(在扇区分段时只要保证每一段字节数都大于需保存数据字节数即可,其余分段方式只是本实施分段方式的一种延伸,因此在本实施例中不在赘述)。
步骤四,擦除扇区,保存数据并依次写入Bi(i=1,2,...,k-1)中;在存储第一个数据前擦除扇区,然后再依次读取数据保存到扇区的每个分段内,直到除最后剩余段第k段外其他段均保存有数据。此步骤还包括扇区检测,扇区检测的具体方法是:在B1中写入数据,读取B1中的数据至缓存,校验数据正确性。若扇区正常则进行数据存储,扇区错误(说明该扇区损坏,将该扇区标记下一次存储时跳过此扇区)则进入下一步骤,扇区检测的方式还有很多种,本实施例中不一一赘述。
步骤五,进入下一个扇区,返回步骤四。当一个扇区存储满后进入下一个扇区再完成相同的存储操作,当最后一个扇区存储满后,返回第一个扇区完成步骤四的存储操作,如此循环,直到所有扇区损坏,程序停止。
以上结合具体实施方式描述了本发明的技术方案,但需要说明的是,上述的这些描述只是为了解释本发明的方案,而不能以任何方式解释为对发明保护范围的具体限制。基于此处的解释,本领域的技术人员在不付出创造性劳动即可联想到本发明的其他具体实施方式或等同替换,都将落入本发明的保护范围。
Claims (6)
1.一种用于FLASH/EEPROM中的实时数据存储方法,其特征在于,该方法包括如下步骤:
(1)检测需保存的数据字节数n;
(2)检测FLASH/EEPROM的扇区大小m;
(3)将每个扇区分成k段,标记为Bi(i=1,2,...,k),每段字节数为li(i=1,2,...,k),满足li(i=1,2,...,k-1)≥n;
(4)擦除扇区,保存数据并依次写入Bi(i=1,2,...,k-1)中;
(5)进入下一个扇区,返回步骤(4)。
2.根据权利要求1所述的一种用于FLASH/EEPROM中的实时数据存储方法,其特征在于:步骤(3)中除第k段外的其余段字节数均相同且大于n,即li(i=1,2,...,k-1)=a,a>n。
3.根据权利要求1所述的一种用于FLASH/EEPROM中的实时数据存储方法,其特征在于:步骤(3)中除第k段外的其余段字节数均等于需保存数据字节数n,即li(i=1,2,...,k-1)=n。
4.根据权利要求1-3中任一项所述的一种用于FLASH/EEPROM中的实时数据存储方法,其特征在于:步骤(4)中包括扇区检测,若扇区正常则进行数据存储,扇区错误则进入下一步骤。
5.根据权利要求4所述的一种用于FLASH/EEPROM中的实时数据存储方法,其特征在于,扇区检测包括:在B1中写入数据,读取B1中的数据至缓存,校验数据正确性。
6.根据权利要求1-3中任一项所述的一种用于FLASH/EEPROM中的实时数据存储方法,其特征在于:步骤(3)中第k段的字节数小于需保存数据的字节数n。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910105432.1A CN109947364A (zh) | 2019-02-01 | 2019-02-01 | 一种用于flash/eeprom中的实时数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910105432.1A CN109947364A (zh) | 2019-02-01 | 2019-02-01 | 一种用于flash/eeprom中的实时数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109947364A true CN109947364A (zh) | 2019-06-28 |
Family
ID=67007521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910105432.1A Pending CN109947364A (zh) | 2019-02-01 | 2019-02-01 | 一种用于flash/eeprom中的实时数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947364A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110782389A (zh) * | 2019-09-23 | 2020-02-11 | 五八有限公司 | 一种图像数据字节对齐方法和终端 |
CN112817527A (zh) * | 2021-01-21 | 2021-05-18 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
CN113721847A (zh) * | 2021-08-18 | 2021-11-30 | 深圳市京泉华智能电气有限公司 | 一种基于扇区的数据写入方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551780A (zh) * | 2008-12-29 | 2009-10-07 | 深圳创维-Rgb电子有限公司 | 一种电视机及其数据存储方法、装置 |
CN101937721A (zh) * | 2010-08-04 | 2011-01-05 | 武汉天喻信息产业股份有限公司 | 一种测试存储器件的方法 |
CN102063379A (zh) * | 2010-12-28 | 2011-05-18 | 天津市亚安科技电子有限公司 | 一种flash存储器的数据存储方法 |
CN102279806A (zh) * | 2011-05-18 | 2011-12-14 | 深圳创维-Rgb电子有限公司 | 数字电视设备及spi存储器的存储方法 |
CN103823642A (zh) * | 2014-03-17 | 2014-05-28 | 深圳市道通科技有限公司 | 用于Flash均衡存储的方法及*** |
-
2019
- 2019-02-01 CN CN201910105432.1A patent/CN109947364A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551780A (zh) * | 2008-12-29 | 2009-10-07 | 深圳创维-Rgb电子有限公司 | 一种电视机及其数据存储方法、装置 |
CN101937721A (zh) * | 2010-08-04 | 2011-01-05 | 武汉天喻信息产业股份有限公司 | 一种测试存储器件的方法 |
CN102063379A (zh) * | 2010-12-28 | 2011-05-18 | 天津市亚安科技电子有限公司 | 一种flash存储器的数据存储方法 |
CN102279806A (zh) * | 2011-05-18 | 2011-12-14 | 深圳创维-Rgb电子有限公司 | 数字电视设备及spi存储器的存储方法 |
CN103823642A (zh) * | 2014-03-17 | 2014-05-28 | 深圳市道通科技有限公司 | 用于Flash均衡存储的方法及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110782389A (zh) * | 2019-09-23 | 2020-02-11 | 五八有限公司 | 一种图像数据字节对齐方法和终端 |
CN110782389B (zh) * | 2019-09-23 | 2023-09-15 | 五八有限公司 | 一种图像数据字节对齐方法和终端 |
CN112817527A (zh) * | 2021-01-21 | 2021-05-18 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
CN112817527B (zh) * | 2021-01-21 | 2024-06-04 | 深圳市显控科技股份有限公司 | 掉电数据存储方法、单片机及计算机可读存储介质 |
CN113721847A (zh) * | 2021-08-18 | 2021-11-30 | 深圳市京泉华智能电气有限公司 | 一种基于扇区的数据写入方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101446921B (zh) | 一种Flash存储器的动态存储方法 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN107943414B (zh) | 嵌入式Linux的文件***分区及数据读写方法 | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及*** | |
CN109947364A (zh) | 一种用于flash/eeprom中的实时数据存储方法 | |
CN103106143B (zh) | 固态储存装置及其逻辑至实体对应表建立方法 | |
CN108646982A (zh) | 一种基于ubifs的数据自动修复方法及装置 | |
CN1645516B (zh) | 用于闪速存储器的数据恢复设备和方法 | |
CN115292266B (zh) | 一种基于存储器的高可靠日志存储方法 | |
US20090037646A1 (en) | Method of using a flash memory for a circular buffer | |
CN103914667B (zh) | 一种安全读写eeprom的方法及其*** | |
WO2017161795A1 (zh) | 处理流水文件的方法及*** | |
CN106910528A (zh) | 一种固态硬盘数据巡检的优化方法及装置 | |
US6772286B2 (en) | Method for regenerating data in disk array | |
CN103823642A (zh) | 用于Flash均衡存储的方法及*** | |
CN104978148A (zh) | 数据写入方法及装置、数据读取方法及装置 | |
CN101546294A (zh) | 一种Flash存储器的数据存储方法 | |
CN109669889B (zh) | 一种轻量型Nor Flash闪存控制方法和装置 | |
CN102981969A (zh) | 重复数据删除的方法及其固态硬盘 | |
CN104898989B (zh) | 一种大容量数据存储设备、方法及装置 | |
CN109445987A (zh) | 一种基于block生长记录的SSD异常掉电恢复方法及其*** | |
CN102226893B (zh) | 一种嵌入式***中fat文件***修复方法 | |
TWI516934B (zh) | 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN109634919A (zh) | 一种文件管理*** | |
CN103165194A (zh) | 快速检测大容量NOR Flash的方法及装置 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190628 |
|
WD01 | Invention patent application deemed withdrawn after publication |