CN117075801A - 数据存储管理方法、装置及设备 - Google Patents
数据存储管理方法、装置及设备 Download PDFInfo
- Publication number
- CN117075801A CN117075801A CN202310977504.8A CN202310977504A CN117075801A CN 117075801 A CN117075801 A CN 117075801A CN 202310977504 A CN202310977504 A CN 202310977504A CN 117075801 A CN117075801 A CN 117075801A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- fee
- sector
- block
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 380
- 238000013500 data storage Methods 0.000 title claims abstract description 47
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000004590 computer program Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 62
- 238000012216 screening Methods 0.000 claims description 11
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 20
- 230000008859 change Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100517651 Caenorhabditis elegans num-1 gene Proteins 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据存储管理方法、装置、计算机设备、存储介质和计算机程序产品。该方法应用于管理Flash存储区域的Fee模块,包括:在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录当前Fee逻辑扇区中各个数据块中最新数据的存储地址;重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。采用该方法能够无需遍历即可得到已写满的Fee逻辑扇区中的最新数据,耗费时间短,效率高。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种数据存储管理方法、装置、设备、存储介质和计算机程序产品。
背景技术
随着汽车电子技术的飞速发展,汽车中电子器件的占比越来越大,ECU(Electronic Control Unit,电子控制单元)中需要存储越来越多的数据。其中一些数据需要在ECU断电后仍能保存,以备下次ECU上电初始化阶段使用,这种数据被称为Nv(non-volatile,非易失性)数据,比如:车辆的VIN码(Vehicle Identification Number,车辆识别码)、防盗钥匙、车辆下线配置字、DTC(Diagnostic Trouble Code,诊断故障代码)等等。
在汽车ECU电子架构中,一般使用Fee(Flash EEPROM Emulation,Flash模拟EEPROM)模块对Nv数据进行管理。目前的数据存储管理方法,在ECU上电初始化阶段或者Fee逻辑扇区要被擦除之前,需要遍历查询所有已写入Fee逻辑扇区的各个数据块的最新数据,耗时长,效率低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在ECU上电初始化阶段或者Fee逻辑扇区要被擦除之前,快速得到各个数据块的最新数据的数据存储管理方法、装置、设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据存储管理方法,应用于管理Flash存储区域的Fee模块,该方法包括:
在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录所述新数据在当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
在其中一个实施例中,Fee数据块管理区存储模数值、数据块数量和数据块管理信息区;数据块管理信息区包括多个数据块的数据块管理信息;数据块管理信息包括块标识、块写入地址、块写入次数和扇区标识。
在其中一个实施例中,在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在所述当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息包括:
在RAM中创建RAM数据块管理区;RAM数据块管理区中每个数据块管理信息中包括块标识;
在待存储的新数据成功写入的当前Fee逻辑扇区的当前数据块的当前块标识与RAM数据块管理区中的目标块标识相同的情况下,将与目标块标识对应的块写入地址更新为当前数据块的块写入地址,将目标块标识对应的扇区标识更新为当前数据块对应的扇区标识,更新与目标块标识对应的块写入次数;目标块标识为RAM数据块管理区中已经写入的块标识中的任意一个;
在当前块标识不存在于RAM数据块管理区中的情况下,则将当前块标识、当前数据块的块写入地址、当前数据块的块写入次数以及当前数据块所在的扇区标识写入所述RAM数据块管理区,生成与当前块标识对应的目标数据块管理信息。
在其中一个实施例中,数据存储管理方法还包括:
获取待擦除扇区标识;待擦除扇区标识用于指示待擦除的Fee逻辑扇区;
根据待擦除扇区标识,从RAM数据块管理区中读取与待擦除扇区标识对应的数据块管理信息;
根据RAM数据块管理区中的数据块管理信息获取待擦除的Fee逻辑扇区中的待迁移数据块;待迁移数据块为数据块管理信息中的块写入地址对应的数据块;
将待迁移数据块写入下一个待写入的Fee逻辑扇区;
根据待迁移数据块更新RAM数据块管理区中与待迁移数据块对应的数据块管理信息中的扇区标识和块写入地址。
在其中一个实施例中,在所述在待存储的新数据成功写入所述Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录所述新数据在所述当前Fee逻辑扇区中所述当前数据块的存储地址至数据块管理信息之前,该方法还包括:
读取每个Fee逻辑扇区的所述Fee数据块管理区,根据Fee数据块管理区信息筛选出每个数据块的最新数据。
在其中一个实施例中,读取每个Fee逻辑扇区的Fee数据块管理区,根据Fee数据块管理区信息筛选出每个数据块的最新数据还包括:
在上电初始化阶段,当目标Fee逻辑扇区中已经写入数据块时,读取目标Fee逻辑扇区中的Fee数据块管理区的管理区数据;目标Fee逻辑扇区为任意一个Fee逻辑扇区;
当管理区数据存在非无效值时,从管理区数据中获取数据块管理信息;
当从已经写入数据块的Fee逻辑扇区的Fee数据块管理区均能获取的数据块管理信息时,根据数据块管理信息,确定上电初始化阶段的最新数据。
在其中一个实施例中,读取每个Fee逻辑扇区的Fee数据块管理区,根据Fee数据块管理区信息筛选出每个数据块的最新数据还包括:
当管理区数据全为无效值时,遍历目标Fee逻辑扇区,得到各个数据块的块头部信息;
根据块头部信息,确定上电初始化阶段的最新数据。
在其中一个实施例中,读取每个Fee逻辑扇区的Fee数据块管理区,根据Fee数据块管理区信息筛选出每个数据块的最新数据还包括:
当从已经写入数据块的Fee逻辑扇区获取的数据包括数据块管理信息和块头部信息时,根据数据块管理信息和块头部信息,确定上电初始化阶段的最新数据。
第二方面,本申请还提供了一种数据存储管理装置,应用于管理Flash存储区域的Fee模块,该装置包括:
数据块管理信息写入模块,用于在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在所述当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
同步触发模块,用于重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
第三方面,本申请还提供了一种数据存储管理设备。所述数据存储管理设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在所述当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
第四方面,本申请还提供了一种计算机可读存储介质。该计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在所述当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录所述当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
第五方面,本申请还提供了一种计算机程序产品。计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在所述当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录所述当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
上述数据存储管理方法、装置、设备、存储介质和计算机程序产品,应用于管理Flash存储区域的Fee模块的数据存储管理方法,通过记录最新数据的存储地址至数据块管理信息,并在目标Fee逻辑扇区存满时,触发将数据块管理信息写入至目标Fee逻辑扇区的Fee数据块管理区,可以在目标Fee逻辑扇区需要擦除时,可以直接根据目标Fee逻辑扇区的数据块管理区记录的目标Fee逻辑扇区中各个数据块中最新数据的存储地址,获取目标Fee逻辑扇区中各个数据块内最新数据,存储至Flash存储区域中任一空白的逻辑扇区。上述方法通过对数据块进行有效管理,无需遍历即可得到已写满的Fee逻辑扇区中的最新数据,达到缩短查询并筛选出前期写入的Fee Block最新数据的时间的目的,有利于提高ECU的实时性。
附图说明
图1为Autosar的架构中用于管理EEPROM和Flash的结构示意图;
图2(a)为传统的Fee逻辑扇区的存储过程中初始状态的示意图;
图2(b)为传统的Fee逻辑扇区的存储过程中Fee逻辑扇区0存储数据的示意图;
图2(c)为传统的Fee逻辑扇区的存储过程中Fee逻辑扇区0和Fee逻辑扇区1存储数据存满时的示意图;
图2(d)为传统的Fee逻辑扇区的存储过程中擦除Fee逻辑扇区0的示意图;
图3为Fee逻辑扇区中扇区头部区的Fee逻辑扇区头部信息示意图;
图4为Fee逻辑扇区中Block数据区中数据块的块头部信息示意图;
图5为一个实施例中数据存储管理方法的流程图;
图6为一个实施例中Fee逻辑扇区的划分方式示意图;
图7为一个实施例中Fee数据块管理区和RAM数据块管理区的结构示意图;
图8为另一个实施例中数据存储管理方法的流程图;
图9为另一个实施例中数据存储管理方法的流程图;
图10为一个实施例中数据存储管理装置的结构示意图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据存储管理方法,可以应用于Autosar(Automotive OpenSystem Architecture,汽车开放系统架构)中的Fee模块。Autosar提出内存协议栈的概念,其中,如图1所示,为用于管理EEPROM和Flash的模块的结构示意图,包括:服务层的NvM(NVRAM Manager,非易失性内存管理),ECU抽象层的MemIf(Memory AbstractionInterface,内存抽象接口)、Fee和Ea(EEPROM Abstraction,EEPROM抽象),微控制器抽象层的FlsDriver(Flash Driver,闪存驱动)和EepDriver(EEPROM Driver,带电可擦可编程只读存储器驱动)。其中,Fee模块是对Flash存储芯片进行管理,把Flash模拟EEPROM进行操作。当然,本申请实施例提供的数据存储管理方法也可以用于其他包括Fee模块的系统、架构或者设备中。
参照图2(a),为传统的Fee逻辑扇区的存储过程中初始状态的示意图。一般的,Fee模块会将所管辖的Flash按照分区(Partition)划分,每个Flash的扇区为一个分区,一个分区包含至少2个Fee逻辑扇区(Fee Logical Sector),也称为虚拟扇区,等价于Flash模块的物理扇区。Fee模块以数据块(Block)为单位执行写入操作,以Fee逻辑扇区为单位执行擦除操作。
每个Fee逻辑扇区包括扇区头部(Sector Header)区和Block数据区。
其中每个Fee逻辑扇区会在扇区顶部专门划出一段内存,作为扇区头部区。扇区头部区用于在擦除完成后第一次存储时写入Fee逻辑扇区头部(Fee Logical SectorHeader)信息,如在Fee逻辑扇区0的扇区头部区中写入了Fee逻辑扇区0的Fee逻辑扇区头部信息Sector0 Header。
参见图3,图3为传统的Fee逻辑扇区中扇区头部区的Fee逻辑扇区头部信息示意图。如图3所示,写入扇区头部区的Fee逻辑扇区头部信息包含但不局限于以下数据:模数值、扇区标识(Sector ID)、扇区使用次数(SectorCount)、逻辑扇区使用状态、头部信息CRC(Header CRC)值、扇区总长度等标识符。这些标识符的具体意义如下:
模数值:用于标识每个逻辑扇区的用途,比如不同的数字表示该逻辑扇区存储的数据内容或格式,校验扇区数据的安全性和完整性;
扇区标识:是逻辑扇区的唯一识别编号,用于标识该逻辑扇区的位置和用途,一般用于读取和查找逻辑扇区;
扇区使用次数:表示使用次数,用来记录逻辑扇区被使用的次数,其初始值为0,每进行一次擦除操作,则将扇区使用次数的计数值加1;
逻辑扇区使用状态:表示逻辑扇区的当前状态,指示该逻辑扇区是否包含已用数据,空白数据或者是坏扇区等信息;
头部信息CRC(Cyclic Redundancy Check,循环冗余校核)值:表示逻辑扇区头部的CRC校验值,用于保证逻辑扇区头部信息的完整性和正确性;
扇区总长度:表示扇区的总空间容量,它通常包括扇区头部区和Block数据区的总长度。
返回参照图2(a),Fee逻辑扇区包括Block数据区,Block数据区的大小由用户设定,基于用户的用途以及需要存储的数据大小决定。进一步的,Block数据区包括若干个数据块Block(如Block n、Block k、Block m……),每个数据块Block由块头部信息(DataHeader)以及原始数据组成。其中原始数据是上层模块传递的需要储存的数据,将该原始数据存储到Block数据区;如图4所示,为Fee逻辑扇区中Block数据区中数据块的块头部信息示意图,块头部信息包含但不局限于以下数据:模数值、块标识(Block ID)、块写入次数(Block Count)、块CRC值、数据块长度(Data length)等标识符。这些标识符的具体意义如下:
模数值:与扇区头部区中的模数值相同,用于校验数据块的安全性和完整性;
块标识:用于标识一个数据块的ID编号,与扇区头部区中的扇区标识类似,是一个关键的标识符,用于唯一地引用一个数据块;
块写入次数:记录数据块被写入的次数,用于检查数据块的使用频率,从而可以以该标识符为依据,防止出现因数据块的频繁写入和读取导致损坏或者过度使用的问题;其中每个数据块都对应一个块写入次数,其只与存储写入的次数相关,每进行一次存储操作,则将块写入次数的计数值加1;
块CRC值:与扇区头部区中的头部CRC值类似,是基于CRC(循环冗余校核)算法计算的数据校验和,用于验证数据块内存储的数据是否完整和正确;
块长度:记录数据块的实际长度,通过该标识符可以了解到数据块中的数据的长度,从而可以帮助操作系统快速找到需要读取的数据。
参照图2(a)—图2(d),为传统Fee逻辑扇区的数据存储过程。具体过程如下描述。
如图2(a)所示,Fee模块先获取3个Fee逻辑扇区的状态:Fee逻辑扇区0状态为Actived(激活),表示已擦除,使用中;Fee逻辑扇区1、Fee逻辑扇区2状态为Not Actived(未激活),表示已擦除,未使用。
此时,将需要存储的数据写入Fee逻辑扇区0,如图2(b)所示。
参照图2(c),为传统的Fee逻辑扇区的存储过程中Fee逻辑扇区0和Fee逻辑扇区1存储数据存满时的示意图。当Fee逻辑扇区0存满或剩余的内存空间无法存储下一个数据块的数据时,将Fee逻辑扇区1执行擦除操作且状态置为激活,先在Fee逻辑扇区1的内存顶部的扇区头部区中写入了Fee逻辑扇区1的Fee逻辑扇区头部信息Sector1 Header,并在Fee逻辑扇区1写入下一个数据块的数据,可以理解,在当前逻辑扇区的剩余存储空间不足以存储当前的待存储的数据块的数据时,剩余空间不再进行任何存储,而是切换到下一个逻辑扇区进行存储操作。
当Fee逻辑扇区1存满或剩余的内存空间无法存储下一个数据块的数据时,将Fee逻辑扇区2执行擦除操作且状态置为激活,在Fee逻辑扇区2内存顶部的扇区头部区中写入了Fee逻辑扇区2的Fee逻辑扇区头部信息Sector2 Header。同时由于Fee逻辑扇区0和Fee逻辑扇区1内存中最新数据是最后存储的数据,是能够体现比如车辆的当前状况的数据,因此需要将待擦除的Fee逻辑扇区0或Fee逻辑扇区1中的相应数据块的最新数据写入Fee逻辑扇区2,从而保证后续擦除Fee逻辑扇区0或Fee逻辑扇区1时,不会删除最新数据。具体过程是在Fee逻辑扇区0和Fee逻辑扇区1内存中分别从顶部地址向下读取数据,根据Fee逻辑扇区0和Fee逻辑扇区1内存中各个数据块的块头部信息查询并筛选出内存中数据块的最新数据,如果Fee逻辑扇区0中筛选出Block的最新数据,读取对应的数据块的数据,并写入Fee逻辑扇区2;其中,能够根据块头部信息的块写入次数进行查询并筛选出Fee逻辑扇区0内存中数据块的最新数据,是因为数据块每进行一次存储操作,块写入次数即进行一次加1,从而使得最新数据的块写入次数最大。
参照图2(d),此时将Fee逻辑扇区0中的数据全部擦除,同时将Fee逻辑扇区0的状态置为未激活;之后存储的数据依次存入Fee逻辑扇区2中。当Fee逻辑扇区2存满后,再将Fee逻辑扇区1中各个数据块中的最新数据复制到Fee逻辑扇区0中;同时将Fee逻辑扇区0状态置为激活。擦除Fee块写入次数1中的数据,同时将Fee块写入次数1的状态置为未激活;并如此循环往复。
这种方法通过将Flash划分为多个逻辑扇区,当逻辑扇区的剩余空间不足时,将最早写满的逻辑扇区中的内容拷贝到当前使用的逻辑扇区中,然后将最早的逻辑扇区擦除以释放空间。在当前Fee逻辑扇区要被擦除前,Fee模块需要先查询并筛选出该Fee逻辑扇区的各数据块中的最新数据,写入至空白的Fee逻辑扇区。由于数据块记录的数据均为与车辆状态有关的数据,而每次车辆状态进行更新时,会在数据块中存储该最新数据,因此数据块中的最新数据与车辆的当前状态最相关。由于数据块中的最新数据是最后更新的数据,与车辆的当前状态最相关,因此需要将其保留,从而需要将其写入空白的Fee逻辑扇区。在ECU的上电初始化阶段,Fee模块需要遍历全部的Fee逻辑扇区,根据数据块的写入次数,查询并筛选出各数据块中的最新数据,读取到RAM(Random Access Memory,随机存取存储器)中。其中将各数据块中的最新数据读取到RAM中进行操作,一是可以减少对Flash的Fee逻辑扇区的访问次数,提高数据的访问速度和存储器的寿命;二是有助于进行存储器管理与操作,例如数据的分块、压缩、加密等。因此在进行数据处理之前,需要将各数据块中的最新数据从Flash的Fee逻辑扇区中读取到RAM中,进行后续的处理操作。
但是上述传统的Fee策略不仅在逻辑扇区内存写满之后需要查询并筛选出数据块的最新数据,在上电初始化阶段Fee模块也需要遍历内存中数据块的最新数据并读取到RAM中,等待NvM模块调用NvM_ReadAll接口读取所有涉及的数据块数据;Fee模块遍历内存中数据块最新数据常用策略如下所述:
1)读取Fee逻辑扇区内存中的扇区头部数据,根据读取的模数值和扇区标识判断读取内存数据的正确性;
2)从顶部到底部方向读取Fee逻辑扇区内存中的块头部信息数据,根据读取的模数值判断数据的正确性,并把块标识、块写入次数等更新到RAM的全局变量中,同一数据块比较块写入次数值,块写入次数值越大说明数据是最新值,以数据块长度作为偏移读取下一个块头部信息。依次类推,读取Fee逻辑扇区中所有数据块数据,直到读取的数据全是0xFF为止(一般0xFF是Flash擦除后的内存值)。
综上所述,传统的Fee模块的工作模式中,查询数据块最新数据的策略是需要读取之前写入的所有的Block的块头部信息数据信息。而Fee模块的这种查询策略,在初始化阶段或其他Fee逻辑扇区数据写满或需要更换Fee逻辑扇区的情况下,一般都会使用。可以看到,该策略需要花费较多的时间去完成遍历查询,特别是在初始化阶段,会延缓了ECU的初始化完成时间,不利于汽车行业对实时性要求更高的需求。
为了减少查询所耗费的时间,满足汽车行业对实时性的要求,在一个实施例中,提供了一种数据存储管理方法。如图5所示,在本实施例中,以该数据存储管理方法应用于图1中的Autosar为例进行说明,该方法应用于管理Flash存储区域的Fee模块,包括以下步骤:
步骤502,在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的目标数据块时,记录新数据在当前Fee逻辑扇区中目标数据块的存储地址至数据块管理信息;数据块管理信息用于记录当前Fee逻辑扇区中各个数据块中最新数据的存储地址。
在一个实施例中,在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,获取用于指示存储至该当前Fee逻辑扇区的当前数据块的当前块标识。
步骤504,重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
如图6所示,为本申请实施例的Fee逻辑扇区的划分方式。Fee逻辑扇区从上向下依次包括扇区头部区、Block数据区和Fee数据块管理区。
其中,扇区头部区,用于在擦除完成后第一次存储时写入Fee逻辑扇区的扇区头部信息(Header)。再次参照图3,为扇区头部信息中的数据示例示意图。扇区头部信息包含但不限于以下数据:模数值、扇区标识、扇区使用次数、逻辑扇区使用状态、头部信息CRC值、扇区总长度等标识符,这些标识符的具体意义已在前文进行描述,这里不再赘述。
示例性的,扇区使用次数的初始值是0,Fee逻辑扇区激活后进行一次数据存入操作,扇区使用次数的值加1。
Block数据区,包括若干个Block数据块(如Block n、Block k、Block m……),每个数据块由块头部信息(Data Header)以及原始数据组成。原始数据是上层模块传递的需要储存的数据。再次参照图4,为Fee逻辑扇区中块头部信息(Data Header)中的数据示例示意图。块头部信息包含但不局限于:模数值、块标识(Block ID)、块写入次数(BlockCount)、块CRC值、块长度等标识符,这些标识符的具体意义已在前文进行描述,这里不再赘述。
其中Fee数据块管理区,用于存储各个数据块的管理信息。
因为Fee逻辑扇区中需要依次写入,不能直接在Fee逻辑扇区内存中位于后半部分的Fee数据块管理区写入数据,所以,为了实时记录和更新Fee数据块管理区的数据,本申请的一个实施例中,通过创建与Fee数据块管理区大小相同数据结构一致的数据块管理信息RAM存储区域,可以数据块管理信息的变化进行记录,并在当前Fee逻辑扇区内所有数据块写满时,触发把数据块管理信息的内容写入当前Fee逻辑扇区中的Fee数据块管理区。
示例性的,重复以上新数据写入过程,当Fee逻辑扇区剩余的存储空间小于待存储数据块的长度时,认为当前Fee逻辑扇区存满,此时将数据块管理信息写入Fee数据块管理区。
每个Fee逻辑扇区的存储空间长度(或者说大小)是固定的。示例性的,假设存储空间长度是1024,当前剩余存储空间长度为20,此时需要存储一个长度为30的数据块,则判断无法存储,转到下一个Fee逻辑扇区进行存储。在当前Fee逻辑扇区无法存储当前数据块时,触发写操作,把当前数据块管理区中数据全部写入至当前Fee逻辑扇区的Fee数据块管理区中。如此,Fee数据块管理区中各个数据块管理信息指向当前Fee逻辑扇区中各个数据块的最新数据。当要擦除该Fee逻辑扇区时,无需遍历所有的数据块,只需要根据数据块管理信息即可确定该Fee逻辑扇区中的各个数据块的最新数据;或者ECU上电初始化阶段,只需根据数据块管理信息来确定当前Fee逻辑扇区中的最新数据,并且与其他Fee逻辑扇区中的最新数据进行比较,耗费时间短。
上述实施例提供的应用于管理Flash存储区域的Fee模块的数据存储管理方法,通过记录最新数据的存储地址至数据块管理信息,并在目标Fee逻辑扇区存满时,触发将数据块管理信息写入至目标Fee逻辑扇区的Fee数据块管理区,可以在目标Fee逻辑扇区需要擦除时,根据目标Fee逻辑扇区的数据块管理区记录的目标Fee逻辑扇区中各个数据块中最新数据的存储地址,获取目标Fee逻辑扇区中各个数据块内最新数据,存储至Flash存储区域中任一空白的逻辑扇区。上述方法通过对数据块进行有效管理,无需遍历即可得到已写满的Fee逻辑扇区中的最新数据,达到缩短查询并筛选出前期写入的Fee Block最新数据的时间的目的,有利于提高ECU的实时性,即有利于满足汽车行业对实时性要求更高的需求。
在一个实施例中,该数据存储管理方法还包括Fee模块初始化阶段:在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息之前,该方法还包括:在每个Fee逻辑扇区中划分出Fee数据块管理区;读取每个Fee逻辑扇区的Fee数据块管理区,根据Fee数据块管理区信息筛选出每个数据块的最新数据。
示例性的,在初始化阶段,将Fee逻辑扇区划分为三个区块:扇区头部区、Block数据区、Fee数据块管理区,如图5所示,其中扇区头部区、Block数据区与传统的策略一致,新增Fee数据块管理区。在一些情况中,Fee数据块管理区内存长度固定,从而使得Fee数据块管理区的地址在Fee逻辑扇区内存中的首地址时已知的;其中Fee数据块管理区内存长度为如图4的Block的块头部信息的长度乘以Block总个数得到。
在一些情况下,待存储的数据是确定的,因此存储的数据以及存储的数据长度是预知的,只是存储的数据的数据值是变化的,需要存储的数据个数就是Block总个数;需要存储的数据的总长度就是Block数据的总长度。可以理解,由于需要存储的数据长度不同,其对应的Block数据长度不同。
在初始化时需要读取查询并筛选出所有Fee逻辑扇区的Block最新数据,因此在初始化阶段读取每个Fee逻辑扇区的Fee数据块管理区,根据Fee数据块管理区信息筛选出每个Block的最新数据,该最新数据包括Block的块写入地址、数据块长度等。
参照图6,在当前Fee逻辑扇区为Fee逻辑扇区0,当前数据块为Block n(示意性的,该Block n为图6中Sector0 Header下方的第一个Block n)的情况下,将待存储的新数据写入Block n中,此时记录Block n的存储地址至数据块管理信息中。
重复以上新数据写入过程,继续将新数据写入Block k,Block m...中,直至将新数据写入Block k(示意性的,该Block k为图6中Administration Block上方的Block k),Fee逻辑扇区0存满,此时触发将数据块管理信息写入至Fee逻辑扇区0的Fee数据块管理区。
本申请的一个实施例中,在每个Fee逻辑扇区中划分出Fee数据块管理区,并在当前Fee逻辑扇区内所有数据块写满时,触发把数据块管理信息的内容写入当前Fee逻辑扇区中的Fee数据块管理区。从而在初始化阶段通过读取每个Fee逻辑扇区的所述Fee数据块管理区,根据所述Fee数据块管理区信息即可筛选出每个数据块的最新数据,从而使得在初始化阶段降低了ECU的初始化完成时间。
在一个实施例中,Fee数据块管理区存储模数值、数据块数量(BlockNum)和数据块管理信息区(BlockInfo);数据块管理信息区包括多个数据块的数据块管理信息;数据块管理信息包括块标识、块写入地址、块写入次数和扇区标识。
参见图7中的(a),为Fee数据块管理区的数据结构示例示意图。Fee数据块管理区包括模数值、数据块数量和数据块管理信息区。
其中,模数值用于校验数据的安全性和完整性;数据块管理信息区由数据块管理信息组成,其占用的数据长度由数据块的总个数与数据块管理信息长度的乘积确定;数据块数量字段用于记录数据块管理信息区中已经写入的数据块管理信息的个数。
示例性的,数据块的总个数在具体的实施例中是已知的,只是存储的数据块的数据值会有变化,导致数据块长度不一样。如此,Fee数据块管理区占用的内存长度在具体的实施例中是确定的。
在一些实施例中,参见图7中的(c),为数据块管理信息中包含的数据示例示意图。数据块管理信息包含但不限于块标识、块写入次数、块写入地址、数据块长度、扇区标识等标识符,这些标识符的具体意义已在前文进行描述,这里不再赘述。需要说明的是,这里的块标识与Block中的块标识相对应,扇区标识与该块标识指示的数据块所在的扇区相对应。参照图7中(a)和图7中的(c)可以看到,每个数据块的数据块管理信息在Fee数据块管理区中都有固定的位置;可以理解,图7中的(a)只是固定位置的一种可行的实施方式。
通过对Fee数据块管理区的存储空间的具体设置,以及对数据块管理信息的数据结构的具体设置,尤其是在数据块管理信息中设置了块标识以及与块标识对应的数据块所在扇区的扇区标识,使得在查询时能够快速定位最新数据所在数据块的扇区,从而能够减少查询时间。
在一个实施例中,已知Fee逻辑扇区中需要依据地址顺序写入,不能直接在Fee逻辑扇区内存中位于后半部分的Fee数据块管理区写入数据。通过创建与Fee数据块管理区大小相同数据结构一致的数据块管理信息存储区域,可以数据块管理信息的变化进行记录,并在当前Fee逻辑扇区内所有数据块写满时,触发把数据块管理信息的内容写入当前Fee逻辑扇区中的Fee数据块管理区。从而可以遵循Fee逻辑扇区中需要依次写入,不能直接在Fee逻辑扇区内存中位于后半部分的Fee数据块管理区写入数据的规则的前提下,满足对Fee数据块管理区的数据进行实时记录和更新的要求。
在一个实施例中,在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息包括:在RAM中创建RAM数据块管理区;RAM数据块管理区中每个数据块管理信息中包括块标识;在待存储的新数据成功写入的当前Fee逻辑扇区的当前数据块的当前块标识与RAM数据块管理区中的目标块标识相同的情况下,将与目标块标识对应的块写入地址更新为当前数据块的块写入地址,将目标块标识对应的扇区标识更新为当前数据块对应的扇区标识,更新与目标块标识对应的块写入次数;目标块标识为RAM数据块管理区中已经写入的块标识中的任意一个;在当前块标识不存在于RAM数据块管理区中的情况下,则将当前块标识、当前数据块的块写入地址、当前数据块的块写入次数以及当前数据块所在的扇区标识写入RAM数据块管理区,生成与当前块标识对应的目标数据块管理信息。
因为Fee逻辑扇区中需要依次写入,不能直接在Fee逻辑扇区内存中位于后半部分的Fee数据块管理区写入数据,所以,为了实时记录和更新Fee数据块管理区的数据,本申请的一个实施例中,在RAM中创建与Fee数据块管理区大小相同数据结构一致的RAM数据块管理区,用于记录数据块管理信息的变化,RAM数据块管理区的数据结构参见图7中的(b)所示。
示例性的,根据数据块数量值遍历数据块管理信息区内的块标识,将当前块标识与数据块管理信息区中的块标识进行比较。当所述当前块标识与目标块标识相同时,更新数据块管理信息区中的目标块标识对应的数据块管理信息。更新块写入地址为Block数据区内当前数据块写入的地址,将目标块标识对应的块写入次数加1。如此,RAM数据块管理区中的数据块管理信息永远指向各个数据块的最新数据。
在其他示例中,也可以按照其他方式更新块写入次数,比如按照减1的方式,或者加2的方式等,只要与Fee逻辑扇区中数据块写入次数的更新方式一样即可,本申请不对块写入次数的更新方式进行限制。
示例性的,在RAM数据块管理区中,根据数据块数量值遍历数据块管理信息区内的块标识,将当前块标识与数据块管理信息区中的块标识进行比较。当该当前块标识与数据块管理信息区中已经存储的块标识均不相同时,在数据块管理信息区中写入当前块标识对应的数据块管理信息。示例性的,使数据块数量自加1,修改BlockInfo[BlockNum-1]内存,其中块标识为当前块标识,块写入地址为当前数据块在Block数据区内的写入地址,块写入次数为当前数据块头部信息中的写入次数,数据长度为当前数据块的长度,扇区标识为当前Fee逻辑扇区的扇区标识,得到当前块标识对应的数据块管理信息。
在当前Fee逻辑扇区内所有Block数据块写满时,触发把RAM数据块管理区的内容写入当前Fee逻辑扇区中的Fee数据块管理区。
每个Fee逻辑扇区的存储空间长度(或者说大小)是固定的。示例性的,假设存储空间长度是1024,当前剩余存储空间长度为20,此时需要存储一个长度为30的数据块,则判断无法存储,转到下一个Fee逻辑扇区进行存储。RAM数据块管理区在当前Fee逻辑扇区无法存储当前数据块时,触发写操作,把当前RAM数据块管理区中数据全部写入至当前Fee逻辑扇区的Fee数据块管理区中。如此,Fee数据块管理区中各个数据块管理信息指向当前Fee逻辑扇区中各个数据块的最新数据。当要擦除该Fee逻辑扇区时,无需遍历所有的数据块,只需要根据数据块管理信息即可确定该Fee逻辑扇区中的各个数据块的最新数据;或者ECU上电初始化阶段,只需根据数据块管理信息来确定当前Fee逻辑扇区中的最新数据,并且与其他Fee逻辑扇区中的最新数据进行比较,耗费时间短。
上述实施例提供的数据存储管理方法,通过创建与Fee数据块管理区大小相同数据结构一致的数据块管理信息存储区域,可以对数据块管理信息的变化进行记录,通过比对当前块标识和RAM数据块管理区中已经写入的块标识,确保RAM数据块管理区的数据块管理信息指向各个数据块的最新数据,无需遍历即可得到已写满的Fee逻辑扇区中的最新数据,耗费时间短,效率高。
需要说明的是,本申请实施例提供的数据存储管理方法,可以用于管理至少三个Fee逻辑扇区。在只有两个Fee逻辑扇区(Fee逻辑扇区0和1)的情况下,Fee逻辑扇区0写满时,可以直接遍历查找Fee逻辑扇区0并把最新数据写入Fee逻辑扇区1,将Fee逻辑扇区0擦除。
在一些实施例中,如图8所示,数据存储管理方法还包括从待擦除的Fee逻辑扇区中迁移最新数据的过程,该方法还包括以下步骤:
步骤802,获取待擦除扇区标识;待擦除扇区标识用于指示待擦除的Fee逻辑扇区。
步骤804,根据待擦除扇区标识,从RAM数据块管理区中读取与待擦除扇区标识对应的数据块管理信息。
步骤806,根据RAM数据块管理区中的数据块管理信息获取待擦除的Fee逻辑扇区中的待迁移数据块;待迁移数据块为数据块管理信息中的块写入地址对应的数据块。
步骤808,将待迁移数据块写入下一个待写入的Fee逻辑扇区。
步骤810,根据待迁移数据块更新RAM数据块管理区中与待迁移数据块对应的数据块管理信息中的扇区标识和块写入地址。
以Fee模块管理三个Fee逻辑扇区(分别为Fee逻辑扇区0、Fee逻辑扇区1和Fee逻辑扇区2)为例,来说明上述步骤802-步骤810所示的数据存储管理方法。当Fee逻辑扇区0是已写满且是使用中状态,Fee逻辑扇区1中的block数据区中的剩余空间无法写入下一个数据块时,判断Fee逻辑扇区1存满,将RAM数据块管理区中的内容同步至Fee逻辑扇区1中的Fee数据块管理区中。
此时,需要擦除Fee逻辑扇区0中已写入的内容,根据扇区标识“0”(也可以用其他的标识编码方式)从RAM数据块管理区中找到对应的数据块管理信息。上述数据块管理信息代表的是整个flash中存储在Fee逻辑扇区0中的最新数据,在本申请实施例中称为Fee逻辑扇区0中的待迁移数据。根据扇区标识为0的数据块管理信息中的块写入地址和数据块长度,从Fee逻辑扇区0中获取待迁移数据,写入至Fee逻辑扇区2中,同时将与上述待迁移数据对应的数据块管理信息中的扇区标识更新为2,将对应的块写入地址更新为待迁移数据在Fee逻辑扇区2中的写入地址。然后Fee逻辑扇区0里的数据全部擦除,同时将Fee逻辑扇区0的状态置为未激活。新的数据依次存储到Fee逻辑扇区2中已迁移的数据的后面。
步骤802-步骤810提供的数据存储管理方法,通过根据待擦除扇区标识,从RAM数据块管理区中获取对应的数据块管理信息,进而获取待擦除的Fee逻辑扇区中的最新数据,直接更新RAM数据块管理区中相应的数据块管理信息的扇区标识和块写入地址这两项,快速得到最新的数据块管理信息。
在一些实施例中,如图9所示,数据存储管理方法用于管理至少三个Fee逻辑扇区,读取每个所述Fee逻辑扇区的所述Fee数据块管理区,根据所述Fee数据块管理区信息筛选出每个数据块的最新数据,包括以下步骤:
步骤902,在上电初始化阶段,当目标Fee逻辑扇区中已经写入数据块时,读取目标Fee逻辑扇区中的Fee数据块管理区的管理区数据;目标Fee逻辑扇区为任意一个Fee逻辑扇区。
其中,先需要判断目标Fee逻辑扇区是否已经写入数据块。在初始化阶段,Fee模块读取每个Fee逻辑扇区的扇区头部区,验证对应的Fee逻辑扇区是否已经写数据。示例性的,根据扇区头部区中的数据值判断是否已经写入数据。一般擦除后的Flash中的数据为0xff,默认为是无效值。如此,如果扇区头部区中的数据全是无效值,则认为该Fee逻辑扇区没有写入数据块,不读取Fee数据块管理区;如果扇区头部区中的数据不全是无效值,则认为该Fee逻辑扇区中已经写入数据块,读取Fee数据块管理区。
示例性的,在扇区头部区中的数据值不全是无效值时,还可以通过模数值和/或Flash头部信息CRC校验值校验Fee逻辑扇区中的数据是否正确。如果校验不通过,则会提示用户存储数据存在错误。
因此,需要判断管理区数据是否全为无效值。存在目标Fee逻辑扇区中已经写入数据块,但是没有写满下电的情况,这种情况下,RAM数据块管理区还没有将管理信息同步至目标Fee逻辑扇区的Fee数据块管理区中,因此,需要判断获取的管理区数据是否为有效的数据。
步骤904,当管理区数据存在非无效值时,从管理区数据中获取数据块管理信息。
如果目标Fee逻辑扇区在下电时是写满的状态,则表示在下电时已经将RAM数据块管理区中的内容同步写入目标Fee逻辑扇区的Fee数据块管理区,此时管理区数据不全为无效值(即Flash中的无效值0xff);如果目标Fee逻辑扇区在下电时尚未写满,则还没有将RAM数据块管理区中的内容同步过去,此时管理区数据全为无效值(即Flash中的无效值0xff)。
步骤906,当从已经写入数据块的Fee逻辑扇区的Fee数据块管理区均能获取数据块管理信息时,根据数据块管理信息,确定上电初始化阶段的最新数据。
以Fee模块管理四个Fee逻辑扇区(Fee逻辑扇区0、1、2、3)为例,如果刚好写满Fee逻辑扇区0和Fee逻辑扇区1时存储器下电,则下一次上电初始化阶段,Fee模块获取的是Fee逻辑扇区0的数据块管理信息和Fee逻辑扇区1中的数据块管理信息,并通过比较相同块标识的块写入次数,来确认上电初始化阶段的最新数据。示例性的,块标识为0对应的写入次数分别为1和5,则获取块标识为0且写入次数为5对应的块写入地址和数据块长度,以确定块标识为0对应的最新数据。
在进行块写入次数的比较时,需要注意,在块写入次数没有达到最大值的情况下,块写入次数越大的数据块管理信息对应的是最新数据;如果块写入次数达到最大值,下一轮块入次数从0开始计数。根据数据类型的不同,块写入次数的最大值也不同。如果块写入次数的数据类型是uint8,则块写入次数的最大值是255;当块写入次数超过255时,则从0开始计数。
如果目标Fee逻辑扇区是在未写满时下电,导致不能写入数据块管理信息,则在下一次上电读取Fee数据块管理区时,获取的管理区数据全是0xff,此时需要按照传统的遍历策略查询目标Fee逻辑扇区中的最新数据。
在一些情况下,下电时,正在写入的Fee逻辑扇区是未写满状态,其余写入数据块的Fee逻辑扇区是写满的状态。如此,在一些实施例中,数据存储管理方法还包括步骤908—步骤910。
步骤908,当管理区数据全为无效值时,遍历目标Fee逻辑扇区,得到各个数据块的块头部信息。
步骤910,根据块头部信息,确定上电初始化阶段的最新数据。
在一个实施例中,在下电时,只有一个Fee逻辑扇区中写入数据块,且该Fee逻辑扇区未写满,则在下一次上电读取Fee数据块管理区时,只能通过遍历该Fee逻辑扇区的方式获取上电初始化阶段的最新数据,即当全部已经写入数据块的Fee逻辑扇区获取的都是块头部信息时,根据块头部信息,确定上电初始化阶段的最新数据。
在上电初始化阶段,可以根据确定最新数据的数据块管理信息和/或块头部信息,确定RAM数据块管理区中的数据块管理信息区中的各个数据块管理信息。
在上述实施例中,基于Fee模块的基本存储对象数据块,对其进行有效管理,达到缩短实时查询并筛选出前期写入Fee逻辑扇区的最新数据的时间的目的,提高ECU的实时性。
在一些实施例中,数据存储管理方法还包括:
步骤912,当从已经写入数据块的Fee逻辑扇区获取的数据包括数据块管理信息和块头部信息时,根据数据块管理信息和块头部信息,确定上电初始化阶段的最新数据。
在这个实施例中,只需要遍历下电时未写满的Fee逻辑扇区得到对应的块头部信息,与已经写满的Fee逻辑扇区中的数据块管理信息,进行对比,确定上电初始化阶段的最新数据,相对传统的要遍历全部Fee逻辑扇区的方法,耗费时间短,提高上电初始化阶段的实时性。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据存储管理方法的数据存储管理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据存储管理装置实施例中的具体限定可以参见上文中对于数据存储管理方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种数据存储管理装置,包括:数据块管理信息写入模块1002和同步触发模块1004,其中:
数据块管理信息写入模块1002,用于在待存储的新数据成功写入Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录新数据在当前Fee逻辑扇区中当前数据块的存储地址至数据块管理信息;数据块管理信息用于记录当前Fee逻辑扇区中各个数据块中最新数据的存储地址。
同步触发模块1004,用于重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至当前Fee逻辑扇区的Fee数据块管理区。
在一个实施例中,数据存储管理装置还包括:
最新数据获取模块,用于读取每个Fee逻辑扇区的Fee数据块管理区,根据Fee数据块管理区信息筛选出每个数据块的最新数据。
在一个实施例中,数据存储管理装置中的数据块管理信息写入模块1002,还用于在RAM中创建RAM数据块管理区;RAM数据块管理区中每个数据块管理信息中包括块标识;在待存储的新数据成功写入的当前Fee逻辑扇区的当前数据块的当前块标识与RAM数据块管理区中的目标块标识相同的情况下,将与目标块标识对应的块写入地址更新为当前数据块的块写入地址,将目标块标识对应的扇区标识更新为当前数据块对应的扇区标识,更新与目标块标识对应的块写入次数;目标块标识为RAM数据块管理区中已经写入的块标识中的任意一个;在当前块标识不存在于RAM数据块管理区中的情况下,则将当前块标识、当前数据块的块写入地址、当前数据块的块写入次数以及当前数据块所在的扇区标识写入RAM数据块管理区,生成与当前块标识对应的目标数据块管理信息。
在一个实施例中,数据存储管理装置还包括扇区标识获取模块、数据块管理信息读取模块、数据迁移模块、数据块管理信息更新模块。
扇区标识获取模块,用于获取待擦除扇区标识;待擦除扇区标识用于指示待擦除的Fee逻辑扇区。
数据块管理信息读取模块,用于根据待擦除扇区标识,从RAM数据块管理区中读取与待擦除扇区标识对应的数据块管理信息。
数据迁移模块,用于根据RAM数据块管理区中的数据块管理信息获取待擦除的Fee逻辑扇区中的待迁移数据块;以及,用于将待迁移数据块写入下一个待写入的Fee逻辑扇区。其中,待迁移数据块为数据块管理信息中的块写入地址对应的数据块。
数据块管理信息更新模块,用于根据待迁移数据更新RAM数据块管理区中与待迁移数据块对应的数据块管理信息中的扇区标识和块写入地址。
在一个实施例中,最新数据获取模块还包括管理区数据获取模块、管理区有效性判断模、管理信息获取模块和第一最新数据获取模块。
管理区数据获取模块,用于在上电初始化阶段,当目标Fee逻辑扇区中已经写入数据块时,读取目标Fee逻辑扇区中的Fee数据块管理区的管理区数据;目标Fee逻辑扇区为任意一个所述Fee逻辑扇区。
管理信息获取模块,用于当管理区数据存在非无效值时,从管理区数据中获取数据块管理信息。
第一最新数据获取模块,用于当从已经写入数据块的Fee逻辑扇区的Fee数据块管理区均能获取数据块管理信息时,根据数据块管理信息,确定上电初始化阶段的最新数据。
在一个实施例中,最新数据获取模块还包括块头部信息获取模块和第二最新数据获取模块。
块头部信息获取模块,用于当管理区数据全为无效值时,遍历目标Fee逻辑扇区,得到各个数据块的块头部信息。
第二最新数据获取模块,用于根据块头部信息,确定上电初始化阶段的最新数据。
在一个实施例中,最新数据获取模块还包括第三最新数据获取模块。
第三最新数据获取模块,还用于当从已经写入数据块的Fee逻辑扇区获取的包括数据块管理信息和块头部信息时,根据数据块管理信息和块头部信息,确定上电初始化阶段的最新数据。
上述数据存储管理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是行车电脑,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据存储管理方法。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种数据存储管理设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据存储管理方法,其特征在于,应用于管理Flash存储区域的Fee模块,所述方法包括:
在待存储的新数据成功写入所述Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录所述新数据在所述当前Fee逻辑扇区中所述当前数据块的存储地址至数据块管理信息;所述数据块管理信息用于记录所述当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至所述当前Fee逻辑扇区的Fee数据块管理区。
2.根据权利要求1所述的方法,其特征在于,所述Fee数据块管理区存储模数值、数据块数量和数据块管理信息区;所述数据块管理信息区包括多个数据块的数据块管理信息;所述数据块管理信息包括块标识、块写入地址、块写入次数和扇区标识。
3.根据权利要求2所述的方法,其特征在于,所述在待存储的新数据成功写入所述Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录所述新数据在所述当前Fee逻辑扇区中所述当前数据块的存储地址至数据块管理信息包括:
在RAM中创建RAM数据块管理区;所述RAM数据块管理区中每个数据块管理信息中包括块标识;
在所述待存储的新数据成功写入的当前Fee逻辑扇区的当前数据块的当前块标识与所述RAM数据块管理区中的目标块标识相同的情况下,将与所述目标块标识对应的块写入地址更新为当前数据块的块写入地址,将目标块标识对应的扇区标识更新为当前数据块对应的扇区标识,更新与目标块标识对应的块写入次数;所述目标块标识为RAM数据块管理区中已经写入的块标识中的任意一个;
在所述当前块标识不存在于所述RAM数据块管理区中的情况下,则将所述当前块标识、当前数据块的块写入地址、当前数据块的块写入次数以及当前数据块所在的扇区标识写入所述RAM数据块管理区,生成与所述当前块标识对应的目标数据块管理信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取待擦除扇区标识;所述待擦除扇区标识用于指示待擦除的Fee逻辑扇区;
根据所述待擦除扇区标识,从所述RAM数据块管理区中读取与所述待擦除扇区标识对应的数据块管理信息;
根据所述RAM数据块管理区中的所述数据块管理信息获取待擦除的Fee逻辑扇区中的待迁移数据块;所述待迁移数据块为所述数据块管理信息中的块写入地址对应的数据块;
将所述待迁移数据块写入下一个待写入的Fee逻辑扇区;
根据待迁移数据块更新所述RAM数据块管理区中与待迁移数据块对应的数据块管理信息中的扇区标识和块写入地址。
5.根据权利要求1所述的方法,其特征在于,在所述在待存储的新数据成功写入所述Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录所述新数据在所述当前Fee逻辑扇区中所述当前数据块的存储地址至数据块管理信息之前,所述方法还包括:
读取每个所述Fee逻辑扇区的所述Fee数据块管理区,根据所述Fee数据块管理区信息筛选出每个数据块的最新数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在上电初始化阶段,当目标Fee逻辑扇区中已经写入数据块时,读取所述目标Fee逻辑扇区中的所述Fee数据块管理区的管理区数据;所述目标Fee逻辑扇区为任意一个所述Fee逻辑扇区;
当所述管理区数据存在非无效值时,从所述管理区数据中获取所述数据块管理信息;
当从已经写入数据块的Fee逻辑扇区的Fee数据块管理区均能获取所述数据块管理信息时,根据所述数据块管理信息,确定上电初始化阶段的最新数据。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当所述管理区数据全为无效值时,遍历所述目标Fee逻辑扇区,得到各个数据块的块头部信息;
根据所述块头部信息,确定上电初始化阶段的最新数据。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当从已经写入数据块的Fee逻辑扇区获取的数据包括所述数据块管理信息和块头部信息时,根据所述数据块管理信息和所述块头部信息,确定上电初始化阶段的最新数据。
9.一种数据存储管理装置,其特征在于,应用于管理Flash存储区域的Fee模块,所述装置包括:
数据块管理信息写入模块,用于在待存储的新数据成功写入所述Flash存储区域的当前Fee逻辑扇区的当前数据块时,记录所述新数据在所述当前Fee逻辑扇区中所述当前数据块的存储地址至数据块管理信息;所述数据块管理信息用于记录所述当前Fee逻辑扇区中各个数据块中最新数据的存储地址;
同步触发模块,用于重复以上新数据写入过程,直至当前Fee逻辑扇区存满时,触发将数据块管理信息写入至所述当前Fee逻辑扇区的Fee数据块管理区。
10.一种数据存储管理设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310977504.8A CN117075801A (zh) | 2023-08-04 | 2023-08-04 | 数据存储管理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310977504.8A CN117075801A (zh) | 2023-08-04 | 2023-08-04 | 数据存储管理方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117075801A true CN117075801A (zh) | 2023-11-17 |
Family
ID=88710655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310977504.8A Pending CN117075801A (zh) | 2023-08-04 | 2023-08-04 | 数据存储管理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117075801A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785073A (zh) * | 2024-02-28 | 2024-03-29 | 深圳市智岩科技有限公司 | 物联网设备及其时序数据存取方法和相应的装置与介质 |
-
2023
- 2023-08-04 CN CN202310977504.8A patent/CN117075801A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785073A (zh) * | 2024-02-28 | 2024-03-29 | 深圳市智岩科技有限公司 | 物联网设备及其时序数据存取方法和相应的装置与介质 |
CN117785073B (zh) * | 2024-02-28 | 2024-06-21 | 深圳市智岩科技有限公司 | 物联网设备及其时序数据存取方法和相应的装置与介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2042995B1 (en) | Storage device and deduplication method | |
US8307149B2 (en) | Nonvolatile memory device including a logical-to-physical logig-to-physical address conversion table, a temporary block and a temporary table | |
US8332574B2 (en) | Method for efficient storage of metadata in flash memory | |
US8041884B2 (en) | Controller for non-volatile memories and methods of operating the memory controller | |
CN100487672C (zh) | 用于分割一逻辑块的方法及设备 | |
CN108874298B (zh) | 一种数据存储的方法及装置 | |
JP2009503629A (ja) | プログラム可能な耐久度を有するフラッシュメモリ | |
KR20020009564A (ko) | 메모리 시스템 | |
CN117075801A (zh) | 数据存储管理方法、装置及设备 | |
CN112631950B (zh) | 一种l2p表的保存方法、系统、设备以及介质 | |
CN112596668A (zh) | 一种存储器的坏块处理方法及系统 | |
KR100703680B1 (ko) | 플래시 파일 시스템 | |
CN113568582A (zh) | 数据管理方法、装置和存储设备 | |
CN112631953A (zh) | 固态硬盘数据trim方法、装置、电子设备及存储介质 | |
US8219739B2 (en) | Read-only optimized flash file system architecture | |
CN115599313A (zh) | 一种磁盘阵列扩容方法、系统、存储介质及设备 | |
CN110134645B (zh) | 文件系统存储管理方法、读取方法、管理装置和读取装置 | |
CN106547472A (zh) | 存储阵列管理方法及装置 | |
CN115373608A (zh) | 数据存储方法及装置 | |
CN113345510B (zh) | 一种flash的容量识别方法及容量识别系统 | |
CN114518845A (zh) | 数据存储方法、装置、介质及设备 | |
KR101465426B1 (ko) | 익스텐트 매핑 플래시 디바이스 | |
CN112286725A (zh) | 数据处理方法、装置及电子设备 | |
CN111159123A (zh) | 一种嵌入式可靠参数储存文件系统及方法 | |
CN111444114A (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 |