CN116414310A - 一种数据存储方法 - Google Patents
一种数据存储方法 Download PDFInfo
- Publication number
- CN116414310A CN116414310A CN202310169243.7A CN202310169243A CN116414310A CN 116414310 A CN116414310 A CN 116414310A CN 202310169243 A CN202310169243 A CN 202310169243A CN 116414310 A CN116414310 A CN 116414310A
- Authority
- CN
- China
- Prior art keywords
- data
- storage block
- current
- storage
- target
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供数据存储方法,方法包括:步骤1、系统初始化,将EEPROM的每个存储块的状态单元的内容置0;步骤2、根据所述每个存储块的状态单元的内容确定当前存储块;步骤3、根据所述当前存储块确定目标存储块;步骤4、在所述目标存储块中写入目标存储数据。本发明实现了EEPROM使用寿命的大幅增长及提高了数据写入的准确性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据存储方法。
背景技术
随着智能设备越来越广泛的应用,嵌入式软硬件设备的使用场景也越来越多。在嵌入式领域中,经常有掉电后需要保存的信息,以备在下次启动时重新使用之前保存的信息,如汽车音响和汽车空调关机后需要记忆一些功能状态。EEPROM就是一种可以在掉电后存储信息的电子器件。
目前,一般的EEPROM擦写次数大约为100万次,成本较低的为10万次,然而,目前车载设备的EEPROM的数据存储地址是固定的,这就导致EEPROM某些地方经常被擦写,有些地方几乎没有擦写,久而久之导致采用低成本EEPROM的数据容易出现错误,而且由于车载环境比较复杂,电磁干扰较大甚至突然掉电,导致EEPROM的I2C总线异常,进而导致EEPROM在写入数据时发生错误。
因此,亟需对目前EEPROM的数据写入方法进行改进,以提高EEPROM的使用寿命及数据写入时的准确性。
发明内容
本发明提供一种数据存储方法,旨在解决现有技术中的缺陷,实现EEPROM使用寿命的大幅增长及提高数据写入的准确性。
为达到上述目的,本发明所采取的技术方案为:
一种数据存储方法,包括:
步骤1、系统初始化,将EEPROM的每个存储块的状态单元的内容置0;
步骤2、根据所述每个存储块的状态单元的内容确定当前存储块;
步骤3、根据所述当前存储块确定目标存储块;
步骤4、在所述目标存储块中写入目标存储数据。
具体地,所述步骤2包括:
步骤201、读取当前状态单元的内容,并与相邻状态单元的内容进行比较,若两者不一致,则将所述当前状态单元对应的存储块判定为当前存储块,否则进入下一步;
步骤202、判断所述当前状态单元是否为最后一个状态单元,是则将最后一个存储块判定为当前存储块,否则返回上一步。
具体地,所述步骤3包括:判断所述当前存储块的剩余空间是否大于目标存储数据的长度,是则将断所述当前存储块确定为目标存储块,否则将所述当前存储块的相邻存储块确定为目标存储块。
具体地,所述步骤4包括:
步骤401、若所述目标存储块为所述当前存储块,则在所述当前存储块内定位到数据保存地址后写入所述目标存储数据,并擦除所述当前存储块中的历史数据;
步骤402、若所述目标存储块为所述当前存储块的相邻存储块,则从所述目标存储块的数据单元的起始地址开始写入所述目标存储数据,并将所述当前存储块、目标存储块的状态单元的内容按照预设规则进行改写。
具体地,所述预设规则为取反操作。
具体地,所述在所述当前存储块内定位到数据保存地址后写入所述目标存储数据包括:
步骤4011、定义并初始化搜索地址变量、查找次数变量;
步骤4012、判断当前搜索地址处的内容与数据存储起始标识是否相同,是则进入步骤4015,否则进入下一步;
步骤4013、将所述搜索地址变量、查找次数变量均按照预设步长递增,并判断所述搜索地址变量是否等于当前页的最大地址,是则将所述搜索地址变量指向下一页;
步骤4014、判断所述查找次数变量是否等于所述当前存储块的最大地址,是则返回查找失败的信息,否则返回步骤4012。
步骤4015、将目标存储数据从缓冲区读入,并将所述查找次数变量加递增所述目标存储数据的长度;
步骤4016、读取目标地址处的内容,并判断其与数据存储结束标识是否相同,是则将所述目标地址处保存到所述搜索地址变量,并进入步骤4017,否则返回步骤4013,所述目标地址为所述当前搜索地址加上所述目标存储数据的长度后的下一个地址;
步骤4017、从所述目标地址的下一个地址处开始写入所述目标存储数据。
具体地,所述预设步长为1。
具体地,所述写入所述目标存储数据包括:通过I2C总线写入所述目标存储数据。
具体地,所述通过I2C总线写入所述目标存储数据包括:
步骤A1、在写入所述目标存储数据期间,监测所述I2C总线是否异常,是则进入下一步,否则循环执行本步骤;
步骤A2、I2C主设备将SDA、SCL端口配置为I/O模式;
步骤A3、所述I2C主设备向EEPROM发送I2C协议的起始信号;
步骤A4、所述I2C主设备向EEPROM发送预设数量的I2C时钟信号;
步骤A5、所述I2C主设备向EEPROM发送I2C协议的起始信号和停止信号;
步骤A6、所述I2C主设备将SDA、SCL端口重新配置为I2C模式。
具体地,所述预设数量为1+8k(k≥1)。
本发明的有益效果在于:本发明通过将EEPROM分为若干个存储块,并将每个存储块分为用于保存存储块的状态参数的状态单元和用于保存数据内容的数据单元,再根据每个存储块的状态单元的内容确定当前存储块,根据当前存储块确定目标存储块,然后在目标存储块中写入目标存储数据,实现了EEPROM使用寿命的大幅增长及提高了数据写入的准确性。
附图说明
图1是本发明的数据存储方法的流程示意图;
图2是本发明的数据打包格式示意图。
具体实施方式
下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。
在本发明的说明书、权利要求书或附图中描述的流程中,包含各个步骤的序号(如步骤10、20等),所述序号仅用于区分开各个步骤,所述序号本身不代表任何的执行顺序。需要说明的是,本文中的“第一”、“第二”等描述,仅用于区分描述对象等,不代表先后顺序,也不表示“第一”、“第二”等是不同的类型。
如图1所示,本实施例提供一种数据存储方法,包括:
步骤1、系统初始化,将EEPROM的每个存储块的状态单元的内容置0。
在具体实施时,将EEPROM分为若干个存储块,并将每个存储块分为状态单元和数据单元,所述状态单元从所述每个存储块的起始地址开始,用于保存存储块的状态参数,所述数据单元用于保存数据内容。
例如,若EEPROM的容量为512K字节,地址范围为00000H~7FFFFH,每页128字节,则共有4096页,将其分为16个存储块,则每个存储块为256页,每个存储块为32KB,其中第0页保存相应存储块的状态参数,第1-255页用于保存数据内容。
所述系统初始化为EEPROM首次上电运行、未写入数据的状态。
步骤2、根据所述每个存储块的状态单元的内容确定当前存储块。
在本实施例中,所述步骤2包括:
步骤201、读取当前状态单元M(M=0,1,2…n-1,n表示存储块的数量)的内容,并与相邻状态单元M+1的内容进行比较,若两者不一致,则将所述当前状态单元M对应的存储块判定为当前存储块,否则进入下一步;
步骤202、判断所述当前状态单元M是否为最后一个状态单元,是则将最后一个存储块判定为当前存储块,否则返回上一步。
在本实施例中,所述当前存储块为已保存有历史数据的存储块。
在具体实施时,可采取顺序读取的方式从第1个状态单元(即M=0)开始读取,将其内容与第2个状态单元(即M=1)的内容进行比较,如果两者一致,则将第2个状态单元(即M=1)的内容与第3个状态单元(即M=2)的内容进行比较,如果两者一致,则以此类推。
如果所有存储块的状态单元的内容都相同,则说明EEPROM中没有存储数据,则可将此时的当前存储块设为最后一个存储块,而最后一个存储块的相邻存储块则为首个存储块。
步骤3、根据所述当前存储块确定目标存储块。
在本实施例中,所述步骤3包括:判断所述当前存储块的剩余空间是否大于目标存储数据的长度,是则将断所述当前存储块确定为目标存储块,否则将所述当前存储块的相邻存储块M+1确定为目标存储块。
在本实施例中,所述目标存储块为即将写入新的数据内容的存储块。
步骤4、在所述目标存储块中写入目标存储数据。
在本实施例中,所述步骤4包括:
步骤401、若所述目标存储块为所述当前存储块,则在所述当前存储块内定位到数据保存地址后写入所述目标存储数据,并擦除所述当前存储块中的历史数据;
步骤402、若所述目标存储块为所述当前存储块的相邻存储块,则从所述目标存储块的数据单元的起始地址开始写入所述目标存储数据,并将所述当前存储块、目标存储块的状态单元的内容按照预设规则进行改写。
在本实施例中,步骤402中的所述预设规则为取反操作。
在本实施例中,目标存储数据均按照图2所示的格式进行打包,其中,S1为数据存储起始标识,S2为数据存储结束标识,用于标识数据内容(即D(1)、D(2)…D(N))存放地址的起始与结束。S1、S2采用与所保存的数据都不同的数值。
在本实施例中,步骤401中所述在所述当前存储块内定位到数据保存地址后写入所述目标存储数据包括:
步骤4011、定义并初始化搜索地址变量p、查找次数变量q;
步骤4012、判断当前搜索地址处的内容与数据存储起始标识S1是否相同,是则进入步骤4015,否则进入下一步;
步骤4013、将所述搜索地址变量p、查找次数变量q均按照预设步长递增,并判断所述搜索地址变量q是否等于当前页的最大地址,是则将所述搜索地址变量p指向下一页;
在本实施例中,所述预设步长为1。
步骤4014、判断所述查找次数变量q是否等于所述当前存储块的最大地址,是则返回查找失败的信息,否则返回步骤4012。
步骤4015、将目标存储数据从缓冲区读入,并将所述查找次数变量q加递增所述目标存储数据的长度N;
步骤4016、读取目标地址处的内容,并判断其与数据存储结束标识S2是否相同,是则将所述目标地址处保存到所述搜索地址变量p,并进入步骤4017,否则返回步骤4013,所述目标地址为所述当前搜索地址加上所述目标存储数据的长度后的下一个地址;
例如,若当前搜索地址为a,目标存储数据的长度为N,则所述目标地址为a+N+1。
步骤4017、从所述目标地址的下一个地址处开始写入所述目标存储数据。
在本实施例中,所述写入所述目标存储数据包括:通过I2C总线写入所述目标存储数据。
在本实施例中,所述通过I2C总线写入所述目标存储数据包括:
步骤A1、在写入所述目标存储数据期间,监测所述I2C总线是否异常,是则进入下一步,否则循环执行本步骤;
步骤A2、I2C主设备将SDA、SCL端口配置为I/O模式;
在本实施例中,所述I2C主设备通常是与EEPROM连接的处理器(例如MCU)。
步骤A3、所述I2C主设备向EEPROM发送I2C协议的起始信号;
步骤A4、所述I2C主设备向EEPROM发送预设数量的I2C时钟信号;
在本实施例中,所述预设数量为1+8k(k≥1)。
步骤A5、所述I2C主设备向EEPROM发送I2C协议的起始信号和停止信号;
步骤A6、所述I2C主设备将SDA、SCL端口重新配置为I2C模式。
通过上述步骤能够在I2C总线写入异常时进行纠错,防止EEPROM误写入。
以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
步骤1、系统初始化,将EEPROM的每个存储块的状态单元的内容置0;
步骤2、根据所述每个存储块的状态单元的内容确定当前存储块;
步骤3、根据所述当前存储块确定目标存储块;
步骤4、在所述目标存储块中写入目标存储数据。
2.根据权利要求1所述的数据存储方法,其特征在于,所述步骤2包括:
步骤201、读取当前状态单元的内容,并与相邻状态单元的内容进行比较,若两者不一致,则将所述当前状态单元对应的存储块判定为当前存储块,否则进入下一步;
步骤202、判断所述当前状态单元是否为最后一个状态单元,是则将最后一个存储块判定为当前存储块,否则返回上一步。
3.根据权利要求2所述的数据存储方法,其特征在于,所述步骤3包括:判断所述当前存储块的剩余空间是否大于目标存储数据的长度,是则将断所述当前存储块确定为目标存储块,否则将所述当前存储块的相邻存储块确定为目标存储块。
4.根据权利要求3所述的数据存储方法,其特征在于,所述步骤4包括:
步骤401、若所述目标存储块为所述当前存储块,则在所述当前存储块内定位到数据保存地址后写入所述目标存储数据,并擦除所述当前存储块中的历史数据;
步骤402、若所述目标存储块为所述当前存储块的相邻存储块,则从所述目标存储块的数据单元的起始地址开始写入所述目标存储数据,并将所述当前存储块、目标存储块的状态单元的内容按照预设规则进行改写。
5.根据权利要求4所述的数据存储方法,其特征在于,所述预设规则为取反操作。
6.根据权利要求4所述的数据存储方法,其特征在于,所述在所述当前存储块内定位到数据保存地址后写入所述目标存储数据包括:
步骤4011、定义并初始化搜索地址变量、查找次数变量;
步骤4012、判断当前搜索地址处的内容与数据存储起始标识是否相同,是则进入步骤4015,否则进入下一步;
步骤4013、将所述搜索地址变量、查找次数变量均按照预设步长递增,并判断所述搜索地址变量是否等于当前页的最大地址,是则将所述搜索地址变量指向下一页;
步骤4014、判断所述查找次数变量是否等于所述当前存储块的最大地址,是则返回查找失败的信息,否则返回步骤4012。
步骤4015、将目标存储数据从缓冲区读入,并将所述查找次数变量加递增所述目标存储数据的长度;
步骤4016、读取目标地址处的内容,并判断其与数据存储结束标识是否相同,是则将所述目标地址处保存到所述搜索地址变量,并进入步骤4017,否则返回步骤4013,所述目标地址为所述当前搜索地址加上所述目标存储数据的长度后的下一个地址;
步骤4017、从所述目标地址的下一个地址处开始写入所述目标存储数据。
7.根据权利要求6所述的数据存储方法,其特征在于,所述预设步长为1。
8.根据权利要求4或6所述的数据存储方法,其特征在于,所述写入所述目标存储数据包括:通过I2C总线写入所述目标存储数据。
9.根据权利要求8所述的数据存储方法,其特征在于,所述通过I2C总线写入所述目标存储数据包括:
步骤A1、在写入所述目标存储数据期间,监测所述I2C总线是否异常,是则进入下一步,否则循环执行本步骤;
步骤A2、I2C主设备将SDA、SCL端口配置为I/O模式;
步骤A3、所述I2C主设备向EEPROM发送I2C协议的起始信号;
步骤A4、所述I2C主设备向EEPROM发送预设数量的I2C时钟信号;
步骤A5、所述I2C主设备向EEPROM发送I2C协议的起始信号和停止信号;
步骤A6、所述I2C主设备将SDA、SCL端口重新配置为I2C模式。
10.根据权利要求9所述的数据存储方法,其特征在于,所述预设数量为1+8k(k≥1)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310169243.7A CN116414310A (zh) | 2023-02-23 | 2023-02-23 | 一种数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310169243.7A CN116414310A (zh) | 2023-02-23 | 2023-02-23 | 一种数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414310A true CN116414310A (zh) | 2023-07-11 |
Family
ID=87050522
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310169243.7A Pending CN116414310A (zh) | 2023-02-23 | 2023-02-23 | 一种数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414310A (zh) |
-
2023
- 2023-02-23 CN CN202310169243.7A patent/CN116414310A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6041001A (en) | Method of increasing data reliability of a flash memory device without compromising compatibility | |
EP2156300B1 (en) | Memory page size auto detection | |
EP2003569A9 (en) | Flash memory controller | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
US7450436B2 (en) | Device recoverable purge for flash storage device | |
US8392794B2 (en) | Non-volatile memory device and data processing method thereof | |
US8990549B2 (en) | Method and system for booting electronic device from NAND flash memory | |
CN107193560B (zh) | 配置更新方法及装置 | |
JPH09330273A (ja) | メモリカードおよびメモリカードにおける誤り訂正方法 | |
CN115292266B (zh) | 一种基于存储器的高可靠日志存储方法 | |
CN113568579B (zh) | 一种存储器、数据存储方法以及数据读取方法 | |
US20070079015A1 (en) | Methods and arrangements to interface a data storage device | |
US8301981B2 (en) | Data access method for flash memory and storage system and controller thereof | |
CN103984506A (zh) | 闪存存储设备数据写的方法和系统 | |
CN113885808B (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
CN116414310A (zh) | 一种数据存储方法 | |
CN115562655A (zh) | 基于bms的对象字典访问方法、系统、电子设备、存储介质 | |
US20210326202A1 (en) | Non-volatile memory | |
CN101261574A (zh) | 声音数据处理装置 | |
US7743277B2 (en) | System and method for detecting and reducing data corruption in a storage device | |
CN113835756A (zh) | 主机命令解析方法和装置、固态硬盘控制器、固态硬盘 | |
CN110209433B (zh) | 一种识别不同型号集中器的方法 | |
CN114038493A (zh) | 用于防止校验位频繁擦写导致eeprom损坏的方法、装置、存储器及其存储介质 | |
CN108932178B (zh) | 检测使用中逻辑页面的数据储存装置与数据储存方法 | |
US8312205B2 (en) | Method for identifying a page of a block of flash memory, and associated memory device |
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 |