CN116737089A - 配置数据的存储方法、装置和系统 - Google Patents
配置数据的存储方法、装置和系统 Download PDFInfo
- Publication number
- CN116737089A CN116737089A CN202311023051.1A CN202311023051A CN116737089A CN 116737089 A CN116737089 A CN 116737089A CN 202311023051 A CN202311023051 A CN 202311023051A CN 116737089 A CN116737089 A CN 116737089A
- Authority
- CN
- China
- Prior art keywords
- configuration data
- sector
- data
- writing
- configuration
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012937 correction Methods 0.000 claims abstract description 102
- 238000001514 detection method Methods 0.000 claims description 56
- 230000006835 compression Effects 0.000 claims description 9
- 238000007906 compression Methods 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0629—Configuration or reconfiguration 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/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]
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)
Abstract
本申请公开一种配置数据的存储方法、装置和系统,包括,获得微控制单元的配置数据;确定闪存设备的第一扇区是否写满;若未写满,将配置数据写入第一扇区,使微控制单元基于第一扇区存储的配置数据运行;将根据配置数据确定的纠正数据写入闪存设备的第二扇区;纠正数据的数据量小于配置数据的数据量,当配置数据存在错误时,纠正数据作为修正配置数据的依据;若写满,将配置数据写入未写满的第二扇区,使微控制单元基于第二扇区存储的配置数据运行。由于第二扇区的纠正数据的数据量较小,当第一扇区写满时,第二扇区仍有剩余的存储空间可写入配置数据,因此本方案在第一扇区写满时也能快速更新配置数据,缩短了更新用时。
Description
技术领域
本申请属于数据存储技术领域,尤其涉及一种配置数据的存储方法、装置和系统。
背景技术
Flash存储器是微控制单元(Microcontroller Unit,MCU)的重要组成部分,负责存储代码、数据。在汽车电子行业,flash中会存储MCU的很多配置数据,包括MCU的版本信息、MCU中各个功能模块(IP模块,以下简称IP)的修正信息、软件更新的配置数据、IP功能开关信息等。这些配置数据很重要,保证了每次重新上电之后,MCU的行为符合用户预期。其中,IP模块具体可以包括模数转换模块ADC,串行外设设备接口模块SPI等。
这些配置数据可能需要在MCU的使用过程中进行更新。为了防止更新配置数据过程中断电,通常会采用同构备份的方式来存储配置数据,即分别在flash的2块扇区中存储同样的配置数据,其中扇区是flash的最小擦除单元。数据更新的过程是:如果扇区中还有足够的空间,则先往一个扇区里写配置数据,再往另一个扇区中写配置数据,只有2个扇区的数据都写完,才认为是配置数据更新完成。当遇到两个扇区都写满的情况,先擦一个扇区,再往这个擦干净的扇区中写配置数据,然后再擦另一个扇区,往这个扇区中也写配置数据。
该方案的一个问题在于,当扇区写满时,需要擦除2个扇区,而flash擦除的用时较长,通常是毫秒级别的,这就导致当扇区写满时更新配置数据用时过长。
发明内容
为此,本申请公开如下技术方案:
本申请第一方面提供一种配置数据的存储方法,包括:
获得微控制单元的配置数据;
确定闪存设备的第一扇区是否写满;
若所述第一扇区未写满,将所述配置数据写入所述第一扇区,使所述微控制单元基于所述第一扇区存储的所述配置数据运行;
将根据所述配置数据确定的纠正数据写入所述闪存设备的第二扇区;其中,所述纠正数据的数据量小于所述配置数据的数据量,当所述配置数据存在错误时,所述纠正数据作为修正所述配置数据的依据;
若所述第一扇区写满,将所述配置数据写入未写满的所述第二扇区,使所述微控制单元基于所述第二扇区存储的所述配置数据运行。
可选的,所述将所述配置数据写入未写满的所述第二扇区之后,还包括:
在所述微控制单元基于所述配置数据运行时,擦除所述第一扇区的数据;
将所述配置数据写入所述第一扇区;
擦除所述第二扇区的数据;
根据所述配置数据,将所述纠正数据写入所述第二扇区。
可选的,根据所述配置数据确定所述纠正数据的过程包括以下任意一者:
删除所述配置数据中的索引数据,并将所述配置数据中余下的部分取反,得到所述纠正数据;
对所述配置数据进行无损压缩,得到所述纠正数据。
可选的,还包括:
在所述配置数据被写入所述第一扇区或者所述第二扇区后,将根据所述配置数据确定的检测数据写入所述闪存设备的第三扇区;其中,所述检测数据作为确定所述配置数据是否存在错误的依据。
可选的,根据所述配置数据确定所述检测数据的过程包括:
对所述配置数据进行哈希运算或者循环冗余校验运算,获得所述检测数据。
可选的,所述将根据所述配置数据确定的纠正数据写入所述闪存设备的第二扇区之后,还包括:
根据所述检测数据确定所述第一扇区的配置数据是否存在错误;
若所述第一扇区的配置数据存在错误,至少根据所述纠正数据生成备份配置数据;
根据所述检测数据确定所述备份配置数据是否存在错误;
若所述备份配置数据不存在错误,用所述备份配置数据替换所述第一扇区存储的配置数据,使所述微控制单元基于所述第一扇区存储的所述备份配置数据运行;
若所述备份配置数据存在错误,输出用于指示配置错误的提示信息。
可选的,所述将所述配置数据写入未写满的所述第二扇区之后,还包括:
将根据所述配置数据确定的纠正数据写入所述第三扇区。
本申请第二方面提供一种配置数据的存储装置,包括:
获得单元,用于获得微控制单元的配置数据;
确定单元,用于确定闪存设备的第一扇区是否写满;
写入单元,用于:
若所述第一扇区未写满,将所述配置数据写入所述第一扇区,使所述微控制单元基于所述第一扇区存储的所述配置数据运行;
将根据所述配置数据确定的纠正数据写入所述闪存设备的第二扇区;其中,所述纠正数据的数据量小于所述配置数据的数据量,当所述配置数据存在错误时,所述纠正数据作为修正所述配置数据的依据;
若所述第一扇区写满,将所述配置数据写入未写满的所述第二扇区,使所述微控制单元基于所述第二扇区存储的所述配置数据运行。
可选的,所述写入单元还用于:
在所述微控制单元基于所述配置数据运行时,擦除所述第一扇区的数据;
将所述配置数据写入所述第一扇区;
擦除所述第二扇区的数据;
根据所述配置数据,将所述纠正数据写入所述第二扇区。
本申请第三方面提供一种配置数据的存储系统,包括微控制单元和闪存设备,所述微控制单元和所述闪存设备连接,所述闪存设备至少设置有第一扇区和第二扇区;
所述微控制单元用于:
获得微控制单元的配置数据;
确定所述第一扇区是否写满;
若所述第一扇区未写满,将所述配置数据写入所述第一扇区,使所述微控制单元基于所述第一扇区存储的所述配置数据运行;
将根据所述配置数据确定的纠正数据写入所述第二扇区;其中,所述纠正数据的数据量小于所述配置数据的数据量,当所述配置数据存在错误时,所述纠正数据作为修正所述配置数据的依据;
若所述第一扇区写满,将所述配置数据写入未写满的所述第二扇区,使所述微控制单元基于所述第二扇区存储的所述配置数据运行。
本申请公开一种配置数据的存储方法、装置和系统,包括,获得微控制单元的配置数据;确定闪存设备的第一扇区是否写满;若未写满,将配置数据写入第一扇区,使微控制单元基于第一扇区存储的配置数据运行;将根据配置数据确定的纠正数据写入闪存设备的第二扇区;纠正数据的数据量小于配置数据的数据量,当配置数据存在错误时,纠正数据作为修正配置数据的依据;若写满,将配置数据写入未写满的第二扇区,使微控制单元基于第二扇区存储的配置数据运行。由于第二扇区的纠正数据的数据量较小,当第一扇区写满时,第二扇区仍有剩余的存储空间可写入配置数据,因此本方案在第一扇区写满时也能快速更新配置数据,缩短了更新用时。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请实施例提供的一种配置数据的存储方法的流程图;
图2是本申请实施例提供的第一种闪存设备的存储状态示意图;
图3是本申请实施例提供的第二种闪存设备的存储状态示意图;
图4是本申请实施例提供的第三种闪存设备的存储状态示意图;
图5是本申请实施例提供的第四种闪存设备的存储状态示意图;
图6是本申请实施例提供的第五种闪存设备的存储状态示意图;
图7是本申请实施例提供的一种配置数据的存储装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种配置数据的存储方法,请参见图1,为该方法的流程图,该方法可以包括如下步骤。
本实施例提供的方法中各个步骤,可以由微控制单元MCU执行。
S101,获得微控制单元的配置数据。
在步骤S101中,MCU可以和上位机(例如个人电脑,工业主机,服务器等)连接,然后从上位机接收配置数据。
本实施例中,配置数据由索引数据和配置数据本体组成。配置数据本体,包含MCU运行所需的数据,包括但不限于MCU的版本信息、MCU中各个IP的修正信息、软件更新的配置数据、IP功能开关信息等,索引数据,用于指示根据配置数据确定的相关数据在闪存设备的指定扇区中的存储位置。
在一些实施例中,相关数据可以包括根据配置数据确定的纠正数据,配置数据在第一扇区存储,纠正数据在第二扇区存储,对应的,索引数据可以指示纠正数据在第二扇区中的存储位置。
在另一些实施例中,相关数据可以包括纠正数据和检测数据,检测数据在第三扇区存储,对应的,索引数据可以指示纠正数据在第二扇区的存储位置,以及指示检测数据在第三扇区的存储位置。
进一步的,索引数据可以携带编号,该编号用于指示该索引数据属于第几次写入的配置数据。
示例性的,对于首次写入闪存设备的配置数据,其索引数据的编号为0,MCU使用一段时间后,进行首次更新,向闪存设备写入新的配置数据,此时写入的配置数据的索引数据编号为1,再使用一段时间后再次进行更新,此时写入的配置数据中,索引数据的编号为2,以此类推。
设置编号的好处在于,当MCU从闪存设备读取配置数据时,可以根据索引数据的编号找到最新写入的配置数据,也就是将对应的编号最大的配置数据确定为最新写入的配置数据。
S101中获得的配置数据,是用于更新的新配置数据。
本实施例中,新配置数据的索引数据可以根据,更新前闪存设备中存储的最新的配置数据的索引数据确定。
示例性的,考虑到相关数据在闪存设备中占用的存储空间大小一般是固定的,可以直接用更新前最新的索引数据所指示的存储位置,加上相关数据占用的存储空间大小,就可以得到新配置数据的相关数据的存储位置,同理,将更新前最新的索引数据的编号递增1,可以得到新配置数据的索引数据的编号。
S102,确定闪存设备的第一扇区是否写满。
本实施例的闪存设备,可以是flash存储器,也可以是其他非易失性存储设备。
若第一扇区未写满,执行步骤S103,若第一扇区写满,执行步骤S105。
第一扇区,是闪存设备中预先指定的一个专门用于存储配置数据的扇区,也可以记为SectorA。
确定第一扇区是否写满,可以采用现有的任意一种识别闪存设备中各扇区空闲存储空间大小的方法实现,不再赘述。
S103,将配置数据写入第一扇区,使微控制单元基于第一扇区存储的配置数据运行。
具体的写入方法可以参考相关的现有技术文献,不再赘述。
S104,将根据配置数据确定的纠正数据写入闪存设备的第二扇区。
其中,纠正数据的数据量小于配置数据的数据量,当配置数据存在错误时,纠正数据作为修正配置数据的依据。
本实施例中,在完成步骤S104后,可以认为本次对配置数据的更新已完成,此时可以将MCU重启,重启后,MCU可以基于本次更新后写入第一扇区的配置数据运行。
可选的,根据配置数据确定纠正数据的方法包括以下任意一者:
A1,删除配置数据中的索引数据,并将配置数据中余下的部分取反,得到纠正数据;
A2,对配置数据进行无损压缩,得到纠正数据;
A3,删除配置数据的非重要字段,获得纠正数据。
在闪存设备中,数据都是以二进制的形式存储,因此方法A1,实质就是从配置数据中取出配置数据本体,然后对配置数据本体按位取反,即针对配置数据本体的每一二进制位,若该位的值为1,就改为0,若该位的值为0就改为1,按该方法逐一处理完配置数据本体的全部二进制位后,获得的结果就是该配置数据对应的纠正数据。
在方法A2中,可以采用任意一种现有的无损压缩算法对配置数据进行压缩处理,获得的压缩后的数据作为纠正数据。由于采用了无损压缩算法,当需要用纠正数据修正配置数据时,通过解压缩纠正数据,可以和被压缩的配置数据完全相同的备份配置数据。
A2中应用的无损压缩算法可以是香农-范诺(Shannon-Fano)算法,或者是霍夫曼(Huffman)编码方法,或者是其他现有的无损压缩算法,本实施例对具体应用的算法不做限定。
在方法A3中,可以预先识别中配置数据中的非重要字段,例如,可以将一些更新频率极低或者完全不更新的字段识别为非重要字段,也可以将一些即使存在错误也不会显著影响MCU运行的字段识别为非重要字段,未被识别为非重要字段的字段则作为重要字段保留,由此获得完全由配置数据中重要字段组成的数据,作为纠正数据。
这种情况下,在利用纠正数据修正配置数据时,可以仅修正配置数据中的重要字段,具体来说,就是用纠正数据的重要字段替换被修正的配置数据的重要字段,非重要字段则保持原样不做修正。
将纠正数据写入第二扇区的方式和将配置数据写入第一扇区的方式一致,不再赘述。
第二扇区是闪存设备中预先分配的一个专门用于存储纠正数据的扇区,也可以记为SectorB。
本实施例中,配置数据和纠正数据之间数据量的差异,满足如下条件:
当第一扇区写满配置数据时,存储这些配置数据对应的纠正数据的第二扇区,其剩余的空闲存储空间还能写入至少一份配置数据。
纠正数据,可以由上位机生成,随着配置数据一并发给MCU,也可以在MCU获得配置数据后,由MCU生成。
S105,将配置数据写入未写满的第二扇区,使微控制单元基于第二扇区存储的配置数据运行。
如前文所述,由于纠正数据的数据量小于配置数据的数据量,所以在第一扇区写满了配置数据后,第二扇区仍有剩余的空闲存储空间,且该空闲存储空间足以写入至少一份配置数据。
所以在S105中,可以在第一扇区写满的情况下,直接将本次更新的新配置数据写入到第二扇区,而不需要对第一扇区和第二扇区进行擦除操作,从而节约了更新闪存设备中配置数据的用时。
本实施例中,在完成步骤S105后,也可以认为本次对配置数据的更新已完成,此时可以将MCU重启,重启后,MCU可以基于本次更新后写入第二扇区的配置数据运行。
可选的,如果在更新过程中MCU将配置数据写入第二扇区,那么在该MCU启动并基于第二扇区的配置数据运行的过程中,可以执行如下步骤:
在微控制单元基于配置数据运行时,擦除第一扇区的数据;
将配置数据写入第一扇区;
擦除第二扇区的数据;
根据配置数据,将纠正数据写入第二扇区。
以上步骤可以由MCU通过执行背景任务的方式,在MCU运行期间执行。
可选的,本实施例提供的方法所适用的闪存设备,还可以设置有用于存储检测数据的第三扇区,这种情况下,本实施例的方法还可以包括:
在配置数据被写入第一扇区或者第二扇区后,将根据配置数据确定的检测数据写入闪存设备的第三扇区;其中,检测数据作为确定配置数据是否存在错误的依据。
第三扇区是闪存设备中预先分配的一个专门用于存储检测数据的扇区,也可以记为SectorC。
可选的,检测数据也可以在写入配置数据之前被写入第三扇区,换言之,MCU获得配置数据后,可以先向第三扇区写入检测数据,再向第一扇区写入配置数据或向第二扇区写入配置数据(第一扇区写满时)。
检测数据,可以由上位机生成并发送给MCU,也可以在MCU获得配置数据后由MCU生成。
可选的,根据配置数据确定检测数据的过程可以包括:
对配置数据进行哈希运算或者循环冗余校验运算,获得检测数据。
哈希运算和循环冗余校验(Cyclic redundancy check,CRC)运算的具体计算方法,可以参见相关的现有技术文献,不再赘述。
如果MCU在第三扇区中写入了配置数据对应的检测数据,并且MCU已经将配置数据和纠正数据分别写了第一扇区和第二扇区,则MCU运行期间,每次需要使用第一扇区的配置数据之前,可以执行如下步骤:
B1,根据检测数据确定第一扇区的配置数据是否存在错误。
在步骤B1中,MCU可以根据配置数据中的索引数据,在第三扇区找到该配置数据对应的检测数据,然后利用检测数据检测配置数据是否存在错误。
检测的具体方式可以是:
基于生成检测数据时所用的算法对配置数据进行计算,获得计算结果,比对计算结果和检测数据,如果两者一致,则认为配置数据不存在错误,如果两者不一致,则认为配置数据存在错误。
B2,若第一扇区的配置数据存在错误,至少根据纠正数据生成备份配置数据;
若第一扇区的配置数据不存在错误,则直接读取并使用第一扇区的配置数据。
在步骤B2中,MCU可以根据配置数据的索引数据,从第二扇区中找到该配置数据对应的纠正数据,从而基于纠正数据执行步骤B2。
B3,根据检测数据确定备份配置数据是否存在错误。
对备份配置数据的检测方法,和步骤B1中检测配置数据的方法一致,不再赘述。
B4,若备份配置数据不存在错误,用备份配置数据替换第一扇区存储的配置数据,使微控制单元基于第一扇区存储的备份配置数据运行。
根据生成纠正数据的方式的不同,用纠正数据恢复出备份配置数据的方式也有所不同。
续接前述示例,当按照A1的方法产生纠正数据时,恢复方法为:将纠正数据按位取反,将取反后的数据和配置数据中的索引数据组合,获得备份配置数据。
当按照A2的方法产生纠正数据时,恢复方法为:利用产生纠正数据时所用的无损压缩算法对应的解压算法将纠正数据解压缩,获得备份配置数据。
当按照A3的方法产生纠正数据时,恢复方法为:用纠正数据包含的重要字段替换配置数据中的同名的字段,替换后的数据作为备份配置数据。
B5,若备份配置数据存在错误,输出用于指示配置错误的提示信息。
可选的,在输出提示信息的同时,MCU可以中止当前正在执行的任务,直到第一扇区的配置数据被更正为止。
可以理解的,本实施例中检测数据的数据量也小于配置数据的数据量,并且当第一扇区写满配置数据时,存储检测数据的第三扇区还能写入至少一份配置数据。
在一些可选的实施例中,MCU将配置数据写入未写满的第二扇区之后,可以进一步将根据配置数据确定的纠正数据写入第三扇区。
在一些可选的实施例中,为了区分S103和S105两种不同的情况,可以在微控制单元中设置一个寄存器,如果在某一次更新时,第一扇区未写满,新的配置数据照常写入第一扇区,则该寄存器保持非置位状态,即寄存器的值为0,于是MCU运行时,根据该寄存器的指示,基于第一扇区中最新版本的配置数据运行;如果在某一次更新时,第一扇区写满,新的配置数据被写入第二扇区,那么在向第二扇区写配置数据时,MCU将该寄存器置位,也就是设置其值为1,在MCU重启后,根据该寄存器的指示,基于第二扇区中最新版本的配置数据运行。
本实施例提供的配置数据的存储方法,其有益效果在于:
第一方面,在本实施例提供的方法中,针对原始的配置数据和起到备份作用的纠正数据,采用了异构存储的模式,即作为备份的纠正数据是根据配置数据确定的数据量较小的数据。这样的设计使得第二扇区的纠正数据的数据量较小,当第一扇区写满时,第二扇区仍有剩余的存储空间可写入配置数据,因此本方案在第一扇区写满时可以将配置数据写入第二扇区,从而快速更新配置数据,缩短了更新用时。
第二方面,本实施例进一步设置了用于存储检测数据的第三扇区,并利用第三扇区中存储的和配置数据对应的检测数据,检测配置数据是否存在错误,解决了现有的配置数据存储方案中,无法区分两份配置数据哪一份正确,哪一份错误的情况。
为便于理解本申请实施例提供的配置数据的存储方法,下面结合一个示例说明该方法的执行过程。
请参见图2,为本申请实施例提供的第一种闪存设备中各扇区的存储状态示意图。
假设MCU当前需要进行第n次更新,此时MCU需要写入的新配置数据记为配置数据n,其索引数据为索引数据n。
在获得配置数据n后,MCU识别第一扇区是否写满,发现第一扇区并未写满后,如图2所示,MCU向第一扇区写入配置数据n(包含索引数据n和配置数据本体),然后向第三扇区写入根据配置数据n确定的检测数据n,再向第二扇区写入根据配置数据n确定的纠正数据n,至此,第n次更新完成,MCU重启后可以根据配置数据n运行。
图2相当于第n次更新完成后各扇区的存储状态。
在以上过程中,如果在完成检测数据的写入之前,包括在写入配置数据的过程中,在写入配置数据之后且开始写检测数据之前,以及在写入检测数据的过程中,MCU断电,则MCU重启后可以识别出第三扇区中没有检测数据,此时MCU可以判定配置数据的写入失败,从写入配置数据步骤开始重新执行更新过程。
如果在完成检测数据的写入之后断电,那么MCU可以在重启后,根据检测数据判断配置数据是否正确,如果正确,MCU基于新配置数据运行,同时启动背景任务,向第二扇区写入新配置数据对应的纠正数据,如果不正确,则判定配置数据的写入失败,从写入配置数据步骤开始重新执行更新过程。
续接前述示例,本示例中,MCU已经完成第n次更新,当前需要进行第n+1次更新,向闪存设备写入配置数据n+1。
从图2可以看出,第n次更新完成后,第一扇区已经写满,MCU获得配置数据n+1后,判断出第一扇区写满,执行如下步骤:
a,向第三扇区中写入配置数据n+1对应的检测数据n+1;
b,向第二扇区中写入配置数据n+1。
执行完步骤b之后,闪存设备中各扇区的存储状态可以参见图3,可以看到,此时第一扇区仍然存储配置数据0至n,配置数据n+1存储在第二扇区。
执行完步骤b之后,MCU就可以根据第二扇区中的配置数据运行,因此可以认为第n+1次更新已完成。
在上述更新过程中,如果在执行完步骤a之前发生断电,则MCU可以从步骤a开始重新执行上述过程。
如果在执行完步骤a之后,执行完步骤b之前发生断电,则MCU可以判定配置数据n+1写入失败,在重启之后重新执行步骤b。
第n+1次更新完成后,MCU启动并基于第二扇区的配置数据n+1运行期间,可以通过开启背景任务的方式,依次执行如下步骤:
C1,擦除第一扇区的数据;
C2,将配置数据n+1及其索引数据写入第一扇区;
步骤C2执行完成后,闪存设备中各扇区的存储情况可以参见图4;
C3,擦除第三扇区的数据;
C4,将配置数据n+1对应的检测数据n+1写入第三扇区;
步骤C4执行完成后,闪存设备中各扇区的存储情况可以参见图5;
C5,擦除第二扇区;
C6,将配置数据n+1对应的纠正数据n+1写入第二扇区;
执行完步骤C6之后,闪存设备中各扇区的存储情况可以参见图6。
执行以上步骤的过程中,如果发生断电,根据断电的时间点的不同,可以有不同的应对方法,具体如下。
如果在完成步骤C2之前,包括执行C1的过程中,C1完成之后且执行C2之前,C2执行过程中等场景,发生断电,由于第二扇区的配置数据n+1和第三扇区的检测数据n+1仍然存在,MCU可以在重启后,基于配置数据n+1从C1开始重新执行上述过程。
如果在完成步骤C4之前,包括执行C3过程中,C3完成之后且C4开始之前,以及C4执行过程中等场景,发生断电,由于第一扇区和第二扇区中都存有新配置数据,即配置数据n+1,所以MCU可以在重启后,基于配置数据n+1从步骤C3开始重新执行上述过程,其中,如果是在C3完成以后断电,则可以从C4开始重新执行上述过程。
如果在完成C6之前,包括执行C5过程中,C5完成之后且C6开始之前,以及C6执行过程中等场景,发生断电,由于第三扇区已经写入了检测数据n+1,且第一扇区已经写入了配置数据n+1,所以MCU可以在重启以后,基于检测数据n+1判断第一扇区的配置数据n+1是否正确,并在判断正确后,基于配置数据n+1继续执行步骤C5和/或C6,其中,如果断电发生在步骤C5完成之前,则再次执行C5和C6,如果断电发生在步骤C5完成之后,则再次执行C6即可。
以上关于断电故障的处理方法中,断电仅作为一种故障示例,以上针对断电场景的处理方法可以适用于包括断电在内的任意一种可能导致更新过程中断的故障的处理。
根据本申请实施例提供的配置数据的存储方法,本申请实施例还提供一种配置数据的存储装置,请参见图7,为该装置的结构示意图,该装置可以包括如下单元。
获得单元701,用于获得微控制单元的配置数据;
确定单元702,用于确定闪存设备的第一扇区是否写满;
写入单元703,用于:
若第一扇区未写满,将配置数据写入第一扇区,使微控制单元基于第一扇区存储的配置数据运行;
将根据配置数据确定的纠正数据写入闪存设备的第二扇区;其中,纠正数据的数据量小于配置数据的数据量,当配置数据存在错误时,纠正数据作为修正配置数据的依据;
若第一扇区写满,将配置数据写入未写满的第二扇区,使微控制单元基于第二扇区存储的配置数据运行。
可选的,写入单元703还用于:
在微控制单元基于配置数据运行时,擦除第一扇区的数据;
将配置数据写入第一扇区;
擦除第二扇区的数据;
根据配置数据,将纠正数据写入第二扇区。
可选的,写入单元703根据配置数据确定纠正数据的过程包括以下任意一者:
删除配置数据中的索引数据,并将配置数据中余下的部分取反,得到纠正数据;
对配置数据进行无损压缩,得到纠正数据。
可选的,写入单元703还用于:
在配置数据被写入第一扇区或者第二扇区后,将根据配置数据确定的检测数据写入闪存设备的第三扇区;其中,检测数据作为确定配置数据是否存在错误的依据。
可选的,写入单元703根据配置数据确定检测数据的过程包括:
对配置数据进行哈希运算或者循环冗余校验运算,获得检测数据。
可选的,该装置还包括恢复单元704,用于:
根据检测数据确定第一扇区的配置数据是否存在错误;
若第一扇区的配置数据存在错误,至少根据纠正数据生成备份配置数据;
根据检测数据确定备份配置数据是否存在错误;
若备份配置数据不存在错误,用备份配置数据替换第一扇区存储的配置数据,使微控制单元基于第一扇区存储的备份配置数据运行;
若备份配置数据存在错误,输出用于指示配置错误的提示信息。
可选的,写入单元703将配置数据写入未写满的第二扇区之后,还用于:
将根据配置数据确定的纠正数据写入第三扇区。
本实施例提供的配置数据的存储装置,可以认为是微控制单元。
本实施例提供的配置数据的存储装置,其具体工作原理和有益效果可以参见本申请实施例提供的配置数据的存储方法,此处不再赘述。
本申请实施例还提供一种配置数据的存储系统,包括微控制单元和闪存设备,微控制单元和闪存设备连接,闪存设备至少设置有第一扇区和第二扇区;
微控制单元用于:
获得微控制单元的配置数据;
确定第一扇区是否写满;
若第一扇区未写满,将配置数据写入第一扇区,使微控制单元基于第一扇区存储的配置数据运行;
将根据配置数据确定的纠正数据写入第二扇区;其中,纠正数据的数据量小于配置数据的数据量,当配置数据存在错误时,纠正数据作为修正配置数据的依据;
若第一扇区写满,将配置数据写入未写满的第二扇区,使微控制单元基于第二扇区存储的配置数据运行。
该系统的具体工作原理可以参见本申请任一实施例提供的配置数据的存储方法,不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上系统或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种配置数据的存储方法,其特征在于,包括:
获得微控制单元的配置数据;
确定闪存设备的第一扇区是否写满;
若所述第一扇区未写满,将所述配置数据写入所述第一扇区,使所述微控制单元基于所述第一扇区存储的所述配置数据运行;
将根据所述配置数据确定的纠正数据写入所述闪存设备的第二扇区;其中,所述纠正数据的数据量小于所述配置数据的数据量,当所述配置数据存在错误时,所述纠正数据作为修正所述配置数据的依据;
若所述第一扇区写满,将所述配置数据写入未写满的所述第二扇区,使所述微控制单元基于所述第二扇区存储的所述配置数据运行。
2.根据权利要求1所述的方法,其特征在于,所述将所述配置数据写入未写满的所述第二扇区之后,还包括:
在所述微控制单元基于所述配置数据运行时,擦除所述第一扇区的数据;
将所述配置数据写入所述第一扇区;
擦除所述第二扇区的数据;
根据所述配置数据,将所述纠正数据写入所述第二扇区。
3.根据权利要求1所述的方法,其特征在于,根据所述配置数据确定所述纠正数据的过程包括以下任意一者:
删除所述配置数据中的索引数据,并将所述配置数据中余下的部分取反,得到所述纠正数据;
对所述配置数据进行无损压缩,得到所述纠正数据。
4.根据权利要求1所述的方法,其特征在于,还包括:
在所述配置数据被写入所述第一扇区或者所述第二扇区后,将根据所述配置数据确定的检测数据写入所述闪存设备的第三扇区;其中,所述检测数据作为确定所述配置数据是否存在错误的依据。
5.根据权利要求4所述的方法,其特征在于,根据所述配置数据确定所述检测数据的过程包括:
对所述配置数据进行哈希运算或者循环冗余校验运算,获得所述检测数据。
6.根据权利要求4所述的方法,其特征在于,所述将根据所述配置数据确定的纠正数据写入所述闪存设备的第二扇区之后,还包括:
根据所述检测数据确定所述第一扇区的配置数据是否存在错误;
若所述第一扇区的配置数据存在错误,至少根据所述纠正数据生成备份配置数据;
根据所述检测数据确定所述备份配置数据是否存在错误;
若所述备份配置数据不存在错误,用所述备份配置数据替换所述第一扇区存储的配置数据,使所述微控制单元基于所述第一扇区存储的所述备份配置数据运行;
若所述备份配置数据存在错误,输出用于指示配置错误的提示信息。
7.根据权利要求4所述的方法,其特征在于,所述将所述配置数据写入未写满的所述第二扇区之后,还包括:
将根据所述配置数据确定的纠正数据写入所述第三扇区。
8.一种配置数据的存储装置,其特征在于,包括:
获得单元,用于获得微控制单元的配置数据;
确定单元,用于确定闪存设备的第一扇区是否写满;
写入单元,用于:
若所述第一扇区未写满,将所述配置数据写入所述第一扇区,使所述微控制单元基于所述第一扇区存储的所述配置数据运行;
将根据所述配置数据确定的纠正数据写入所述闪存设备的第二扇区;其中,所述纠正数据的数据量小于所述配置数据的数据量,当所述配置数据存在错误时,所述纠正数据作为修正所述配置数据的依据;
若所述第一扇区写满,将所述配置数据写入未写满的所述第二扇区,使所述微控制单元基于所述第二扇区存储的所述配置数据运行。
9.根据权利要求8所述的装置,其特征在于,所述写入单元还用于:
在所述微控制单元基于所述配置数据运行时,擦除所述第一扇区的数据;
将所述配置数据写入所述第一扇区;
擦除所述第二扇区的数据;
根据所述配置数据,将所述纠正数据写入所述第二扇区。
10.一种配置数据的存储系统,其特征在于,包括微控制单元和闪存设备,所述微控制单元和所述闪存设备连接,所述闪存设备至少设置有第一扇区和第二扇区;
所述微控制单元用于:
获得微控制单元的配置数据;
确定所述第一扇区是否写满;
若所述第一扇区未写满,将所述配置数据写入所述第一扇区,使所述微控制单元基于所述第一扇区存储的所述配置数据运行;
将根据所述配置数据确定的纠正数据写入所述第二扇区;其中,所述纠正数据的数据量小于所述配置数据的数据量,当所述配置数据存在错误时,所述纠正数据作为修正所述配置数据的依据;
若所述第一扇区写满,将所述配置数据写入未写满的所述第二扇区,使所述微控制单元基于所述第二扇区存储的所述配置数据运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311023051.1A CN116737089B (zh) | 2023-08-15 | 2023-08-15 | 配置数据的存储方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311023051.1A CN116737089B (zh) | 2023-08-15 | 2023-08-15 | 配置数据的存储方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116737089A true CN116737089A (zh) | 2023-09-12 |
CN116737089B CN116737089B (zh) | 2023-11-21 |
Family
ID=87919043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311023051.1A Active CN116737089B (zh) | 2023-08-15 | 2023-08-15 | 配置数据的存储方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737089B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318686A1 (en) * | 2009-06-10 | 2010-12-16 | Ver Steeg William C | Managing configuration data |
CN105938417A (zh) * | 2015-08-06 | 2016-09-14 | 杭州迪普科技有限公司 | 更新配置数据的方法及装置 |
US20170185350A1 (en) * | 2015-12-23 | 2017-06-29 | Toshiba Corporation | Solid state drive with holding file for atomic updates |
CN107491322A (zh) * | 2017-07-04 | 2017-12-19 | 上海斐讯数据通信技术有限公司 | 一种参数储存的控制方法及装置 |
CN110554928A (zh) * | 2018-05-30 | 2019-12-10 | 北京兆易创新科技股份有限公司 | 一种非易失性半导体存储器参数上电读取方法及装置 |
CN112596808A (zh) * | 2020-12-16 | 2021-04-02 | 微网智控(北京)科技有限公司 | 一种嵌入式系统的参数存储机制 |
CN113641418A (zh) * | 2021-07-26 | 2021-11-12 | 杭州鸿泉物联网技术股份有限公司 | 用于车载设备配置参数的存储方法、装置、设备和介质 |
CN114514511A (zh) * | 2019-10-15 | 2022-05-17 | 纬湃科技有限责任公司 | 帮助识别微控制器的非易失性存储器的空白扇区的方法 |
CN114995749A (zh) * | 2022-05-24 | 2022-09-02 | 福建星云电子股份有限公司 | 一种用于嵌入式设备的参数存储方法 |
CN115951949A (zh) * | 2022-12-26 | 2023-04-11 | 超聚变数字技术有限公司 | 一种bios的配置参数的恢复方法、装置及计算设备 |
-
2023
- 2023-08-15 CN CN202311023051.1A patent/CN116737089B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100318686A1 (en) * | 2009-06-10 | 2010-12-16 | Ver Steeg William C | Managing configuration data |
CN105938417A (zh) * | 2015-08-06 | 2016-09-14 | 杭州迪普科技有限公司 | 更新配置数据的方法及装置 |
US20170185350A1 (en) * | 2015-12-23 | 2017-06-29 | Toshiba Corporation | Solid state drive with holding file for atomic updates |
CN107491322A (zh) * | 2017-07-04 | 2017-12-19 | 上海斐讯数据通信技术有限公司 | 一种参数储存的控制方法及装置 |
CN110554928A (zh) * | 2018-05-30 | 2019-12-10 | 北京兆易创新科技股份有限公司 | 一种非易失性半导体存储器参数上电读取方法及装置 |
CN114514511A (zh) * | 2019-10-15 | 2022-05-17 | 纬湃科技有限责任公司 | 帮助识别微控制器的非易失性存储器的空白扇区的方法 |
CN112596808A (zh) * | 2020-12-16 | 2021-04-02 | 微网智控(北京)科技有限公司 | 一种嵌入式系统的参数存储机制 |
CN113641418A (zh) * | 2021-07-26 | 2021-11-12 | 杭州鸿泉物联网技术股份有限公司 | 用于车载设备配置参数的存储方法、装置、设备和介质 |
CN114995749A (zh) * | 2022-05-24 | 2022-09-02 | 福建星云电子股份有限公司 | 一种用于嵌入式设备的参数存储方法 |
CN115951949A (zh) * | 2022-12-26 | 2023-04-11 | 超聚变数字技术有限公司 | 一种bios的配置参数的恢复方法、装置及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116737089B (zh) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3724764B1 (en) | Write-ahead style logging in a persistent memory device | |
JP5932042B2 (ja) | 不揮発性媒体のダーティー領域追跡 | |
US10114655B2 (en) | Rapid start up method for electronic equipment | |
KR101375992B1 (ko) | 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링 | |
KR101557572B1 (ko) | 메모리 회로들, 메모리에 액세스하는 방법 및 메모리를 복구하는 방법 | |
JP2011198272A (ja) | 半導体記憶装置および半導体記憶装置の制御方法 | |
TWI433157B (zh) | 存取快閃記憶體的方法以及相關之記憶裝置 | |
JP2014526735A (ja) | 検証されたデータセットの不揮発性媒体ジャーナリング | |
CN109086078B (zh) | 安卓系统升级方法、装置、服务器及移动终端 | |
JP2010238107A (ja) | データ記憶プログラム、方法、及び情報処理装置 | |
CN116737089B (zh) | 配置数据的存储方法、装置和系统 | |
EP2368187B1 (en) | Replicated file system for electronic devices | |
TW201617861A (zh) | 韌體更新方法及其電子裝置 | |
US11115063B2 (en) | Flash memory controller, storage device and reading method | |
WO2014024279A1 (ja) | メモリ障害リカバリ装置、方法、及びプログラム | |
CN111159123B (zh) | 一种嵌入式可靠参数储存文件系统及方法 | |
CN104834574B (zh) | 一种解决系统分区损坏的方法及装置 | |
CN112540799A (zh) | 启动数据的管理方法、系统、终端设备及存储介质 | |
KR100575927B1 (ko) | 이동통신 단말기에서 부팅 방법 | |
CN115437853B (zh) | 系统异常重启下的缓存数据保护方法及系统 | |
CN117762523A (zh) | 星载计算机操作系统对单粒子反转的恢复启动方法及系统 | |
WO2012106897A1 (zh) | 数据处理方法及设备 | |
JP2007183808A (ja) | 磁気ディスク装置 | |
JP2021022324A (ja) | 記憶制御装置および記憶制御プログラム | |
CN113050887A (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 |