CN112732309B - Flash存储器的更新方法、装置和电子设备 - Google Patents
Flash存储器的更新方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112732309B CN112732309B CN202110049488.7A CN202110049488A CN112732309B CN 112732309 B CN112732309 B CN 112732309B CN 202110049488 A CN202110049488 A CN 202110049488A CN 112732309 B CN112732309 B CN 112732309B
- Authority
- CN
- China
- Prior art keywords
- variable
- storage space
- target
- address
- mapping
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供一种Flash存储器的更新方法、装置和电子设备,该方法包括,获取需要更新的目标变量的地址、长度和更新值;根据目标变量的地址和长度在标定区划分的多个子存储空间中查找出存储目标变量的子存储空间(即目标存储空间);将目标存储空间的变量复制至RAM存储器的映射存储空间;将映射存储空间中目标变量的变量值修改为更新值;向Flash存储器的备份区刷写标定区的非目标存储空间的变量和上述映射存储空间的变量,将备份区的变量刷写至标定区。当目标变量的数量较少时,本申请的更新方法仅占用相当于少量目标存储空间大小的RAM存储空间,不需要占用相当于整个标定区大小的RAM存储空间,减少更新Flash标定区时所占用的RAM存储空间。
Description
技术领域
本发明涉及单片机技术领域,特别涉及一种Flash存储器的更新方法、装置和电子设备。
背景技术
ECU(Electronic Control Unit,电子控制单元)在控制车辆运行时,经常需要用到一些根据受控车辆各部件的特性预先标定的参数,这些参数一般以变量的形式存储在Flash存储器的标定区(指代Flash存储器中预先划分的一块存储空间)中,ECU可以从标定区读取所需变量的变量值,以此来控制车辆。
在车辆的调试和测试阶段,根据调试和测试结果,可能需要更新其中部分参数的数值,也就是需要修改Flash存储器所存储的部分变量的变量值。
Flash存储器的特性是同一个地址只能写一次,要想再次写入需要先擦除。擦除的时候只能按照block块进行擦除,一般一个Block块的大小是256KB或者更大。
现有的一种修改标定区变量的方式是,擦除整个标定区后,上位机将标定区所要存储的所有数据分段传输至ECU,刷写进Flash,这其中上位机向ECU传输数据的时间比较长,一般在30~60s。
在另一种修改方法中,ECU可以将标定区存储的所有变量值复制到RAM存储器中,然后直接修改RAM存储器中指定变量的变量值,修改完毕后,擦除Flash存储器的标定区,然后将RAM存储器存储的修改后的变量值,以及所有未修改的变量值一并写入Flash存储器的标定区。
相比于前一种修改方法,第二种修改方法中上位机不需要将所有的标定区内容传输进ECU刷写,只需要传输要修改的变量内容,缩短了传输时间。
第二种修改方法的问题在于,每次修改时,即使只修改一个或少量的几个变量,都需要使用RAM存储器中和Flash存储器的标定区同等大小的存储空间来保存标定区的所有变量,占用的RAM存储器的存储资源过多,导致ECU无法运行其他程序。
发明内容
针对上述现有技术存在的问题,本申请实施例提供了一种Flash存储器的更新方法、装置和电子设备,以减少更新标定区的变量值时所占用的RAM存储器的存储空间。
本申请第一方面提供一种Flash存储器的更新方法,包括:
获取目标变量的地址、长度和更新值;其中,所述目标变量指代需要更新的变量;所述目标变量的地址指代所述目标变量在Flash存储器的标定区的起始存储地址;
根据所述目标变量的地址和长度,在所述标定区中查找出目标存储空间;其中,所述标定区按预设的拆分容量划分有多个子存储空间,所述目标存储空间指代存储有所述目标变量的子存储空间;
将所述目标存储空间包含的变量复制至RAM存储器中划分的映射存储空间,并将所述目标变量的虚拟地址映射至所述映射存储空间;
将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值;
向所述Flash存储器的备份区刷写所述标定区的非目标变量,以及所述RAM存储器的所述映射存储空间的变量;其中,所述非目标变量指代对应的虚拟地址未被映射至所述映射存储空间的变量;
完成对所述备份区的刷写后,向所述标定区刷写所述备份区存储的所有变量,并将所述目标变量的虚拟地址映射至所述目标存储空间,以完成对所述标定区存储的所述目标变量的更新。
可选的,所述拆分容量为2KB。
可选的,所述将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值,包括:
在所述目标存储空间和所述映射存储空间之间确定存储地址映射关系;
根据所述目标变量的地址和所述存储地址映射关系,确定出所述目标变量的映射地址;其中,所述映射地址指代所述目标变量在所述RAM存储器的起始存储地址;
将所述映射地址上存储的所述目标变量的变量值修改为所述更新值。
可选的,所述向所述标定区刷写所述备份区存储的所有变量之后,还包括:
若所述标定区刷写失败,擦除所述标定区存储的所有变量,并再次执行所述向所述标定区刷写所述备份区存储的所有变量步骤。
可选的,所述向所述标定区刷写所述备份区存储的所有变量,包括:
擦除所述标定区存储的所有变量;
根据所述备份区和所述标定区之间预先建立的地址映射关系,将所述备份区存储的所有变量写入所述标定区中与备份地址对应的地址;其中,所述备份地址指代每个所述变量在所述备份区的起始存储地址。
本申请第二方面提供一种Flash存储器的更新装置,包括:
获取单元,用于获取目标变量的地址、长度和更新值;其中,所述目标变量指代需要更新的变量;所述目标变量的地址指代所述目标变量在Flash存储器的标定区的起始存储地址;
查找单元,用于根据所述目标变量的地址和长度,在所述标定区中查找出目标存储空间;其中,所述标定区按预设的拆分容量划分有多个子存储空间,所述目标存储空间指代存储有所述目标变量的子存储空间;
复制单元,用于将所述目标存储空间包含的变量复制至RAM存储器中划分的映射存储空间,并将所述目标变量的虚拟地址映射至所述映射存储空间;
修改单元,用于将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值;
刷写单元,用于向所述Flash存储器的备份区刷写所述标定区的非目标变量,以及所述RAM存储器的所述映射存储空间的变量;其中,所述非目标变量指代对应的虚拟地址未被映射至所述映射存储空间的变量;
所述刷写单元,用于完成对所述备份区的刷写后,向所述标定区刷写所述备份区存储的所有变量,并将所述目标变量的虚拟地址映射至所述目标存储空间,以完成对所述标定区存储的所述目标变量的更新。
可选的,所述修改单元将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值时,具体用于:
在所述目标存储空间和所述映射存储空间之间确定存储地址映射关系;
根据所述目标变量的地址和所述存储地址映射关系,确定出所述目标变量的映射地址;其中,所述映射地址指代所述目标变量在所述RAM存储器的起始存储地址;
将所述映射地址上存储的所述目标变量的变量值修改为所述更新值。
可选的,所述更新装置还包括:
恢复单元,用于若所述标定区刷写失败,擦除所述标定区存储的所有变量,并再次执行所述向所述标定区刷写所述备份区存储的所有变量步骤。
可选的,所述刷写单元向所述标定区刷写所述备份区存储的所有变量时,具体用于:
擦除所述标定区存储的所有变量;
根据所述备份区和所述标定区之间预先建立的地址映射关系,将所述备份区存储的所有变量写入所述标定区中与备份地址对应的地址;其中,所述备份地址指代每个所述变量在所述备份区的起始存储地址。
本申请第三方面提供一种电子设备,包括存储器和处理器;
其中,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现本申请第一方面任意一项所提供的Flash存储器的更新方法。
本申请提供一种Flash存储器的更新方法、装置和电子设备,该方法包括,获取需要更新的目标变量的地址、长度和更新值;根据目标变量的地址和长度在标定区划分的多个子存储空间中查找出存储目标变量的子存储空间(即目标存储空间);将目标存储空间的变量复制至RAM存储器的映射存储空间;将映射存储空间中目标变量的变量值修改为更新值;向Flash存储器的备份区刷写标定区的非目标存储空间的变量和上述映射存储空间的变量,将备份区的变量刷写至标定区。当目标变量的数量较少时,本申请的更新方法仅占用相当于少量目标存储空间大小的RAM存储空间,不需要占用相当于整个标定区大小的RAM存储空间,减少更新Flash标定区时所占用的RAM存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种Flash存储器的更新方法的流程图;
图2为本申请实施例中Flash存储器中标定区和备份区示意图;
图3为本申请实施例提供的一种Flash存储器的更新装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请涉及Flash存储器和RAM存储器,其中,Flash存储器是一种非易失性存储器,具有和常见的计算机硬盘相似的存储特性,具体的,要向Flash存储器刷写数据,需要先擦除后写入,一次写入最小的单元一般是4个字节,一次擦除最小的单元是块(block),根据刷写Flash存储器的单片机的不同,每个块的大小也不同,一般一个块的大小可以是16KB、32KB、64KB、256KB等,在车辆控制领域,常用的ECU所支持的块的大小一般是256KB。也就是说,ECU需要更新Flash存储器的某个地址处存储的数据时,需要先擦除该地址所在的256KB的存储空间,然后才能写入新的数据。
在车辆控制系统中,RAM存储器(RandomAccess Memory,又称为随机存取存储器)是一种用于和ECU直接进行数据交互的易失性存储器,ECU可以直接修改RAM存储器中指定地址的数据,而不需要擦除后写入。
例如,若RAM存储器存储有10个变量值,ECU可以直接定向修改其中某一个变量值,而不影响其他变量值,而对于Flash存储器,若ECU要更新Flash存储器存储的10个变量值中的某一个,则需要先从Flash存储器擦除这10个变量值,然后再写入更新后的变量值以及其他不需要更新的变量值。
为了便于理解本申请所提供的方案,首先结合一个具体的例子说明现有的更新方法存在的问题。
假设一个Flash存储器的标定区的大小为256KB,即标定区共存储有256KB的数据。当需要修改标定区所存储的某一个或者某几个变量值的时候,例如,需要修改的变量为变量A,标定区原本存储的变量A的变量值为41,现在需要将其修改为52。现有的更新方法需要将标定区的所有256KB的数据,直接复制到RAM存储器中,显然这就需要占用RAM存储器中256KB的存储空间。
由此可以看出,现有的更新Flash存储器中变量值的方法每次更新都需要占用RAM存储器中较大的存储空间,而ECU运行的各个程序都需要使用RAM,ECU所配置的RAM存储器的存储空间较小,即RAM存储资源属于稀缺的存储资源,而ECU运行的各个程序都需要使用RAM存储器中一定的存储空间,现有的这种更新方法由于需要占用RAM存储器中较大的存储空间,会导致ECU无法运行其他程序。
针对上述现有技术的问题,本申请提供一种Flash存储器的更新方法,请参考图1,该更新方法可以包括如下步骤:
S101、获取目标变量的地址、长度和更新值。
其中,目标变量指代需要更新的变量。
目标变量的长度,可以理解为目标变量的字节数,例如,保存一个目标变量的需要占用20个字节,则该目标变量的长度为20字节。
目标变量的地址指代目标变量在Flash存储器的标定区的起始存储地址。例如,目标变量的需要占用连续的20个字节,在Flash存储器的标定区中,该变量存储在标定区的第20个字节至第39个字节,那么上述目标变量的地址就是Flash存储器的第20个字节。
目标变量的更新值,是指,将目标变量更新后,目标变量的变量值。假设更新前目标变量的变量值为20,现在需要将目标变量的变量值变更为30,30就是步骤S101中所述的目标变量的更新值。更新值一般可以由用户指定。
需要说明的是,本申请所提供的更新方法可以一次更新标定区的一个或多个变量的变量值,因此,目标变量的数量可以是多个,步骤S101中获取的,可以是每一个需要更新的目标变量的地址、长度和更新值。
在步骤S101中,上位机可以向车辆控制系统的ECU发送Flash存储器的更新请求,随后ECU启动bootloader(车辆控制系统中固有的一种引导加载程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态),然后上位机向ECU发送UDS(Unified Diagnostic Services,统一诊断服务)协议中定义的数据报文2E,该数据报文可以携带上述目标变量的地址、长度和更新值,由此,ECU可以基于收到的数据报文执行本申请所提供的更新方法。
UDS诊断协议是在汽车电子ECU环境下广泛使用的一种诊断通信协议,目前,这种通信协议被普遍应用于多种车辆的ECU中,用于辅助ECU控制。
S102、根据目标变量的地址和长度,在标定区中查找出目标存储空间。
其中,标定区按预设的拆分容量划分有多个子存储空间,目标存储空间指代存储有目标变量的子存储空间。
上述拆分容量可以根据实际情况设定,例如可以设定拆分容量为2KB,相对的,标定区也就被划分为多个2KB大小的子存储空间,若标定区的大小为256KB,那么最终可以划分得到128个子存储空间。
当有多个需要更新的目标变量时,每一个存储有目标变量的变量值的子存储空间,都是目标存储空间。
需要说明的是,一个变量的变量值可能分别存储在相邻的两个子存储空间中,这种情况下,这两个子存储空间都是目标存储空间。
可以理解的,每一个子存储空间均包含标定区中的若干个字节,如一个2KB大小的子存储空间,包含标定区中2048(2×1024)个字节,因此,在步骤S102中,针对每一个目标变量,只需要确定该目标变量的起始存储地址所属的子存储空间,然后根据目标变量的长度判断该目标变量的末尾存储地址所属的子存储空间,若目标变量的起始存储地址和末尾存储地址位于同一个子存储空间A内,则子存储空间A就是保存这个目标变量的目标存储空间,若目标变量的起始存储地址和末尾存储地址分别位于两个不同的子存储空间B1和B2中,将B1和B2均确定为保存这个目标变量的目标存储空间。
S103、将目标存储空间包含的变量复制至RAM存储器中划分的映射存储空间,并将目标变量的虚拟地址映射至映射存储空间。
步骤S103,也可以理解为,将目标存储空间映射到RAM中。步骤S103可以利用MMU(MemoryManagementUnit,内存管理单元),或者Overlay模块(一种现有的存储器管理程序)实现。
可选的,RAM中可以预先设定一个固定大小专门用于更新标定区的变量的存储空间,记为更新区,更新区的大小可以根据实际情况设定,如可以设定为64KB,或者设定为32KB。相应的,在步骤S103中,可以在更新区中确定出一块连续的、且大小等于目标存储空间的大小的存储空间作为映射存储空间,如目标存储空间是一个2KB大小的存储空间,那么在步骤S103中可以在RAM的更新区中同样确定出一个2KB的存储空间作为映射存储空间,然后将前述目标存储空间所存储的每一个变量均复制到映射存储空间中。
可以理解的,通过上述复制,RAM的映射存储空间中同样保存了前述需要更新的目标变量,并且此时目标变量的变量值为更新前的值。
可选的,在其他实施例中,也可以不预先划分固定大小的更新区,而是在需要执行步骤S103时,临时在RAM存储器的可用的存储空间中,确定出一块连续的、且大小等于目标存储空间的大小的存储空间作为映射存储空间。
在完成上述变量的复制之后,步骤S103中还需要将目标变量的虚拟地址映射至映射存储空间。
具体的,目标变量的虚拟地址和物理地址的映射关系可以记录在前述MMU或者Overlay模块中,在执行步骤S103之前,目标变量的虚拟地址(假设为0x80000001)所映射的物理地址,是目标变量在Flash存储器中的起始存储地址(假设为0x00080001),而将目标变量的虚拟地址映射至映射存储空间,实质就是,修改MMU或者Overlay模块中目标变量的虚拟地址和物理地址的映射关系,使得目标变量的虚拟地址,映射至目标变量在上述映射存储空间,也就是在RAM存储器中的起始存储地址(假设为0x40000001),由此,在后续步骤中可以直接对目标变量执行赋值操作,从而修改RAM存储器中存储的目标变量的值。
S104、将映射存储空间包含的目标变量的变量值修改为更新值。
步骤S104的具体执行过程可以包括:
在目标存储空间和映射存储空间之间确定存储地址映射关系,即确定Flash存储器的目标存储空间的每个字节,和RAM存储器的映射存储空间的每个字节之间的对应关系。
上述映射关系可以由MMU或Overlay确定。
根据目标变量的地址和存储地址映射关系,确定出目标变量的映射地址;其中,映射地址指代目标变量的变量值在RAM存储器的起始存储地址;
如前文所述,目标变量在Flash存储器中的起始存储地址,是目标存储空间中的某个字节,因此,在确定出存储地址映射关系后,可以根据该映射关系确定出Flash存储器中目标变量的起始存储地址在RAM的映射存储空间中对应的字节,这个字节就是RAM存储器中目标变量的起始存储地址,也就是映射地址。
将映射地址上存储的目标变量的变量值修改为更新值。
RAM存储器中存储的变量的变量值可以由计算机程序直接修改,具体的修改方法可以参考相关的现有技术,此处不再详述。
需要说明的是,步骤S101至步骤S104所述的过程,可以由车辆控制系统中的ECU执行,也可以将ECU和上位机相连接,然后由上位机执行。
由上位机执行上述流程时,上位机可以在完成步骤S104后向用户展示更新结果,换言之,也就是展示更新后RAM存储器中目标变量的变量值,若步骤S104执行成功,则步骤S104结束后RAM存储器中的目标变量的变量值,应当是前述步骤S101中用户指定的更新值。也就是说,步骤S104执行结束后,映射存储空间所存储的是更新后的目标变量。
S105、向Flash存储器的备份区刷写标定区的非目标变量,以及RAM存储器的映射存储空间的变量。
其中,非目标变量指代对应的虚拟地址未被映射至映射存储空间的变量,也就是不需要更新的变量,Flash存储器中未存储目标变量的子存储空间记为非目标存储空间,可以看出,非目标存储空间存储的所有变量均为非目标变量,因此,步骤S105也可以理解为,将Flash存储器的非目标存储空间存储的变量刷写至备份区,以及,将RAM存储器的映射存储空间的变量刷写至备份区。
其中,非目标存储空间指代标定区中除目标存储空间以外的子存储空间。
备份区是Flash存储器中预先划分的一块和标定区的大小相同的存储空间,同样的,备份区也划分有多个子存储空间,子存储空间的大小和数量均与标定区一致。也就是说,标定区的每一个子存储空间,均在备份区中均有一个对应的子存储空间。
基于Flash存储器的特性,步骤S105可以包括两部分,即:
首先擦除整个备份区原有的数据,擦除成功后,将标定区的每一个非目标存储空间的变量均写入备份区中对应的子存储空间,同时,将RAM存储器中每一个映射存储空间的变量,均写入备份区中和目标存储空间相对应的子存储空间。
如前文所述,步骤S104执行结束后,映射存储空间所存储的是更新后的目标变量,因此,步骤S105执行结束后,备份区所存储的变量包括,标定区中每一个非目标变量(指代不需要更新的变量,也就是除步骤S101中的目标变量以外的其他变量),以及RAM存储器中的更新后的目标变量。
S106、完成对备份区的刷写后,向标定区刷写备份区存储的所有变量,并将目标变量的虚拟地址映射至目标存储空间。
步骤S106执行成功后,就完成对标定区存储的目标变量的更新。
在步骤S103中目标变量的虚拟地址所映射的物理地址被修改为RAM存储器中的地址,因此,在完成对目标变量的更新之后,需要将目标变量的虚拟地址映射至目标存储空间,也就是将目标变量的虚拟地址所映射的物理地址,从目标变量在RAM存储器中的起始存储地址修改为目标变量在Flash存储器中的起始存储地址。
可选的,若在执行步骤S106的过程中,由于突发的异常情况导致对标定区的刷写失败,例如,在擦除标定区的过程中,或者在向标定区写入数据的过程中ECU突然断电,可以在异常情况消除后,擦除标定区存储的所有变量,然后再次执行步骤S106,也就是重新将备份区的变量写入标定区。
通过这种方式,可以确保即使在刷写标定区时发生异常情况,标定区所存储的各个变量值也不会丢失,提高了车辆的控制系统的安全性。
步骤S106的具体执行过程可以是:
擦除标定区存储的所有变量;
根据备份区和标定区之间预先建立的地址映射关系,将备份区存储的所有变量值写入标定区中与备份地址对应的地址。
其中,备份地址指代每个变量值在备份区的起始存储地址。
从步骤S106的执行过程可以看出,通过擦除标定区的所有变量,标定区原本存储的未更新的目标变量将被删除,随后,将备份区存储的所有变量对应地写入标定区,而步骤S105执行结束后,备份区所存储的目标变量,是更新后的目标变量,因此,步骤S106执行结束后,标定区原本存储的未更新的目标变量,就被备份区中更新后的目标变量所替代,由此实现了对标定区的目标变量的更新。
从步骤S103至步骤S105所述的流程可以看出,本申请所提供的更新方法在执行时,只需要占用RAM存储器中相当于目标存储空间大小的映射存储空间,特别的,当只有一个目标变量需要更新,且该目标变量位于一个2KB大小的子存储空间内,那么利用本申请所提供的更新方法,在更新过程中只需要占用RAM存储器中一块2KB大小的映射存储空间,而现有的方法中,即使仅更新一个目标变量,也需要占用RAM存储器中和标定区同等大小,即256KB的存储空间。由此可以看出,本申请的更新方法仅占用相当于少量目标存储空间大小的RAM存储空间,不需要占用相当于整个标定区大小的RAM存储空间,减少更新Flash标定区时所占用的RAM存储空间。
下面结合具体的例子说明本申请实施例的Flash存储器的更新方法的执行过程:
请参考图2,假设Flash存储器的标定区的大小为20KB,预先将其划分为10个2KB大小的子存储空间,同时Flash存储器中设置了和标定区同等大小,即20KB大小的备份区,备份区同样划分为10个2KB大小的子存储空间。各个子存储空间的编号如图2所示。
用户将变量A和变量B指定为需要更新的目标变量,其中变量A的更新值为15,变量B的更新值为47,假设变量A更新前的(也就是当前的)变量值为6,变量B更新前的变量值为35。
ECU获得变量A和变量B的地址和长度后,确定出变量A存储在标定区的子存储空间4,变量B存储在标定区的子存储空间8,即标定区的子存储空间4和子存储空间8为目标存储空间。
随后,ECU在RAM存储器中针对上述两个目标存储空间分别划分出对应的映射存储空间,即图2中的映射存储空间1和映射存储空间2,两个映射存储空间的大小均为2KB。
划分映射存储空间后,ECU将子存储空间4的所有变量复制到映射存储空间1,将子存储空间的所有变量复制到映射存储空间2。此时,映射存储空间1存储有变量A,变量值为更新前的值6,映射存储空间2存储变量B,变量值为35,相当于将子存储空间4映射到映射存储空间1,将子存储空间8映射到映射存储空间2。
复制完成后,ECU将映射存储空间1的变量A的变量值更新为指定的更新值,即将变量A的变量值设定为更新值15,同样的,将映射存储空间2的变量B的变量值设定为更新值47。
映射存储空间的变量被更新后,ECU开始刷写备份区,参考前述步骤S105,也就是先擦除备份区的所有数据,然后,将标定区的子存储空间1至3,子存储空间5至7,子存储空间9和10的变量直接复制到备份区中相同编号的子存储空间,同时,将映射存储空间1的所有变量复制到备份区的子存储空间4,将映射存储空间2的所有变量复制到备份区的子存储空间8。
完成上述刷写后,可以看出,映射存储空间中被更新后的变量A(变量值为15)和变量B(变量值为47)被复制到了备份区的子存储空间4和8中,而备份区的其他不需要更新的变量则保持原本标定区中的变量值不变。
最后,参考前述步骤S106,ECU擦除标定区的所有数据,然后将备份区的每个子存储空间的变量复制到标定区中相同编号的子存储空间中,可以看出,步骤S106执行结束后,除变量A和变量B以外的标定区的其他变量(即非目标变量)的变量值和执行步骤S106之前一致,而变量A的变量值则从原本的6变更为更新值15,变量B的变量值从原本的35变更为更新值47,由此实现对标定区中目标变量的更新。
上述例子中标定区和子存储空间的大小仅作为示例,在本申请提供的更新方法具体应用时,标定区和子存储空间的大小可以由实际情况决定。
结合本申请实施例提供的Flash存储器的更新方法,本申请实施例还提供一种Flash存储器的更新装置,请参考图3,该装置可以包括如下单元:
获取单元301,用于获取目标变量的地址、长度和更新值。
其中,目标变量指代需要更新的变量;目标变量的地址指代目标变量在Flash存储器的标定区的起始存储地址。
查找单元302,用于用于根据目标变量的地址和长度,在标定区中查找出目标存储空。
其中,标定区按预设的拆分容量划分有多个子存储空间,目标存储空间指代存储有目标变量的子存储空间。
复制单元303,用于将目标存储空间包含的变量复制至RAM存储器中划分的映射存储空间,并将目标变量的虚拟地址映射至映射存储空间。
修改单元304,用于将映射存储空间包含的目标变量的变量值修改为更新值。
刷写单元305,用于向Flash存储器的备份区刷写标定区的非目标变量,以及RAM存储器的映射存储空间的变量。
其中,非目标变量指代对应的虚拟地址未被映射至映射存储空间的变量。
刷写单元305,用于完成对备份区的刷写后,向标定区刷写备份区存储的所有变量,并将目标变量的虚拟地址映射至目标存储空间,以完成对标定区存储的目标变量的更新。
可选的,修改单元304将映射存储空间包含的目标变量的变量值修改为更新值时,具体用于:
在目标存储空间和映射存储空间之间确定存储地址映射关系;
根据目标变量的地址和存储地址映射关系,确定出目标变量的映射地址;其中,映射地址指代目标变量在RAM存储器的起始存储地址;
将映射地址上存储的目标变量的变量值修改为更新值。
可选的,该更新装置还包括:
恢复单元306,用于若标定区刷写失败,擦除标定区存储的所有变量,并再次执行向标定区刷写备份区存储的所有变量步骤。
可选的,刷写单元305向标定区刷写备份区存储的所有变量时,具体用于:
擦除标定区存储的所有变量;
根据备份区和标定区之间预先建立的地址映射关系,将备份区存储的所有变量写入标定区中与备份地址对应的地址;其中,备份地址指代每个变量在备份区的起始存储地址。
本申请实施例提供的Flash存储器的更新装置,其具体工作原理可以参考本申请任一实施例所提供的Flash存储器的更新方法中的相关步骤,此处不再详述。
本申请提供一种Flash存储器的更新装置,其中,获取单元301获取需要更新的目标变量的地址、长度和更新值;查找单元302根据目标变量的地址和长度,在标定区按一定拆分容量预先划分的多个子存储空间中查找出存储有目标变量的子存储空间(即目标存储空间);复制单元303将目标存储空间的变量复制至RAM存储器的映射存储空间;修改单元304将映射存储空间中目标变量的变量值修改为更新值;刷写单元305向Flash存储器的备份区刷写标定区的每一个非目标存储空间的变量,以及RAM存储器的每一个映射存储空间的变量,最后将备份区的变量刷写至标定区。当目标变量的数量较少时,本申请的更新方法所使用的RAM存储空间仅相当于标定区中少量的目标存储空间的大小,而不需要占用相当于整个标定区大小的RAM存储空间,有效的减少了更新Flash标定区时所占用的RAM存储空间。
本申请实施例还提供一种电子设备,请参考图4,该电子设备可以包括存储器401和处理器402。
其中,存储器401用于存储计算机程序;
处理器402用于执行计算机程序,具体用于实现本申请第一方面任意一项所提供的Flash存储器的更新方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种Flash存储器的更新方法,其特征在于,包括:
获取目标变量的地址、长度和更新值;其中,所述目标变量指代需要更新的变量;所述目标变量的地址指代所述目标变量在Flash存储器的标定区的起始存储地址;
根据所述目标变量的地址和长度,在所述标定区中查找出目标存储空间;其中,所述标定区按预设的拆分容量划分有多个子存储空间,所述目标存储空间指代存储有所述目标变量的子存储空间;
将所述目标存储空间包含的变量复制至RAM存储器中划分的映射存储空间,并将所述目标变量的虚拟地址映射至所述映射存储空间;
将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值;
向所述Flash存储器的备份区刷写所述标定区的非目标变量,以及所述RAM存储器的所述映射存储空间的变量;其中,所述非目标变量指代对应的虚拟地址未被映射至所述映射存储空间的变量;
完成对所述备份区的刷写后,向所述标定区刷写所述备份区存储的所有变量,并将所述目标变量的虚拟地址映射至所述目标存储空间,以完成对所述标定区存储的所述目标变量的更新。
2.根据权利要求1所述的更新方法,其特征在于,所述拆分容量为2KB。
3.根据权利要求1所述的更新方法,其特征在于,所述将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值,包括:
在所述目标存储空间和所述映射存储空间之间确定存储地址映射关系;
根据所述目标变量的地址和所述存储地址映射关系,确定出所述目标变量的映射地址;其中,所述映射地址指代所述目标变量在所述RAM存储器的起始存储地址;
将所述映射地址上存储的所述目标变量的变量值修改为所述更新值。
4.根据权利要求1所述的更新方法,其特征在于,所述向所述标定区刷写所述备份区存储的所有变量之后,还包括:
若所述标定区刷写失败,擦除所述标定区存储的所有变量,并再次执行所述向所述标定区刷写所述备份区存储的所有变量步骤。
5.根据权利要求1所述的更新方法,其特征在于,所述向所述标定区刷写所述备份区存储的所有变量,包括:
擦除所述标定区存储的所有变量;
根据所述备份区和所述标定区之间预先建立的地址映射关系,将所述备份区存储的所有变量写入所述标定区中与备份地址对应的地址;其中,所述备份地址指代每个所述变量在所述备份区的起始存储地址。
6.一种Flash存储器的更新装置,其特征在于,包括:
获取单元,用于获取目标变量的地址、长度和更新值;其中,所述目标变量指代需要更新的变量;所述目标变量的地址指代所述目标变量在Flash存储器的标定区的起始存储地址;
查找单元,用于根据所述目标变量的地址和长度,在所述标定区中查找出目标存储空间;其中,所述标定区按预设的拆分容量划分有多个子存储空间,所述目标存储空间指代存储有所述目标变量的子存储空间;
复制单元,用于将所述目标存储空间包含的变量复制至RAM存储器中划分的映射存储空间,并将所述目标变量的虚拟地址映射至所述映射存储空间;
修改单元,用于将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值;
刷写单元,用于向所述Flash存储器的备份区刷写所述标定区的非目标变量,以及所述RAM存储器的所述映射存储空间的变量;其中,所述非目标变量指代对应的虚拟地址未被映射至所述映射存储空间的变量;
所述刷写单元,用于完成对所述备份区的刷写后,向所述标定区刷写所述备份区存储的所有变量,并将所述目标变量的虚拟地址映射至所述目标存储空间,以完成对所述标定区存储的所述目标变量的更新。
7.根据权利要求6所述的更新装置,其特征在于,所述修改单元将所述映射存储空间包含的所述目标变量的变量值修改为所述更新值时,具体用于:
在所述目标存储空间和所述映射存储空间之间确定存储地址映射关系;
根据所述目标变量的地址和所述存储地址映射关系,确定出所述目标变量的映射地址;其中,所述映射地址指代所述目标变量在所述RAM存储器的起始存储地址;
将所述映射地址上存储的所述目标变量的变量值修改为所述更新值。
8.根据权利要求6所述的更新装置,其特征在于,所述更新装置还包括:
恢复单元,用于若所述标定区刷写失败,擦除所述标定区存储的所有变量,并再次执行所述向所述标定区刷写所述备份区存储的所有变量步骤。
9.根据权利要求6所述的更新装置,其特征在于,所述刷写单元向所述标定区刷写所述备份区存储的所有变量时,具体用于:
擦除所述标定区存储的所有变量;
根据所述备份区和所述标定区之间预先建立的地址映射关系,将所述备份区存储的所有变量写入所述标定区中与备份地址对应的地址;其中,所述备份地址指代每个所述变量在所述备份区的起始存储地址。
10.一种电子设备,其特征在于,包括存储器和处理器;
其中,所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现如权利要求1至5任意一项所述的Flash存储器的更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110049488.7A CN112732309B (zh) | 2021-01-14 | 2021-01-14 | Flash存储器的更新方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110049488.7A CN112732309B (zh) | 2021-01-14 | 2021-01-14 | Flash存储器的更新方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732309A CN112732309A (zh) | 2021-04-30 |
CN112732309B true CN112732309B (zh) | 2023-08-18 |
Family
ID=75593073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110049488.7A Active CN112732309B (zh) | 2021-01-14 | 2021-01-14 | Flash存储器的更新方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732309B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102591A (zh) * | 2013-04-08 | 2014-10-15 | 香港理工大学 | 计算机子系统及在其中实现闪存转换层的方法 |
CN105183665B (zh) * | 2015-09-08 | 2018-02-13 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
CN109542086A (zh) * | 2018-11-28 | 2019-03-29 | 奇瑞汽车股份有限公司 | 一种数据标定方法 |
US10303621B1 (en) * | 2017-03-07 | 2019-05-28 | Amazon Technologies, Inc. | Data protection through address modification |
CN110297608A (zh) * | 2019-06-28 | 2019-10-01 | 潍柴动力股份有限公司 | 数据的处理方法、装置和存储介质 |
JP2020013306A (ja) * | 2018-07-18 | 2020-01-23 | 富士通株式会社 | 通信バッファ管理プログラム、情報処理装置および通信バッファ管理方法 |
CN111581127A (zh) * | 2020-04-23 | 2020-08-25 | 深圳佰维存储科技股份有限公司 | 映射关系处理方法及装置 |
-
2021
- 2021-01-14 CN CN202110049488.7A patent/CN112732309B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102591A (zh) * | 2013-04-08 | 2014-10-15 | 香港理工大学 | 计算机子系统及在其中实现闪存转换层的方法 |
CN105183665B (zh) * | 2015-09-08 | 2018-02-13 | 福州瑞芯微电子股份有限公司 | 一种数据缓存访问方法和数据缓存控制器 |
US10303621B1 (en) * | 2017-03-07 | 2019-05-28 | Amazon Technologies, Inc. | Data protection through address modification |
JP2020013306A (ja) * | 2018-07-18 | 2020-01-23 | 富士通株式会社 | 通信バッファ管理プログラム、情報処理装置および通信バッファ管理方法 |
CN109542086A (zh) * | 2018-11-28 | 2019-03-29 | 奇瑞汽车股份有限公司 | 一种数据标定方法 |
CN110297608A (zh) * | 2019-06-28 | 2019-10-01 | 潍柴动力股份有限公司 | 数据的处理方法、装置和存储介质 |
CN111581127A (zh) * | 2020-04-23 | 2020-08-25 | 深圳佰维存储科技股份有限公司 | 映射关系处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于AM335X与WinCE7.0平台的内存配置方法及应用;袁霞 等;《软件导刊》;第17卷(第6期);39-44 * |
Also Published As
Publication number | Publication date |
---|---|
CN112732309A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4837731B2 (ja) | プログラム可能な耐久度を有するフラッシュメモリ | |
CN111309364B (zh) | 芯片程序的升级方法、装置及存储介质 | |
US6938116B2 (en) | Flash memory management method | |
KR100584338B1 (ko) | 소프트웨어 업데이트 방법 및 시스템 | |
JP4991320B2 (ja) | ホスト装置およびメモリシステム | |
US20070016719A1 (en) | Memory device including nonvolatile memory and memory controller | |
US20070245069A1 (en) | Storage Device, Memory Management Method and Program | |
JPWO2007066720A1 (ja) | 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 | |
JP2009244962A (ja) | メモリシステム | |
WO2006107086A1 (en) | Storage device, memory managing apparatus, memory managing method, and program | |
US7278001B2 (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
JP2007133541A (ja) | 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム | |
CN111026417A (zh) | 一种嵌入式设备的升级方法及嵌入式设备 | |
JP5057887B2 (ja) | データ更新装置及びデータ更新方法及びデータ更新プログラム | |
CN112732309B (zh) | Flash存储器的更新方法、装置和电子设备 | |
CN110888769A (zh) | 数据处理方法及计算机设备 | |
JP4740553B2 (ja) | データ・アクセス要求再マッピング・システム | |
US7234039B1 (en) | Method, system, and apparatus for determining the physical memory address of an allocated and locked memory buffer | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
JP2000030375A (ja) | データ処理システム、アクセス装置及び記録媒体 | |
JP2008047155A (ja) | 一括消去型不揮発性メモリおよび携帯電話 | |
JP6935694B2 (ja) | 電子制御装置 | |
JP2019008693A (ja) | 自動車用制御装置 | |
JP6984203B2 (ja) | 電子制御装置及び更新ソフトウェア配信システム | |
US20110082995A1 (en) | Information processing apparatus |
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 |