CN117289860A - 嵌入式微控制器及其数据读写方法 - Google Patents
嵌入式微控制器及其数据读写方法 Download PDFInfo
- Publication number
- CN117289860A CN117289860A CN202311140151.2A CN202311140151A CN117289860A CN 117289860 A CN117289860 A CN 117289860A CN 202311140151 A CN202311140151 A CN 202311140151A CN 117289860 A CN117289860 A CN 117289860A
- Authority
- CN
- China
- Prior art keywords
- data
- storage unit
- value
- ram
- processor
- 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 88
- 238000012795 verification Methods 0.000 claims description 75
- 230000006870 function Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 8
- 239000003550 marker Substances 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 10
- 238000004088 simulation Methods 0.000 abstract description 9
- 230000002829 reductive effect Effects 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 36
- 238000013507 mapping Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 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
- 239000013307 optical fiber Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000008439 repair process 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
-
- 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)
Abstract
本申请公开了一种嵌入式微控制器及其数据读写方法,处理器能够将待存储于EEPROM的数据写入FLASH中有效的存储单元,因FLASH具有非易失性,故能确保在嵌入式微控制器掉电后该数据不会丢失。由此,通过将数据存储在FLASH中可以达到存储在EEPROM中的效果。而在嵌入式微控制器初始化后,处理器能够将初始化前有效的存储单元中存储的数据写入RAM中以供处理器读取,由于RAM与EEPROM的读写方式相同,因此可以确保处理器通过访问RAM达到访问EEPROM的效果。如此,即可模拟实现EEPROM的功能。而无需额外新增EEPROM,因此有效降低了嵌入式微控制器的硬件成本。
Description
技术领域
本申请涉及数据读写技术领域,特别涉及一种嵌入式微控制器及其数据读写方法。
背景技术
电可擦除可编程只读存储器(electrically erasable programmable read onlymemory,EEPROM)具有即时读写的功能,且能够在掉电后保存需要的数据(如配置数据)。因此,很多处理器件(如嵌入式微控制器)往往需要EEPROM来实现数据的读写和保存。
然而,较多的处理器件均未设置EEPROM,因此为了实现数据的即时读写和掉电保存,相关技术中,可以在该处理器件中新增一个EEPROM。
由此可见,相关技术中的处理器件实现数据的即时读写和掉电保存的硬件成本较高。
发明内容
本申请提供了一种嵌入式微控制器及其数据读写方法,可以解决相关技术中的处理器件实现数据的即时读写和掉电保存的硬件成本较高的问题。所述技术方案如下:
一方面,提供了一种数据读写方法,应用于嵌入式微控制器的处理器,所述嵌入式微控制器还包括:随机存取存储器RAM和闪速存储器FLASH,所述FLASH包括按序排列的多个存储单元;所述方法包括:
在所述嵌入式微控制器初始化后,将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,以供处理器读取,其中所述第一存储单元为所述嵌入式微控制器初始化前所述多个存储单元中有效的存储单元;
获取到待存储于EEPROM的第二数据后,将所述第二数据写入所述RAM,并从所述多个存储单元中获取有效的第二存储单元;
若所述第二存储单元的剩余容量小于容量阈值,则将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元;
将所述下一个存储单元作为所述多个存储单元中有效的存储单元;
其中,所述多个数据包括所述第二数据,每个所述数据的目标地址为所述数据在所述EEPROM中的EEPROM地址,或所述RAM中与所述数据的EEPROM地址对应的RAM地址。
可选的,每个所述存储单元均存储有:标志值,所述标志值用于指示所述存储单元是否存储有数据,且任意两个相邻的存储单元的标志值的差值为目标数值;在将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元之前,所述方法还包括:
将所述多个存储单元中标志值为极值的存储单元确定为所述第二存储单元。
可选的,所述极值为最小值;将所述下一个存储单元作为所述多个存储单元中有效的存储单元,包括:
更新所述下一个存储单元的标志值,所述下一个存储单元的更新后的标志值为所述第二存储单元的标志值减去所述目标数值所得到的数值。
可选的,每个所述存储单元还存储有:所述标志值的验证值,所述验证值基于所述标志值生成;所述将所述多个存储单元中标志值为极值的存储单元确定为所述第二存储单元,包括:
对于所述多个存储单元中的每个存储单元,基于所述存储单元的验证值,对所述存储单元的标志值进行验证;
若所述存储单元的标志值通过验证,且所述存储单元的标志值为所述多个存储单元的标志值的最小值,则将所述存储单元确定为所述第二存储单元。
可选的,所述第一存储单元还存储有所述第一数据的校验值,所述校验值是采用校验算法对所述第一数据进行处理得到的;所述将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,包括:
根据所述校验值对所述第一数据进行校验;
若校验成功,则将所述第一数据写入所述RAM。
可选的,所述将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,包括:
将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM的第一存储区域;
所述将所述第二数据写入所述RAM,包括:
将所述第二数据写入所述RAM的第二存储区域;
其中,所述第一存储区域的地址基于所述第一数据在所述EEPROM中的第一EEPROM地址确定,所述第二存储区域的地址基于所述第二数据在所述EEPROM中的第二EEPROM地址确定。
可选的,所述第一存储区域和所述第二存储区域均位于所述RAM的目标存储空间内,所述目标存储空间的容量小于所述RAM的存储空间的容量;所述将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元,包括:
将所述RAM的目标存储空间所存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元。
可选的,所述方法还包括:
若所述第二存储单元的剩余容量大于等于容量阈值,则将所述第二数据和所述第二数据的目标地址写入所述第二存储单元。
可选的,所述将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,包括:
若所述嵌入式微控制器的EEPROM模拟功能启用,则将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM。
另一方面,提供了一种嵌入式微控制器,所述嵌入式微控制器包括:处理器,随机存取存储器RAM和闪速存储器FLASH,所述FLASH包括按序排列的多个存储单元;所述处理器用于:
在所述嵌入式微控制器初始化后,将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,以供处理器读取,其中所述第一存储单元为所述嵌入式微控制器初始化前所述多个存储单元中有效的存储单元;
获取到待存储于EEPROM的第二数据后,将所述第二数据写入所述RAM,并从所述多个存储单元中获取有效的第二存储单元;
若所述第二存储单元的剩余容量小于容量阈值,则将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元;
将所述下一个存储单元作为所述多个存储单元中有效的存储单元;
其中,所述多个数据包括所述第二数据,每个所述数据的目标地址为所述数据在所述EEPROM中的EEPROM地址,或所述RAM中与所述数据的EEPROM地址对应的RAM地址。
可选的,每个所述存储单元均存储有:标志值,所述标志值用于指示所述存储单元是否存储有数据,且任意两个相邻的存储单元的标志值的差值为目标数值;所述处理器还用于:
将所述多个存储单元中标志值为极值的存储单元确定为所述第二存储单元。
可选的,所述极值为最小值;所述处理器用于:
更新所述下一个存储单元的标志值,所述下一个存储单元的更新后的标志值为所述第二存储单元的标志值减去所述目标数值所得到的数值。
可选的,所述每个所述存储单元还存储有:所述标志值的验证值,所述验证值基于所述标志值生成;所述处理器用于:
对于所述多个存储单元中的每个存储单元,基于所述存储单元的验证值,对所述存储单元的标志值进行验证;
若所述存储单元的标志值通过验证,且所述存储单元的标志值为所述多个存储单元的标志值的最小值,则将所述存储单元确定为所述第二存储单元。
可选的,所述第一存储单元还存储有所述第一数据的校验值,所述校验值是采用校验算法对所述第一数据进行处理得到的;所述处理器用于:
根据所述校验值对所述第一数据进行校验;
若校验成功,则将所述第一数据写入所述RAM。
又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述方面所述的数据读写方法。
再一方面,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在所述计算机上运行时,使得所述计算机执行上述方面所述的数据读写方法。
本申请提供的技术方案带来的有益效果至少包括:
本申请提供了一种嵌入式微控制器及其数据读写方法,处理器能够将待存储于EEPROM的数据写入FLASH中有效的存储单元,由于FLASH具有非易失性,因此能够确保在嵌入式微控制器掉电后该数据不会丢失。由此,通过将数据存储在FLASH中可以达到存储在EEPROM中的效果。而在嵌入式微控制器初始化后,处理器能够将初始化前有效的存储单元中存储的数据写入RAM中以供处理器读取,由于RAM与EEPROM的读写方式相同,因此可以确保处理器通过访问RAM达到访问EEPROM的效果。由此可见,通过处理器对嵌入式微控制器自身所具有的FLASH和RAM所执行的数据读写操作,即可模拟实现EEPROM的功能。而无需额外新增EEPROM,因此有效降低了嵌入式微控制器的体积、硬件成本、硬件复杂度和功耗。并且,由于FLASH包括多个存储单元,因此可以确保各个存储单元的使用寿命较长。
此外,处理器在有效的第二存储单元的剩余容量小于容量阈值后,能够先将RAM中存储的多个数据,及各个数据的目标地址写入第二存储单元的下一个存储单元,再将该下一个存储单元作为有效的存储单元。如此,可以确保在向该下一个存储单元写入数据的过程中,即使嵌入式微控制器意外断电,在嵌入式微控制器初始化后,处理器也能够从初始化后有效的存储单元中读取到断电前存储于RAM中的较为完整的数据。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
图1是本申请实施例提供的一种嵌入式微控制器的结构示意图;
图2是本申请实施例提供的另一种嵌入式微控制器的结构示意图;
图3是本申请实施例提供的一种数据读写方法的流程图;
图4是本申请实施例提供的另一种数据读写方法的流程图;
图5是本申请实施例提供的一种第一数据写入RAM的第一存储区域的方法流程图;
图6是本申请实施例提供的一种存储单元的结构示意图;
图7是本申请实施例提供的一种将获取的数据写入RAM和存储单元的示意图;
图8是本申请实施例提供的一种获取第一存储单元的方法流程图;
图9是本申请实施例提供的一种另一种获取第一存储单元的方法流程图;
图10是本申请实施例提供的一种将第一存储单元中的数据写入RAM中的方法流程图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
图1是本申请实施例提供的一种嵌入式微控制器的结构示意图,图2是本申请实施例提供的另一种嵌入式微控制器的结构示意图。参见图1和图2,该嵌入式微控制器可以包括:处理器110、随机存取存储器(random access memory,RAM)120和闪速存储器(flashmemory,FLASH)130。该处理器110分别与RAM120和FLASH130连接。
从图1和图2可以看出,该嵌入式微控制器还可以包括总线矩阵140。处理器110可以通过总线矩阵140分别与RAM120和FLASH130连接。
在一种可选的实现方式中,参见图1,该嵌入式微控制器包括:芯片100。该处理器110、RAM120、FLASH130和总线矩阵140均位于该芯片100内。即该RAM120可以为片内RAM,该FLASH130可以为片内FLASH。此时,该处理器100可以通过芯片100内部集成的片内RAM120和FLASH130,模拟实现EEPROM的功能。
在另一种可选的实现方式中,参见图2,RAM120位于芯片100外,即该RAM120为片外RAM。该嵌入式微控制器还可以包括:位于芯片100中的片外RAM控制器150。该片外RAM控制器150可以分别与总线矩阵140和RAM120连接。即处理器110可以通过片外RAM控制器150与RAM120连接。此时,该处理器100可以通过片内FLASH和片外RAM,模拟实现EEPROM的功能。
可选的,该芯片可以为系统级芯片(system on chip,SOC),或数字信号处理(digital signal processing,DSP)芯片。该RAM可以为静态随机存储器(static randomaccess memory,SRAM)。
在本申请实施例中,处理器可以采用RAM的全部存储空间,以及FLASH的K个存储单元,来模拟实现EEPROM的功能。或者,处理器可以从RAM中取出n字节(byte,B)的目标存储空间,并可以从FLASH中取出K个存储单元。然后,处理器可以通过向该目标存储空间和K个存储单元读写数据,模拟实现EEPROM的功能。例如,处理器可以在嵌入式微控制器出厂后,首次检测到需要模拟实现EEPROM后,从RAM中取出目标存储空间,并从FLASH中取出K个存储单元。
其中,n为所需模拟实现的EEPROM的存储容量(后文均简称为容量)。目标存储空间的容量小于RAM的存储空间的容量,即目标存储空间为RAM的部分存储空间。且目标存储空间包括容量相等的多个存储区域,该多个存储区域与所需模拟的EEPROM中的多个存储区域一一对应。且目标存储空间中的每个存储区域的容量等于EEPROM中的每个存储区域的容量。由此可见,目标存储空间中存储的数据,即为所需模拟的EEPROM中存储的数据。相应的,该目标存储空间也可以称为EEPROM的影子(shadow)RAM。该EEPROM中每个存储区域的容量可以是基于所需存储的数据的最大容量确定,并预先存储至处理器中的。如EEPROM中每个存储区域的容量可以等于该最大容量。所能存储的数据的容量是指:该数据所占用的存储区域的大小。例如,若该数据的最大容量为2B,则该EEPROM中每个存储区域的容量为2B。相应的,目标存储空间中每个存储区域的容量也为2B。
K个存储单元的容量之和可以小于FLASH的容量,K为大于等于2的整数。每个存储单元也可以包括多个容量相等的存储区域,每个存储区域的容量可以是预先存储的。由于存储单元中的存储区域不仅需要存储数据,还需要存储数据的地址,因此每个存储区域的容量需要大于EEPROM中的每个存储区域的容量,即大于目标存储空间中每个存储区域的容量。如,每个存储单元中的任一存储区域的容量,可以等于EEPROM中的每个存储区域的容量的2倍。示例的,假设EEPROM中的每个存储区域的容量为2B,则每个存储单元中的存储区域的容量可以为4B。
可以理解的是,多个存储单元的地址可以连接,且多个存储单元可以按序排列,例如按照地址从低到高的顺序排列。该多个存储单元中最后一个存储单元的结束地址可以为该FLASH的结束地址。且每个存储单元所包括的存储区域的总数,可以大于目标存储空间中存储区域的总数。其中,目标存储空间中存储区域的总数等于目标存储空间的容量与目标存储空间中一个存储区域的容量的商值。每个存储单元中存储区域的总数等于该存储单元的容量与该存储单元中一个存储区域的容量的商值。
处理器取出n B的目标存储空间后,即可将该目标存储空间中多个存储区域中每个存储区域的地址,以及该存储区域对应的EEPROM中的存储区域的地址,对应记录在目标地址映射关系中。即目标地址映射关系中记录有目标存储空间中的多个存储区域的RAM地址,以及每个RAM地址对应的EEPROM中的一个存储区域的EEPROM地址。
其中,目标存储空间中每个存储区域的地址基于目标存储空间的地址范围以及该存储区域的容量确定。该地址范围可以是处理器确定的。例如,若处理器从RAM的存储空间的末尾开始,取出容量为nB的存储空间作为目标存储空间,则该目标存储空间的结束地址即为RAM的结束地址,目标存储空间的开始地址可以基于该结束地址和容量nB确定。
在本申请实施例中,处理器中还可以运行有至少一个进程。每个进程均可以依托处理器对RAM和FLASH进行读写。而在本申请实施例中,使得目标存储空间的结束地址为RAM的存储空间的结束地址,使得多个存储单元的结束地址为FLASH的存储空间的结束地址,可以避免模拟实现EEPROM的过程,导致该进程所需使用的RAM(以及FLASH)地址发生变化,从而可以避免影响该进程的运行。
本申请实施例提供了一种数据读写方法,该方法应用于嵌入式微控制器的处理器。该嵌入式微控制器还包括:RAM和FLASH,该FLASH包括按序排列(如按照地址从低到高的顺序排列)的多个存储单元。例如,该嵌入式微控制器可以为图1或图2所示的嵌入式微控制器。参见图3,该方法包括:
步骤101、在嵌入式微控制器初始化后,将多个存储单元中第一存储单元存储的第一数据写入RAM,以供处理器读取。
其中,第一存储单元为嵌入式微控制器初始化前,多个存储单元中有效的存储单元。该有效的存储单元是指:在芯片初始化前,多个存储单元中最近一次写入数据的存储单元。多个存储单元中有效的存储单元的个数为1。该嵌入式微控制器初始化是指该嵌入式微控制器复位或上电。
步骤102、获取到待存储于EEPROM的第二数据后,将第二数据写入RAM,并从多个存储单元中获取有效的第二存储单元。
处理器中可以运行有需要读写EEPROM的进程。当该进程需要将第二数据写入EEPROM时,该处理器即可获取待存储于EEPROM的第二数据。然后,处理器即可将该第二数据写入RAM中,并可以从多个存储单元中获取有效的第二存储单元。
其中,该第二存储单元为嵌入式微控制器初始化后,多个存储单元中有效的存储单元。该有效的存储单元是指:在芯片初始化后,多个存储单元中最近一次写入数据的存储单元。
步骤103、若第二存储单元的剩余容量小于容量阈值,则将RAM中存储的多个数据,以及多个数据中每个数据的目标地址均写入第二存储单元的下一个存储单元。
处理器获取到第二存储单元后,可以检测该第二存储单元的容量是否小于容量阈值。若处理器确定第二存储单元的剩余容量小于容量阈值,则可以确定第二存储单元无法存储第二数据和第二数据的目标地址,继而可以将RAM中存储的多个数据,以及多个数据中每个数据的目标地址均写入第二存储单元的下一个存储单元。
其中,该容量阈值可以是处理器预先存储的。且该容量阈值可以基于一个数据和该数据的目标地址所占用的存储区域的容量确定。例如,该容量阈值可以为4B。
该多个数据包括第二数据。若处理器采用RAM的所有存储空间模拟实现EEPROM的功能,则该多个数据即为RAM中存储的所有数据。若处理器采用RAM的目标存储空间模拟实现EEPROM的功能,则该多个数据为该目标存储空间中存储的所有数据。
步骤104、将下一个存储单元作为多个存储单元中有效的存储单元。
处理器将RAM中的多个数据写入第二存储单元的下一个存储单元后,即可将该下一个存储单元作为多个存储单元中有效的存储单元。相应的,处理器可以将该第二存储单元作为无效的存储单元。
综上所述,本申请实施例提供了一种数据读写方法,处理器能够将待存储于EEPROM的数据写入FLASH中有效的存储单元,由于FLASH具有非易失性,因此能够确保在嵌入式微控制器掉电后该数据不会丢失。由此,通过将数据存储在FLASH中可以达到存储在EEPROM中的效果。而在嵌入式微控制器初始化后,处理器能够将初始化前有效的存储单元中存储的数据写入RAM中以供处理器读取,由于RAM与EEPROM的读写方式相同,因此可以确保处理器通过访问RAM达到访问EEPROM的效果。由此可见,通过处理器对嵌入式微控制器自身所具有的FLASH和RAM所执行的数据读写操作,即可模拟实现EEPROM的功能,即实现数据的即时读写和掉电保存。而无需额外新增EEPROM,因此有效降低了嵌入式微控制器的体积、硬件成本、硬件复杂度和功耗。并且,由于FLASH包括多个存储单元,因此可以确保各个存储单元的使用寿命较长。
此外,处理器在有效的第二存储单元的剩余容量小于容量阈值后,能够先将RAM中存储的多个数据,及各个数据的目标地址写入第二存储单元的下一个存储单元,再将该下一个存储单元作为有效的存储单元。如此,可以确保在向该下一个存储单元写入数据的过程中,即使嵌入式微控制器意外断电,在嵌入式微控制器初始化后,处理器也能够从初始化后有效的存储单元中读取到断电前存储于RAM中的较为完整的数据。
本申请实施例以处理器采用RAM的目标存储空间来模拟实现EEPROM的功能为例,对本申请实施例提供的数据读写方法的进行示例性说明,该方法可以应用于嵌入式微控制器的处理器。参见图4,该方法可以包括:
步骤201、在嵌入式微控制器初始化后,从多个存储单元中确定第一存储单元。
其中,第一存储单元为嵌入式微控制器初始化前,多个存储单元中有效的存储单元。该有效的存储单元是指:在芯片初始化前,多个存储单元中最近一次写入数据的存储单元。该嵌入式微控制器初始化是指嵌入式微控制器复位或上电。
在本申请实施例中,多个存储单元中的每个存储单元均可以存储有:用于指示存储单元的有效状态的标志值。该有效状态可以包括:有效或无效。且多个存储单元中有效的存储单元的个数为1。该处理器可以在嵌入式微控制器初始化后,检测各个存储单元的标志值,并可以将指示有效状态为有效的标志值所属的存储单元确定为第一存储单元。
在一种可选的示例中,每个存储单元的标志值可以为第一数值或第二数值。该第一数值指示的有效状态为有效,第二数值指示的有效状态为无效。该第一数值与第二数值不同,例如该第一数值可以为1,第二数值可以为0。
示例的,假设第一数值为1,第二数值为0,则处理器在嵌入式微控制器初始化后,可以检测多个存储单元中每个存储单元的标志值是否为1。若处理器确定该存储单元的标志值为0,则可以确定该标志值指示的有效状态为无效,即该存储单元为无效的存储单元。若处理器确定该存储单元的标志值为1,则可以确定该标志值指示的有效状态为有效,即该存储单元为有效的存储单元,继而可以将该存储单元确定为第一存储单元。
在另一种可选的示例中,按序排列的多个存储单元未存储有数据的存储单元的标志值为默认值。存储有数据的任意两个相邻存储单元的标志值为差值为目标数值。该两个相邻存储单元的标志值的差值可以是指:一个存储单元的标志值减去下一个存储单元的标志值得到的数值,或者该下一个存储单元的标志值减去该存储单元的标志得到的数值。
相应的,若该差值为一个存储单元的标志值减去下一个存储单元的标志值得到的数值,则每个存储单元的标志值可以为上一个存储有数据的存储单元的标志值与目标数值的差值。若该差值为下一个存储单元的标志值减去该存储单元的标志值得到的数值,则每个存储单元的标志值可以为上一个存储有数据的存储单元的标志值与目标数值的和值。
可以理解的是,第一个存储有数据的存储单元的标志值可以为默认值与目标数值的差值(或和值)。由此可见,存储有数据的存储单元的标志值可以递减或递增,且可以指示该存储单元是否存储有数据。
还可以理解的是,处理器通常按照多个存储单元的排列次序,依次向多个存储单元中写入数据,即先向第一个存储单元写入数据,第一个存储单元写满后,再向下一个存储单元写入数据,如此轮流向多个存储单元中写入数据。因此可以毫无疑义的确定,处理器最近一次获取的数据所写入的存储单元的标志值最大(或最小)。又由于处理器最近一次获取的数据所写入的存储单元即为有效的存储单元,因此处理器可以将多个存储单元中标志值为极值的存储单元,确定为第一存储单元。
例如,若存储有数据的存储单元的标志值递减,则该处理器可以将标志值最小的存储单元确定为第一存储单元。若存储有数据的存储单元的标志值递增,则该处理器可以将标志值最大的存储单元确定为第一存储单元。
可以理解的是,递增的场景下的默认值与递减的场景下的默认值不同。例如,假设该标志值的位数为32位(bit),则递增的场景下该默认值可以为0x00000000,递减的场景下该默认值为0xFFFFFFFF。0x表示16进制。
可选的,对于存储有数据的存储单元的标志值递减或递增的场景,每个存储单元还可以包括:该存储单元的标志值的验证值,该验证值用于供处理器验证该标志值的准确性。其中,未存储有数据的存储单元的验证值与标志值相同。
在本申请实施例中,存储有数据的存储单元的验证值可以是对该存储单元的标志值进行按位取反操作后得到的。或者,存储有数据的存储单元的验证值可以是采用校验算法对该存储单元的标志值进行处理后得到的。该校验算法可以为和校验算法、冗余校验算法或异或校验算法。
该处理器可以在嵌入式微控制器初始化后,对于多个存储单元中的每个存储单元,基于该存储单元的验证值对该存储单元的标志值进行验证,并将多个存储单元中,标志值通过验证且标志值为极值的存储单元,确定为第一存储单元。
例如,假设存储有数据的存储单元的验证值是对该存储单元的标志值进行按位取反操作后得到的,则处理器可以对该标志值与验证值进行异或运算,并检测异或运算的结果是否为参考值。该参考值可以是处理器预先存储的,若处理器确定该结果为参考值,则可以确定标志值通过验证。若处理器确定该结果不是参考值,则可以确定标志值未通过验证。
示例的,若默认值为0xFFFFFFFF或0x00000000,验证值为对标志值进行按位取反后得到的,则该参考值可以为0xFFFFFFFF。
可选的,处理器可以在确定EEPROM模拟功能启用后,从多个存储单元中确定第一存储单元,并执行下述步骤202至步骤209。如此,可以提高处理器的使用灵活性。
例如,该嵌入式微控制器(如处理器)可以与显示屏连接,该显示屏可以显示有EEPROM模拟功能的启用开关控件。若用户需要嵌入式微控制器启用EEPROM模拟功能,则可以触控该启用开关控件,以使该开关控件指示开关状态为打开状态。之后,若用户无需嵌入式微控制器启用EEPROM模拟功能,则可以再次触控该启用开关控件,以使该开关控件指示开关状态为关闭状态。
可以理解的是,处理器在EEPROM模拟功能启用后,若FLASH的K个存储单元中任一存储单元均未写入数据,即处理器还未开始模拟实现EEPROM的功能,则在接收到待存储于EEPROM的数据后,处理器可以先将该数据和数据的目标地址写入多个存储单元中的第一个存储单元,再将该第一个存储单元确定为有效的存储单元。
步骤202、将第一存储单元存储的第一数据写入RAM,以供处理器读取。
处理器确定第一存储单元后,可以从该第一存储单元中读取第一数据,并将对RAM进行擦除处理。然后,处理器可以将读取到的第一数据,写入擦除处理后的RAM的第一存储区域(即目标存储空间中的第一存储区域),以供处理器基于第一数据的目标地址访问该RAM,从而读取得到第一数据,并进行相应的配置。例如,处理器可以向FLASH发送读控制信号,以使FLASH将该第一数据反馈给处理器。然后,处理器可以再向RAM发写控制信号,以及第一存储区域的地址,以使RAM将该第一数据写入该第一存储区域。
其中,擦除处理后的RAM的每个存储区域的数值均可以为0xFF,该0xFF表示未写入数据。该第一数据为原本需要存储于EEPROM中的配置数据。第一存储区域的地址基于第一数据在EEPROM中的第一EEPROM地址确定。
在本申请实施例中,第一存储单元中还可以存储有第一数据的目标地址。相应的,处理器可以从该第一存储单元中读取得到第一数据和第一数据的目标地址,继而基于目标地址得到第一存储区域的地址,并将第一数据写入该第一存储区域。其中,该目标地址可以为该第一EEPROM地址或该第一EEPROM地址对应的RAM地址。且该RAM地址基于第一EEPROM地址和目标地址映射关系得到。
可以理解的是,若第一数据的目标地址为第一EEPROM地址对应的RAM地址,则处理器可以直接将该RAM地址确定为第一存储区域的地址。若该第一数据的目标地址为第一EEPROM地址,则处理器可以基于目标地址映射关系,确定该第一EEPROM地址对应的RAM地址,并将该RAM地址确定为第一存储区域的地址。
可选的,该第一数据的个数可以为一个或多个。处理器可以将第一存储单元中存储有的所有第一数据均写入RAM。对于第一数据的个数为多个的情况,多个第一数据可以存储于第一存储单元的不同存储区域中。该不同存储区域的FLASH地址不同。此时,该处理器可以按照FLASH地址从低到高的顺序,将多个第一数据依次从第一存储单元读取出来,并将读取出的第一数据依次写入RAM中对应的第一存储区域。即第一存储区域的个数可以为多个。
可选的,在芯片未损坏的情况下,处理器在向存储单元中写入数据的过程中,嵌入式微控制器可能会意外断电,导致数据未写入成功。此时,若处理器在嵌入式微控制器上电后直接将该数据写入RAM中,则会导致后续处理器读取出的数据有误。基于此,第一存储单元还可以存储有第一数据对应的校验值。该校验值是在嵌入式微控制器在初始化之前,采用校验算法对第一数据进行处理得到的,并与第一数据一起写入第一存储单元的。可选的,该校验算法可以为下述算法中的一种:奇偶校验算法,和校验算法,以及冗余校验算法。
此时,参见图5,处理器将第一存储单元存储的第一数据写入RAM的第一存储区域的过程可以包括:
步骤2021、根据校验值对第一数据进行校验。
在本申请实施例中,处理器可以从第一存储单元中,读取到第一数据和第一数据的校验值。然后,处理器可以基于该校验值对该第一数据进行校验。
在本申请实施例中,若校验算法为奇偶校验算法,则处理器可以检测目标数值中的1的个数是否为奇数(或偶数),来实现对第一数据的校验。其中,目标数值包括读取出的校验值和第一数据。若校验算法为和校验算法或冗余校验算法,则处理器可以在读取出第一数据和该校验值后,可以采用该校验算法对该第一数据进行处理,并通过检测处理得到的结果与校验值的异同,来实现对第一数据的校验。
可选的,校验值可以是处理器在将第一数据和第一数据的目标地址写入第一存储单元之前,采用校验算法对第一数据和该目标地址进行处理得到的。相应的,处理器可以基于校验值对第一数据和该目标地址进行校验。
可选的,处理器可以在确定校验功能启用后,对第一数据进行校验。如此,可以提高嵌入式微控制器的使用灵活性。
步骤2022、若校验成功,则将第一数据写入RAM。
处理器对第一数据进行校验后,若确定对第一数据校验成功,则可以将该第一数据写入RAM的第一存储区域。
由于处理器可以基于第一数据的校验值对第一数据进行校验,并在校验成功后将第一数据写入RAM中,因此可以确保写入的数据的可靠性较高,从而可以确保后续处理器读取到的数据较为准确。
在本申请实施例中,一个目标地址(如RAM地址)所指示的存储区域可以被多次写入不同的数据。处理器每次向该目标地址中写入一个数据,均可以将该数据和该数据的目标地址写入FLASH的存储单元,因此每个存储有数据的存储单元(如第一存储单元)中可能会存储有目标地址相同的多个数据。该多个数据位于该存储单元的多个不同的存储区域内。该多个不同的存储区域的FLASH地址不同。
多个FLASH地址中,最高的FLASH地址指示的存储区域中的数据,为写入该目标地址所指示的存储区域中的最新数据。该种情况下,若存储单元中目标地址相同的多个数据均通过验证,则处理器写入RAM中该目标地址指示的存储区域的数据为该最新数据。
若多个数据中某一数据(如第一数据)未通过验证,则处理器可以展示用于指示数据未通过验证的提示信息,以供用户查看。然后,若处理器接收到用户执行的用于指示跳过该数据的操作,则可以读取该存储单元的下一个存储区域中存储的数据、该数据的目标地址和校验值。若处理器接收到用户执行的用于指示停止工作的操作,则可以结束操作。
由此可见,在芯片未损坏的情况下,本申请实施例提供的处理器,对第一数据校验失败后,可以跳过该第一数据,并保持前一次写入至第一存储区域中的数据不变。即本申请实施例提供的嵌入式微控制器具有数据自动恢复的功能。如此,可以确保的数据安全性较高。
步骤203、获取待存储于EEPROM的第二数据。
处理器中可以运行有需要读写EEPROM的进程。当该进程需要将第二数据写入EEPROM中时,该处理器即可获取待存储于EEPROM的第二数据。并且,在获取第二数据时,处理器还可以获取第二数据在该EEPROM中的第二EEPROM地址。其中,该第二数据可以为配置数据。该第二EEPROM地址可以是处理器预先为该进程分配的。
可以理解的是,本申请实施例是处理器通过执行对RAM和FLASH的读写操作,来模拟实现EEPROM,实际上并不存在EEPROM。因此,该第二数据在EEPROM中的第二EEPROM地址是虚拟地址。
步骤204、将第二数据写入RAM。
处理器可以将第二数据写入RAM的第二存储区域。该第二存储区域位于RAM的目标存储空间内,且该第二存储区域的地址基于第二EEPROM地址确定。如,处理器可以预先存储有目标地址映射关系,并可以根据第二EEPROM地址和该目标地址映射关系,将该第二EEPROM地址对应的RAM地址,确定为第二存储区域的地址。
步骤205、获取多个存储单元中有效的第二存储单元。
处理器获取到第二数据后,还可以获取在多个存储单元中有效的第二存储单元。其中,第二存储单元为嵌入式微控制器,初始化后多个存储单元中有效的存储单元。
在本申请实施例中,处理器从多个存储单元中获取有效的第二存储单元的过程,可以参考步骤201中从多个存储单元中获取第一存储单元的实现过程。例如,对于存储有数据的存储单元的标志值递增或递减的场景,处理器可以将多个存储单元中标志值为极值的存储单元确定为第三存储单元。
也即是,在存储有数据的存储单元的标志值递增的场景下,即第二存储单元的更新后的标志值为第三存储单元的标志值与目标数值之和的情况下,处理器可以将多个存储单元中标志值最大的存储单元确定为第三存储单元。
在存储有数据的存储单元的标志值递增或递减的场景下,即在第二存储单元的更新后的标志值为第三存储单元的标志值与目标数值之差的情况下,处理器可以将多个存储单元中标志值最小的存储单元确定为第三存储单元。
步骤206、检测第二存储单元的剩余容量是否小于容量阈值。
处理器从多个存储单元中确定得到第二存储单元后,可以检测该第二存储单元的剩余容量。若处理器确定该第二存储单元的剩余容量大于等于容量阈值,则确定该第二存储单元还可以存储该第二数据和第二数据的目标地址,继而可以执行步骤207。若处理器确定该第二存储单元的剩余容量小于容量阈值,则确定该第二存储单元无法存储该第二数据和第二数据的目标地址,继而可以执行步骤208。
其中,该容量阈值可以是处理器预先存储的。且该容量阈值可以基于一个数据和该数据的目标地址所占用的存储区域的容量确定。例如,该容量阈值可以为4B。
步骤207、将第二数据和第二数据的目标地址写入第二存储单元。
若处理器确定该第二存储单元的剩余容量大于等于容量阈值,则可以直接将第二数据和第二数据的目标地址写入第二存储单元。
其中,第二数据的目标地址为第二EEPROM地址,或为RAM中与该第二EEPROM地址对应的RAM地址。并且,若第二数据的目标地址为该RAM地址,则处理器可以在将第二数据写入第二存储单元之前,基于该第二EEPROM地址和目标地址映射关系,确定第二EEPROM地址对应的RAM地址。
步骤208、将RAM的目标存储空间存储的多个数据,以及多个数据中每个数据的目标地址,均写入第二存储单元的下一个存储单元。
若处理器确定第二存储单元的剩余容量小于容量阈值,则可以将RAM的目标存储空间存储的多个数据,以及多个数据中每个数据的目标地址,均写入第二存储单元的下一个存储单元。
其中,该多个数据为该目标存储空间中存储的所有数据,该多个数据包括第二数据。每个数据的目标地址为数据在EEPROM中的EEPROM地址,或RAM中与数据的EEPROM地址对应的RAM地址。
可以理解的是,处理器在将数据写入该下一个存储单元之前可以先对该第二存储单元进行擦除处理,然后再将该多个数据与多个数据中每个数据的目标地址写入该下一个存储单元中。
步骤209、将下一个存储单元作为有效的存储单元。
在本申请实施例中,处理器可以通过更新下一个存储单元的标志值,以将该下一个存储单元作为多个存储单元中有效的存储单元。其中,下一个存储单元的更新后的标志值指示的有效状态为有效。
根据上述步骤208至步骤209的描述可知,处理器在有效的第二存储单元写满时,能够先将RAM的目标存储空间中的所有数据写入下一个存储单元,再更新该下一个存储单元的标志值,以使该下一个存储单元作为有效的存储单元。如此,相比于先更新下一个存储单元的标志值,再向该下一个存储单元写入多个数据的方式,可以避免在向该下一个存储单元写入数据的过程中,因嵌入式微控制器意外断电导致该下一个存储单元的标志值已经更新(即该下一个存储单元已经作为有效的存储单元),但是仅写入部分数据,从而导致嵌入式微控制器初始化后,处理器无法读取到断电前存储于RAM中的较为完整的数据的问题。
可以理解的是,若每个存储单元的标志值为第一数值或第二数值,则处理器可以将第二存储单元的下一个存储单元的标志值从第二数值更新为第一数值,并可以将第二存储单元的标志值从第一数值更新为第二数值。
若存储有数据的存储单元的标志值递增,则处理器可以将第二存储单元的下一个存储单元的标志值更新为第二存储单元的标志值与目标数值之和。若存储有数值的存储单元的标志值递减,则处理器可以将该下一个存储单元的标志值更新为第二存储单元的标志值减去目标数值所得到的差值。
其中,该目标数值可以是处理器预先存储的正整数,例如,该目标数值可以为1。
在本申请实施例中,处理器执行步骤207的过程可以包括:处理器获取目标FLASH地址,并将第二数据和第二数据的目标地址,写入第二存储单元中目标FLASH地址所指示的存储区域。
由于处理器每获取一个数据,均可以将该数据写入有效的存储单元中,未存储数据且地址最低的存储区域内,且处理器每向一个存储区域写入数据后,均可以记录该存储区域的FLASH地址,因此处理器可以将最近一次记录的第二存储单元中的一个FLASH地址的下一个FLASH地址,确定为目标FLASH地址。
可选的,对于多个存储单元中每个存储单元,处理器可以按照地址从低到高的顺序,记录该存储单元包括的各个存储区域的FLASH地址。此时,处理器可以基于第二存储单元中按序排列的多个存储区域的FLASH地址,确定该下一个FLASH地址。
或者,对于多个存储单元中每个存储单元,处理器可以记录该存储单元的开始地址,结束地址,以及该存储单元中每个存储区域的容量。然后,处理器可以根据第二存储单元的开始地址,结束地址,该容量,以及最近一次记录的第二存储单元中的一个FLASH地址,确定该下一个FLASH地址。
可以理解的是,此时若最近一次记录的第二存储单元中的一个FLASH地址为空,则该下一个FLASH地址为该第二存储单元的第一个存储单元的FLASH地址。
又或者,多个存储单元的地址连续,且多个存储单元按地址从低到高的顺序排列。处理器记录多个存储单元所组成的存储空间的开始地址,结束地址,以及该存储空间中每个存储区域的容量。然后,处理器可以根据该开始地址,结束地址,该容量,以及最近一次记录的第二存储单元中的一个FLASH地址,确定该下一个FLASH地址。
可以理解的是,此时若最近一次记录的第二存储单元中的一个FLASH地址为空,则该下一个FLASH地址为该存储空间的开始地址。
在本申请实施例中,处理器在将第二数据和第二数据的目标地址写入第二存储单元的过程中,可能会因为芯片本身有损坏或者芯片受到电磁干扰导致位翻转,从而导致写入第二存储单元中的数据和地址,与期望值(即第二数据和第二数据的目标地址)有所差异。
基于此,该处理器还可以在第二数据和第二数据的目标地址写入目标FLASH地址指示的存储区域后,读取目标FLASH地址指示的存储区中存储的第三数据和第三数据的目标地址,并在确定第二数据与第二数据不同,和/或,第二数据的目标地址与第三数据的目标地址不同的情况下,可以重复执行写入第二数据和第二数据的目标地址的操作,直至写入成功或者连续写入失败的次数大于次数阈值。如此,可以确保写入第二存储单元中的数据的准确性较高。
其中,该次数阈值可以是处理器预先存储的。该写入成功是指:处理器确定写入目标FLASH地址指示的存储区域的数据为第二数据,地址为第二数据的目标地址。
可以理解的是,若处理器100确定连续写入失败的次数大于次数阈值,则可以确定是芯片损坏(如内部电路损坏),继而可以发出提示信息,以提示用户送检维修。
可选的,处理器在将第二数据和第二数据的目标地址写入第二存储单元之前,还可以采用校验算法处理第二数据和该目标地址,以得到第二数据的校验值。然后,处理器可以将第二数据、该目标地址和该校验值,一起写入第二存储单元。如此,可以避免在处理器将该第二数据、该目标地址和该校验值写入第二存储单元中的过程中,因嵌入式微控制器意外断电,使得处理器写入的数据有误,而导致后续在嵌入式微控制器重新上电后,处理器依然将有误的数据写入RAM中的现象,从而可以确保在嵌入式微控制器初始化后,处理器写入RAM中的数据的准确性较高。
可以理解的是,处理器在执行步骤208的过程中,在将每个数据写入FLASH的下一个存储单元的过程,均可以参考将第二数据和第二数据的目标地址写入目标FLASH地址所指示的存储区域的过程。即在写入数据后可以进行比对,并且在写入前可以对数据和数据的目标地址进行校验以得到校验值,并将数据、数据的目标地址和校验值均写入存储单元。本申请实施例在此不再赘述。
以目标存储空间中的存储区域的容量为2B,存储单元中的存储区域的容量为4B,所需模拟的EEPROM的容量为nB,对本申请实施例提供的目标存储空间和每个存储单元进行示例性说明:
由于所需模拟的EEPROM的容量为nB,目标存储空间中的存储区域的容量为2B,因此目标存储空间中的存储区域的总数为n/2。即处理器从RAM中获取目标存储空间后,可以将该目标存储空间划分为n/2个存储区域。
假设每个存储单元的存储区域的总数比目标存储空间的存储区域的总数多m,那么参见图6,每个存储单元的存储区域(也可以称为存储行)的总数即为n/2+m。故而,每个存储单元的容量可以为(n/2+m)×4B,即处理器总共从FLASH中取出容量为K×(n/2+m)×4B的存储空间,用来模拟EEPROM。其中,m可以为大于等于1的整数。
可以理解的是,由于FLASH的最小擦除单位为页(Page),因此需要保证每个存储单元的容量为一页容量的整数倍。例如,假设每页的容量为p B,则需要保证(n/2+m)×4是p的整数倍。
由于每个存储单元的存储区域的总数比目标存储空间的存储区域的总数多m,因此每个存储单元的容量大于EEPROM的容量,故而可以避免EEPROM写满后,修改EEPROM中一个数据都需要切换至下一个存储单元。
可选的,K个存储单元的个数可以大于等于3,即多个存储单元的个数可以为至少三个。如此,可以进一步确保各个存储单元的使用寿命较长。
处理器在向FLASH中写数据时,是将一个存储单元写满后,再切换至下一个存储单元,即多个存储单元轮流存储数据。因此,在总的擦写次数不变的情况下,多个存储单元的个数越多,每个存储单元的擦写次数越少。相应的,每个存储单元的寿命就越长。
参见图6和图7,每个存储单元的第一个存储行可以用于存储该存储单元的标志值,标志值为无符号数据。第二个存储行可以用于存储该标志值的验证值。接下来的(n/2+m)-2个存储行可以存储待存储于EEPROM的数据、该数据的目标地址和该数据的校验值。
如(n/2+m)-2个存储行中的每个存储行的低16位可以保存2B的数据。每个存储行的高16位可以保存该数据的目标地址和校验值。可以理解的是,由于EEPROM的容量通常为4千字节(Kilobyte,KB),因此12位的存储区域便足以存储EEPROM地址,(n/2+m)-2个存储行中的每个存储行还剩余4位的存储区域。故而,该每个存储行的高4位可以存储该校验值。该每个存储行的高16位中除该高4位外剩余的12位可以用来存储该数据的EEPROM地址。
示例的,从图6和图7可以看出,第一个存储单元中存储有数据,该第一个存储单元的标志值为0xFFFFFFFE。假设存储单元的验证值为对该存储单元的标志值执行按位取反的操作后得到的,则如图6和图7所示,第一个存储单元的验证值可以为0x00000001。第二个存储单元至第K个存储单元均未存储有数据,因此该第二个存储单元至第K个存储单元中的每个存储单元的标志值与验证值均为0xFFFFFFFF。
假设多个存储单元中任一存储单元均未写入数据,目标地址为EEPROM地址,默认值为0xFFFFFFFF,目标数值为1,有效的存储单元为标志值最小的存储单元,且先不考虑数据的校验值,则如图7所示,处理器将获取到的数据写入RAM和FLASH的过程可以如下所述:
首先,处理器获取到EEPROM地址为0x0100的数据0x1234后,可以先将该数据0x1234,写入RAM中与该地址0x0100对应的存储区域。然后,处理器可以擦除多个存储单元中的第一个存储单元,并将该地址为0x0100和数据0x1234写入该第一个存储单元中的第三个存储行中。之后,处理器可以将该第一个存储单元的标志值更新为0xFFFFFFFE,并可以将该第一个存储单元的验证值更新为0x000000001。此时,该第一个存储单元即为有效的存储单元。其中,从图7可以看出,擦除后的第一个存储单元中每个存储行的高16位和低16位所存储的数值均为0xFFFF。0xFFFF表示未写入数据。
其次,处理器获取到EEPROM地址为0x0200的数据0x5678。处理器将数据0x5678,写入RAM中与该地址0x0200对应的存储区域。之后,处理器将地址0x0200和数据0x5678一起写入该第一个存储单元的第四个存储行。
之后,处理器获取到EEPROM地址为0x0100的数据。处理器可以将数据0xAB,写入RAM中与该地址0x0100对应的存储区域。此时,由于该数据0xAB占用8位的存储区域,因此处理器可以将该数据0xAB更新到该存储区域的低8位存储单元中,并保持该存储区域的高8位数据不变。即更新后的数据为0x12AB。之后,处理器可以将地址0x0100和数据0x12AB写入到第一个存储单元的第三个数据行。
如此不断的写入数据,直至该第一个存储单元写满,即第一个存储单元的所有存储行均存储有数据。然后,处理器下一次接收到数据和该数据的EEPROM地址后,可以先基于该EEPROM地址将该数据写入RAM。之后,处理器可以切换到下一个存储单元(即第二个存储单元)。此时,处理器可以擦除该下一个存储单元,并将RAM的目标存储空间中不为0xFFFF的数据,以及该数据的目标地址一起保存到该下一个存储单元的存储行中。最后,处理器再更新该下一个存储单元的标志值和验证值。当多个存储单元中的最后一个存储单元写满时,处理器可以自动切换到第一个存储单元。
以存储有数据的存储单元的标志值递减,存储单元的默认值为0xFFFFFFFF,存储单元的验证值为对该标志值执行按位取反操作后得到的为例,对处理器从多个存储单元中确定第一存储单元的过程进行示例性的说明。参见图8,该过程可以包括:
步骤A1、读取存储单元的标志值和验证值。
处理器可以在启动后,可以读取多个存储单元中每个存储单元的标志值和验证值。如,处理器可以按照多个存储单元的排列顺序,依次读取多个存储单元中每个存储单元的标志值和验证值。
步骤A2、检测该存储单元的标志值与验证值是否均为0xFFFFFFFF。
若处理器确定该存储单元的标志值与验证值均不是0xFFFFFFFF,则可以确定该存储单元中存储有数据,继而可以执行步骤A3。若处理器确定该存储单元的标志值与验证值均为0xFFFFFFFF,则可以确定该存储单元中未存储有数据,继而可以执行步骤A8。
步骤A3、检测读取到的标志值与验证值的异或运算的结果是否为0xFFFFFFFF。
若处理器确定该结果不是0xFFFFFFFF,则可以确定该标志值有误,即未通过验证,继而可以执行步骤A4。若处理器确定该结果为0xFFFFFFFF,则可以确定该存储单元中标志值准确,即通过验证,继而可以执行步骤A5。
由此可见,在本申请实施例中,处理器还可以根据验证值对存储单元的标志值进行验证。如此,可以确保确定的第一存储单元的准确性较高,从而可以确保初始化后写入RAM的数据的准确性较高。
步骤A4、执行第一中断处理程序,并检测第一中断处理程序的执行结果是否为继续检测。
若处理器确定该结果不是0xFFFFFFFF,则可以确定该标志值有误,继而可以向处理器执行第一中断处理程序。处理器执行第一中断处理程序后,可以得到第一中断处理程序的执行结果。该执行结果可以包括:继续检测或停止检测。若该执行结果为继续检测,则处理器可以执行步骤A8。若该执行结果为停止检测,则处理器可以结束操作,不再执行后续流程。
步骤A5、检测标志值是否小于第一参考值。
处理器确定该存储单元的标志值通过验证后,可以检测该标志值是否小于第一参考值。若处理器确定该标志值小于第一参考值,则可以执行步骤A6。若处理器确定该标志值大于等于第一参考值,则可以执行步骤A7。
其中,该第一参考值为在读取到该存储单元的标志值之前,所确定的最小的标志值。
步骤A6、将第一参考值更新为该标志值。
若处理器确定标志值小于第一参考值,则可以将该第一参考值更新为该标志值,即将该标志值作为第一参考值。
步骤A7、保持第一参考值不变。
若处理器确定标志值大于等于参考值,则可以保持第一参考值不变。
根据上述描述可知,第一参考值是一个变量。可以理解的是,对于按序排列的多个存储单元中第一个通过验证的存储单元,处理器可以将该存储单元的标志值直接确定为第一参考值,并结束操作。之后,处理器可以根据后续读取到的标志值,对该第一参考值进行更新。
步骤A8、检测该存储单元是否为多个存储单元中的最后一个存储单元。
在本申请实施例中,处理器在确定存储单元中未存储有数据后,或者在接收到用于指示继续检测的指令后,又或者在执行步骤A6或A7后,可以执行步骤A8。
若处理器确定该存储单元并非是最后一个存储单元,则可以继续执行步骤201。若处理器确定该存储单元是最后一个存储单元,则可以结束操作,并将当前的参考值所属的存储单元确定为第一存储单元。
以存储有数据的存储单元的标志值递增,存储单元的默认值为0x00000000,且存储单元的验证值为对该标志值执行按位取反操作后得到的为例,对处理器从多个存储单元中确定第一存储单元的过程进行示例性的说明,参见图10,该过程可以包括:
步骤B1、读取存储单元的标志值和验证值。
步骤B2、检测该存储单元的标志值与验证值是否均为0xFFFFFFFF。
步骤B3、检测读取到的标志值与验证值的异或运算的结果是否为0xFFFFFFFF。
步骤B4、执行第二中断处理程序,并检测第二中断处理程序的执行结果是否为继续检测。
可以理解的是,步骤B1至步骤B4的实现过程,可以参考步骤A1至步骤A4的实现过程,本申请实施例在此不再赘述。
步骤B5、检测标志值是否大于第二参考值。
若处理器确定标志值大于第二参考值,则可以执行步骤B6。若处理器确定该标志值小于等于第二参考值,则可以执行步骤B7。其中,该第二参考值为在读取到该存储单元的标志值之前,所确定的最大的标志值。
步骤B6、将第二参考值更新为该标志值。
若处理器确定标志值大于第二参考值,则可以将第二参考值更新为该标志值。
步骤B7、保持第二参考值不变。
若处理器确定标志值小于等于第二参考值,则可以保持第二参考值不变。
步骤B8、检测该存储单元是否为多个存储单元中的最后一个存储单元。
其中,步骤B8的实现过程可以参考步骤A8的实现过程,本申请实施例在此不再赘述。
参见图10,对处理器在初始化后,将第一存储单元中存储的第一数据写入RAM中的过程进行示例性的说明:
步骤S1、检测EEPROM模拟功能是否启用。
嵌入式微控制器在初始化后,处理器可以检测EEPROM模拟功能是否启用。若处理器检测到EEPROM模拟功能未启用,则可以结束操作,无需执行后续流程。若处理器检测到EEPROM模拟功能启用,则可以执行步骤S2。
步骤S2、将RAM的目标存储空间中各个存储区域所存储的数据均写为初始值。
处理器检测到EEPROM模拟功能启用后,可以擦除该目标存储空间,以将该目标存储空间的各个存储区域的均初始化为初始值。该初始值可以为0xFFFF。
步骤S3、获取有效的第一存储单元。
处理器可以采用上述步骤A1至步骤A8,或者采用上述步骤B1至步骤B8,从多个存储单元中获取第一存储单元。
步骤S4、读取第一存储单元中存储行存储的第一数据、第一数据的目标地址和校验值。
处理器确定第一存储单元后,即可依次读取该第一存储单元的多个存储行中,每个存储行所存储的第一数据、第一数据的目标地址和校验值。
步骤S5、检测校验功能是否启用。
若处理器确定校验功能启用,则可以执行步骤S6。若处理器确定校验功能未启用,则可以执行步骤S7。
步骤S6、基于校验值对第一数据和第一数据的目标地址进行校验,并检测是否校验成功。
处理器在确定校验功能启用后,可以基于第一数据,对第一数据和第一数据的目标地址进行校验,并确定是否校验成功。若处理器对第一数据和第一数据的目标地址校验成功,则可以执行步骤S7。若处理器对第一数据和第一数据的目标地址校验失败,则可以执行步骤S8。
步骤S7、将第一数据写入RAM的第一存储区域。
若处理器基于校验值对第一数据和第一数据的目标地址校验成功,则可以将第一数据写入RAM的第一存储区域。
步骤S8、展示提示消息,并检测是否接收到用于指示继续读取的操作。
若处理器基于校验值对第一数据和第一数据的目标地址校验失败,则可以展示提示信息。之后,若处理器接收到用于指示继续读取的操作,则可以继续执行步骤S4,即读取下一个存储行存储的第一数据、第一数据的目标地址和校验值。若处理器接收到用于指示停止工作的操作,则可以结束操作。
步骤S9、检测该存储行是否第一存储单元的最后一个存储行。
若处理器确定该存储行为最后一个存储行,则可以确定已经将第一存储单元中的数据均写入RAM中,继而可以结束操作。若处理器确定该存储行并非是最后一个存储行,则可以继续继续执行步骤S4,以读取下一个存储行存储的第一数据。
可以理解的是,本申请实施例提供的数据读写方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。例如,步骤205和步骤204可以同步执行;或者步骤205也可以在步骤204之前执行;又或者步骤207可以根据情况删除。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
综上所述,本申请实施例提供了一种数据读写方法,处理器能够将待存储于EEPROM的数据写入FLASH中有效的存储单元,由于FLASH具有非易失性,因此能够确保在嵌入式微控制器掉电后该数据不会丢失。由此,通过将数据存储在FLASH中可以达到存储在EEPROM中的效果。而在嵌入式微控制器初始化后,处理器能够将初始化前有效的存储单元中存储的数据写入RAM中以供处理器读取,由于RAM与EEPROM的读写方式相同,因此可以确保处理器通过访问RAM达到访问EEPROM的效果。由此可见,通过处理器对嵌入式微控制器自身所具有的FLASH和RAM所执行的数据读写操作,即可模拟实现EEPROM的功能,即实现数据的即时读写和掉电保存。而无需额外新增EEPROM,因此有效降低了嵌入式微控制器的体积、硬件成本、硬件复杂度和功耗。并且,由于FLASH包括多个存储单元,因此可以确保各个存储单元的使用寿命较长。
此外,处理器在有效的第二存储单元的剩余容量小于容量阈值后,能够先将RAM中存储的多个数据,及各个数据的目标地址写入第二存储单元的下一个存储单元,再将该下一个存储单元作为有效的存储单元。如此,可以确保在向该下一个存储单元写入数据的过程中,即使嵌入式微控制器意外断电,在嵌入式微控制器初始化后,处理器也能够从初始化后有效的存储单元中读取到断电前存储于RAM中的较为完整的数据。
本申请实施例还提供了一种嵌入式微控制器,该嵌入式微控制器可以用于执行上述方法实施例提供的数据读写方法。参见图1和图2,该嵌入式微控制器可以包括:处理器110,RAM120和FLASH130,该FLASH130包括按序排列的多个存储单元。该处理器110用于:
在嵌入式微控制器初始化后,将多个存储单元中第一存储单元存储的第一数据写入RAM,以供处理器读取,其中第一存储单元为嵌入式微控制器初始化前多个存储单元中有效的存储单元;
获取到待存储于EEPROM的第二数据后,将第二数据写入RAM,并从多个存储单元中获取有效的第二存储单元;
若第二存储单元的剩余容量小于容量阈值,则将RAM中存储的多个数据,以及多个数据中每个数据的目标地址均写入第二存储单元的下一个存储单元;
将下一个存储单元作为多个存储单元中有效的存储单元;
其中,多个数据包括第二数据,每个数据的目标地址为数据在EEPROM中的EEPROM地址,或RAM中与数据的EEPROM地址对应的RAM地址。
可选的,每个存储单元均存储有:标志值,标志值用于指示存储单元是否存储有数据,且任意两个相邻的存储单元的标志值的差值为目标数值。该处理器110还可以用于:
将多个存储单元中标志值为极值的存储单元确定为第二存储单元。
可选的,极值为最小值;该处理器110可以用于:
更新下一个存储单元的标志值,下一个存储单元的更新后的标志值为第二存储单元的标志值减去目标数值所得到的数值。
可选的,每个存储单元还存储有:标志值的验证值,验证值基于标志值生成。该处理器110可以用于:
对于多个存储单元中的每个存储单元,基于存储单元的验证值,对存储单元的标志值进行验证;
若存储单元的标志值通过验证,且存储单元的标志值为多个存储单元的标志值的最小值,则将存储单元确定为第二存储单元。
可选的,第一存储单元还存储有第一数据的校验值,校验值是采用校验算法对第一数据进行处理得到的。该处理器110可以用于:
根据校验值对第一数据进行校验;
若校验成功,则将第一数据写入RAM。
综上所述,本申请实施例提供了一种嵌入式微控制器,处理器能够将待存储于EEPROM的数据写入FLASH中有效的存储单元,由于FLASH具有非易失性,因此能够确保在嵌入式微控制器掉电后该数据不会丢失。由此,通过将数据存储在FLASH中可以达到存储在EEPROM中的效果。而在嵌入式微控制器初始化后,处理器能够将初始化前有效的存储单元中存储的数据写入RAM中以供处理器读取,由于RAM与EEPROM的读写方式相同,因此可以确保处理器通过访问RAM达到访问EEPROM的效果。由此可见,通过处理器对嵌入式微控制器自身所具有的FLASH和RAM所执行的数据读写操作,即可模拟实现EEPROM的功能,即实现数据的即时读写和掉电保存。而无需额外新增EEPROM,因此有效降低了嵌入式微控制器的体积、硬件成本、硬件复杂度和功耗。并且,由于FLASH包括多个存储单元,因此可以确保各个存储单元的使用寿命较长。
此外,处理器在有效的第二存储单元的剩余容量小于容量阈值后,能够先将RAM中存储的多个数据,及各个数据的目标地址写入第二存储单元的下一个存储单元,再将该下一个存储单元作为有效的存储单元。如此,可以确保在向该下一个存储单元写入数据的过程中,即使嵌入式微控制器意外断电,在嵌入式微控制器初始化后,处理器也能够从初始化后有效的存储单元中读取到断电前存储于RAM中的较为完整的数据。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现如上述方法实施例提供的数据读写方法,如图3或图4所示的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得该计算机执行上述方法实施例提供的数据读写方法,如图3或图4所示的方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
在本申请的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本申请中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (15)
1.一种数据读写方法,其特征在于,应用于嵌入式微控制器的处理器,所述嵌入式微控制器还包括:随机存取存储器RAM和闪速存储器FLASH,所述FLASH包括按序排列的多个存储单元;所述方法包括:
在所述嵌入式微控制器初始化后,将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,以供处理器读取,其中所述第一存储单元为所述嵌入式微控制器初始化前所述多个存储单元中有效的存储单元;
获取到待存储于EEPROM的第二数据后,将所述第二数据写入所述RAM,并从所述多个存储单元中获取有效的第二存储单元;
若所述第二存储单元的剩余容量小于容量阈值,则将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元;
将所述下一个存储单元作为所述多个存储单元中有效的存储单元;
其中,所述多个数据包括所述第二数据,每个所述数据的目标地址为所述数据在所述EEPROM中的EEPROM地址,或所述RAM中与所述数据的EEPROM地址对应的RAM地址。
2.根据权利要求1所述的方法,其特征在于,每个所述存储单元均存储有:标志值,所述标志值用于指示所述存储单元是否存储有数据,且任意两个相邻的存储单元的标志值的差值为目标数值;在将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元之前,所述方法还包括:
将所述多个存储单元中标志值为极值的存储单元确定为所述第二存储单元。
3.根据权利要求2所述的方法,其特征在于,所述极值为最小值;将所述下一个存储单元作为所述多个存储单元中有效的存储单元,包括:
更新所述下一个存储单元的标志值,所述下一个存储单元的更新后的标志值为所述第二存储单元的标志值减去所述目标数值所得到的数值。
4.根据权利要求2所述的方法,其特征在于,每个所述存储单元还存储有:所述标志值的验证值,所述验证值基于所述标志值生成;所述将所述多个存储单元中标志值为极值的存储单元确定为所述第二存储单元,包括:
对于所述多个存储单元中的每个存储单元,基于所述存储单元的验证值,对所述存储单元的标志值进行验证;
若所述存储单元的标志值通过验证,且所述存储单元的标志值为所述多个存储单元的标志值的最小值,则将所述存储单元确定为所述第二存储单元。
5.根据权利要求1至4任一所述的方法,其特征在于,所述第一存储单元还存储有所述第一数据的校验值,所述校验值是采用校验算法对所述第一数据进行处理得到的;所述将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,包括:
根据所述校验值对所述第一数据进行校验;
若校验成功,则将所述第一数据写入所述RAM。
6.根据权利要求1至4任一所述的方法,其特征在于,所述将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,包括:
将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM的第一存储区域;
所述将所述第二数据写入所述RAM,包括:
将所述第二数据写入所述RAM的第二存储区域;
其中,所述第一存储区域的地址基于所述第一数据在所述EEPROM中的第一EEPROM地址确定,所述第二存储区域的地址基于所述第二数据在所述EEPROM中的第二EEPROM地址确定。
7.根据权利要求6所述的方法,其特征在于,所述第一存储区域和所述第二存储区域均位于所述RAM的目标存储空间内,所述目标存储空间的容量小于所述RAM的存储空间的容量;所述将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元,包括:
将所述RAM的目标存储空间所存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元。
8.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
若所述第二存储单元的剩余容量大于等于容量阈值,则将所述第二数据和所述第二数据的目标地址写入所述第二存储单元。
9.根据权利要求1至4任一所述的方法,其特征在于,所述将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,包括:
若所述嵌入式微控制器的EEPROM模拟功能启用,则将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM。
10.一种嵌入式微控制器,其特征在于,所述嵌入式微控制器包括:处理器,随机存取存储器RAM和闪速存储器FLASH,所述FLASH包括按序排列的多个存储单元;所述处理器用于:
在所述嵌入式微控制器初始化后,将所述多个存储单元中第一存储单元存储的第一数据写入所述RAM,以供处理器读取,其中所述第一存储单元为所述嵌入式微控制器初始化前所述多个存储单元中有效的存储单元;
获取到待存储于EEPROM的第二数据后,将所述第二数据写入所述RAM,并从所述多个存储单元中获取有效的第二存储单元;
若所述第二存储单元的剩余容量小于容量阈值,则将所述RAM中存储的多个数据,以及所述多个数据中每个数据的目标地址均写入所述第二存储单元的下一个存储单元;
将所述下一个存储单元作为所述多个存储单元中有效的存储单元;
其中,所述多个数据包括所述第二数据,每个所述数据的目标地址为所述数据在所述EEPROM中的EEPROM地址,或所述RAM中与所述数据的EEPROM地址对应的RAM地址。
11.根据权利要求10所述的嵌入式微控制器,其特征在于,每个所述存储单元均存储有:标志值,所述标志值用于指示所述存储单元是否存储有数据,且任意两个相邻的存储单元的标志值的差值为目标数值;所述处理器还用于:
将所述多个存储单元中标志值为极值的存储单元确定为所述第二存储单元。
12.根据权利要求11所述的嵌入式微控制器,其特征在于,所述极值为最小值;所述处理器用于:
更新所述下一个存储单元的标志值,所述下一个存储单元的更新后的标志值为所述第二存储单元的标志值减去所述目标数值所得到的数值。
13.根据权利要求12所述的嵌入式微控制器,其特征在于,每个所述存储单元还存储有:所述标志值的验证值,所述验证值基于所述标志值生成;所述处理器用于:
对于所述多个存储单元中的每个存储单元,基于所述存储单元的验证值,对所述存储单元的标志值进行验证;
若所述存储单元的标志值通过验证,且所述存储单元的标志值为所述多个存储单元的标志值的最小值,则将所述存储单元确定为所述第二存储单元。
14.根据权利要求10至13任一所述的嵌入式微控制器,其特征在于,所述第一存储单元还存储有所述第一数据的校验值,所述校验值是采用校验算法对所述第一数据进行处理得到的;所述处理器用于:
根据所述校验值对所述第一数据进行校验;
若校验成功,则将所述第一数据写入所述RAM。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-9中任一项所述的数据读写方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311140151.2A CN117289860A (zh) | 2023-09-05 | 2023-09-05 | 嵌入式微控制器及其数据读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311140151.2A CN117289860A (zh) | 2023-09-05 | 2023-09-05 | 嵌入式微控制器及其数据读写方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117289860A true CN117289860A (zh) | 2023-12-26 |
Family
ID=89243509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311140151.2A Pending CN117289860A (zh) | 2023-09-05 | 2023-09-05 | 嵌入式微控制器及其数据读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117289860A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012355A (zh) * | 2024-04-10 | 2024-05-10 | 上海朔集半导体科技有限公司 | 模拟eeprom及其控制方法、模拟控制器、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2915828A1 (fr) * | 2007-05-02 | 2008-11-07 | St Microelectronics Sa | Memoire non volatile a secteurs auxiliaires tournants |
US20140052896A1 (en) * | 2012-08-17 | 2014-02-20 | Infineon Technologies Ag | System and method for emulating an eeprom in a non-volatile memory device |
CN111176579A (zh) * | 2019-12-30 | 2020-05-19 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN114756179A (zh) * | 2022-06-13 | 2022-07-15 | 武汉杰开科技有限公司 | 基于模拟eeprom的数据写入、读取及管理方法 |
CN116301601A (zh) * | 2023-02-16 | 2023-06-23 | 上海东软载波微电子有限公司 | 嵌入式系统内置Flash模拟EEPROM的数据存储方法及装置 |
-
2023
- 2023-09-05 CN CN202311140151.2A patent/CN117289860A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2915828A1 (fr) * | 2007-05-02 | 2008-11-07 | St Microelectronics Sa | Memoire non volatile a secteurs auxiliaires tournants |
US20140052896A1 (en) * | 2012-08-17 | 2014-02-20 | Infineon Technologies Ag | System and method for emulating an eeprom in a non-volatile memory device |
CN111176579A (zh) * | 2019-12-30 | 2020-05-19 | 航天信息股份有限公司 | 使用norflash模拟eeprom的方法 |
CN114756179A (zh) * | 2022-06-13 | 2022-07-15 | 武汉杰开科技有限公司 | 基于模拟eeprom的数据写入、读取及管理方法 |
CN116301601A (zh) * | 2023-02-16 | 2023-06-23 | 上海东软载波微电子有限公司 | 嵌入式系统内置Flash模拟EEPROM的数据存储方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012355A (zh) * | 2024-04-10 | 2024-05-10 | 上海朔集半导体科技有限公司 | 模拟eeprom及其控制方法、模拟控制器、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4059472B2 (ja) | メモリカード及びメモリコントローラ | |
US8453021B2 (en) | Wear leveling in solid-state device | |
US7594135B2 (en) | Flash memory system startup operation | |
US6977847B2 (en) | Detecting partially erased units in flash devices | |
US6601132B2 (en) | Nonvolatile memory and method of writing data thereto | |
CN105144302A (zh) | 存储器装置中的错误校正操作 | |
US8756398B2 (en) | Partitioning pages of an electronic memory | |
JP2002351685A (ja) | 不揮発性メモリのデータ更新方法及び制御装置 | |
CN107239411B (zh) | 一种车载控制器内存管理方法及系统 | |
WO2007044541A1 (en) | Flash memory management | |
WO2007010829A1 (ja) | 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 | |
TWI554886B (zh) | 資料保護方法、記憶體控制電路單元及記憶體儲存裝置 | |
CN116909487B (zh) | 数据读写方法、芯片、嵌入式微控制器和智能终端设备 | |
CN117289860A (zh) | 嵌入式微控制器及其数据读写方法 | |
JP4775969B2 (ja) | 不揮発性記憶装置 | |
US8438327B2 (en) | Recovery scheme for an emulated memory system | |
KR100692982B1 (ko) | 배드 블럭 정보가 기록된 난드 타입의 플래시 메모리 | |
US8010854B2 (en) | Method and circuit for brownout detection in a memory system | |
JP2011018371A (ja) | メモリ記憶装置 | |
CN106297896B (zh) | 存储器管理方法、存储器储存装置及存储器控制电路单元 | |
JP4332108B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
CN109683803B (zh) | 一种数据处理方法及装置 | |
JP3314719B2 (ja) | フラッシュeepromとその試験方法 | |
CN118034614A (zh) | 一种fpga片上非易失性存储器的读写方法及装置 | |
JP2005141417A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
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 |