CN111241008B - 用于校正eeprom变量与地址的方法、装置和控制器 - Google Patents

用于校正eeprom变量与地址的方法、装置和控制器 Download PDF

Info

Publication number
CN111241008B
CN111241008B CN201911408907.0A CN201911408907A CN111241008B CN 111241008 B CN111241008 B CN 111241008B CN 201911408907 A CN201911408907 A CN 201911408907A CN 111241008 B CN111241008 B CN 111241008B
Authority
CN
China
Prior art keywords
variable
eeprom
area
modified
name
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
Application number
CN201911408907.0A
Other languages
English (en)
Other versions
CN111241008A (zh
Inventor
苗强
李富民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weichai Power Co Ltd
Original Assignee
Weichai Power Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Weichai Power Co Ltd filed Critical Weichai Power Co Ltd
Priority to CN201911408907.0A priority Critical patent/CN111241008B/zh
Publication of CN111241008A publication Critical patent/CN111241008A/zh
Application granted granted Critical
Publication of CN111241008B publication Critical patent/CN111241008B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Abstract

本发明涉及数据存储领域,尤其涉及一种用于校正EEPROM变量与地址的方法、装置和控制器。本发明所述的用于校正EEPROM变量与地址的方法包括:获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量;对比所述第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称;根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;将所述存储内容赋值至待修改变量名称在RAM区的第一存储地址中;清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。通过在EEPROM变量改变时,更新当前编译环境中的RAM量和EEPROM区的对应关系,实现EEPROM变量的自动更新,消除了重要数据信息被擦除的风险,以此保存原始数据。

Description

用于校正EEPROM变量与地址的方法、装置和控制器
技术领域
本申请涉及数据存储技术领域,尤其涉及一种用于校正EEPROM变量与地址的方法、装置和控制器。
背景技术
EEPROM变量具有掉电保存的属性。控制器复位后,程序在RAM中开辟EEPROM变量的运行区,并按照地址映射关系将EEPROM变量映射到RAM区。程序运行过程中,接收到存EEPROM的指令后,会将RAM中变化的EEPROM变量的镜像按照地址映射关系回写到EEPROM区,实现了EEPROM变量的更新和保存。
在项目开发过程中,为了实现程序的兼容性和继承性,一般会在EEPROM变量定义区增加、减少或重新排序EEPROM变量,该变化会导致编译器对实际RAM量的物理地址重新分配,但EEPROM区的内容没有随之分配,即破坏了EEPROM区和RAM区的地址映射关系,导致程序在复位之后,读取到的EEPROM数据呈现乱码,这种情况下只能是清除EEPROM,但该种方式会有清除重要数据的风险。
综上所述,需要提供一种能够在EEPROM区的EEPROM变量变化后,对RAM区和EEPROM区中的变量和地址的对应关系进行校正,保护数据的方法、装置和控制器。
发明内容
为解决以上问题,本申请提出了一种用于校正EEPROM变量与地址的方法、装置和控制器。
一方面,本申请提出一种用于校正EEPROM变量与地址的方法,包括:
获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量;
对比所述第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称;
根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;
将所述存储内容赋值至待修改变量名称在RAM区的第一存储地址中;
清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。
进一步地,如上所述的用于校正EEPROM变量与地址的方法,所述获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量,包括:
获取上版本程序中,存储在EEPROM区的变量,得到第一变量;
获取当前版本程序中,存储在EEPROM区的变量,得到第二变量。
进一步地,如上所述的用于校正EEPROM变量与地址的方法,所述对比所述第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称,包括:
对比对第一变量和第二变量中所有变量的变量内容;
提取第二变量中被修改的变量内容对应的第一变量名称,得到待修改变量名称。
进一步地,如上所述的用于校正EEPROM变量与地址的方法,所述根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容,包括:
获取编译器生成的MAP文件以及EEPROM区地址与RAM区地址的映射关系;
根据映射关系,获取待修改变量名称在RAM区中的存储位置,得到第一存储地址;
根据映射关系,获取待修改变量名称在EEPROM区的储存内容。
进一步地,如上所述的用于校正EEPROM变量与地址的方法,在所述提取被修改的第二变量之前,还包括:
若第二变量中无被修改的变量,则结束校正。
进一步地,如上所述的用于校正EEPROM变量与地址的方法,所述变量内容包括:变量名称、变量含义、变量类型。
进一步地,如上所述的用于校正EEPROM变量与地址的方法,所述被修改包括:对变量名称、变量含义、变量类型及其内容进行了删除和/或增加。
第二方面,本申请提出一种用于校正EEPROM变量与地址的装置,包括控制模块,用于获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量;对比所述第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称;根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;将所述存储内容赋值至待修改变量名称在RAM区的第一存储地址中;清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。
第三方面,本申请提出一种控制器,包括如所述的用于校正EEPROM变量与地址的装置。
本申请的优点在于:通过获取上版本和当前版本程序中,存储在EEPROM区的变量,并对比,提取被修改的第二变量,得到待修改变量名称,根据映射关系获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容,将存储内容赋值至待修改变量名称在RAM区的第一存储地址中,清除EEPROM区,更新存储内容至EEPROM区中的对应地址,能够在EEPROM区的EEPROM变量变化后,对RAM区和EEPROM区中的变量和地址的对应关系进行校正,从而保护数据。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选事实方案的目的,而并不认为是对本申请的限制。而且在整个附图中,用同样的参考符号表示相同的部件。在附图中:
图1是本申请提供的一种用于校正EEPROM变量与地址的方法的步骤示意图;
图2是本申请提供的一种用于校正EEPROM变量与地址的方法的流程示意图;
图3是本申请提供的一种用于校正EEPROM变量与地址的装置的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
第一方面,根据本申请的实施方式,提出一种用于校正EEPROM变量与地址的方法,如图1所示,包括:
S101,获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量;
S102,对比第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称;
S103,根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;
S104,将存储内容赋值至待修改变量名称在RAM区的第一存储地址中;
S105,清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。
获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量,包括:
获取上版本程序中,存储在EEPROM区的变量,得到第一变量;
获取当前版本程序中,存储在EEPROM区的变量,得到第二变量。
对比第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称,包括:
对比对第一变量和第二变量中所有变量的变量内容;
提取第二变量中被修改的变量内容对应的第一变量名称,得到待修改变量名称。
根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容,包括:
获取编译器生成的MAP文件以及EEPROM区地址与RAM区地址的映射关系;
根据映射关系,获取待修改变量名称在RAM区中的存储位置,得到第一存储地址;
根据映射关系,获取待修改变量名称在EEPROM区的储存内容。
在提取被修改的第二变量之前,还包括:
若第二变量中无被修改的变量,则结束校正。
变量内容包括:变量名称、变量含义、变量类型。
被修改包括:对变量名称、变量含义、变量类型及其内容进行了删除和/或增加。
第一变量和第二变量中,均根据具体程序包括一个或多个变量。
待修改变量名称中包括的第一变量名称数量,具体的,对应第二变量中被修改的变量内容对应的第一变量名称的数量。
在程序版本发生变化后,EEPROM变量也会随之变化,导致EEPROM变量在控制器中的地址会变化。但是,由于程序运行不是靠变量名称进行数据修改或变更,而是靠地址,所以地址发生变化之后,再去原来的地址读取内容,就会出现错误,导致乱码。然而,程序运行不能出现乱码。通常的做法是一开始就把内容清空,相当于全部将EEPROM初始化为0,但是这样的操作可能会清除重要数据,导致重要数据丢失。假设有一个存储在EEPROM中的变量是记录运行时间的,运行至当前时刻已经记录了1小时,但新版程序因为变量定义顺序换了之后,此变量读出来就为乱码,所以必须擦掉EEPROM,让其他用到这个变量的程序不会发生故障。
本申请的实施方式首先从原来的地址(EEPROM中存储上个版本中这些变量的数据的地址)读取出内容,然后将内容赋值给RAM区中对应的地址;RAM区存储完成后,再清除EEPROM区,将RAM中存储的数据写入EEPROM区中。这样能够避免必须直接清除EEPROM中上版本程序的内容,防止数据丢失。仅需要上位机在初始化时将原来地址的内容赋给现在地址。
下面,对本申请实施例进行进一步说明。
通过对比当前版本与上一版本(上版本)程序中存储在EEPROM区中的变量(第一变量和第二变量)的名称和数据类型,确定当前版本中依然存在的E2变量(存储在EEPROM区中的变量),然后将E2变量在上一版本中对应的EEPROM地址中的内容取出,赋值给RAM区中对应的E2变量,最后清除EEPROM,重新分配EEPROM地址。
如图2所示,第一步,利用上位机处理,提取上版程序中存储在EEPROM区中的变量(第一变量)和当前版本程序中存储在EEPROM区中的变量(第二变量),得到第一变量和第二变量的对应关系,通过对比第一变量和第二变量的变量名称、变量含义、变量类型等内容,判断是否存在删除、增加等操作(修改),提取出存储在EEPROM区中,需要恢复变量内容的第二变量对应的第一变量名称,记为待修改变量名称Vstore。根据式(1)所示的变量在编译器生成的MAP文件和EEPROM区与RAM区的地址映射关系获取上一版程序中该变量内容在EEPROM中的存储位置。需要恢复变量内容的第二变量为待修改变量。
(V,A)=F(map,lcf) (1)
其中,V表示变量名称,A表示该变量对应的地址,MAP表示map文件,lcf表示编译过程中需要的一个对地址预分配的一个文件,F表示一种映射关系。
第二步,利用上位机,修改程序复位后(当前版本程序开始运行之后),对相关Vstore变量的初始化,根据式(2)所示的示意函数,结合编译环境中具体的读取EEPROM内容的接口函数,将从之前的地址(上一版程序中该变量内容在EEPROM中的存储位置)读取出内容,然后赋值给Vstore中对应的当前版本的变量所在的RAM地址。
read(add(VstOre)Old~E2)->add(Vstore)new (2)
其中,old表示上一版本,new表示当前版本,add表示地址,E2表示EEPROM区。将需要存储的待修改变量名称Vstore在上一版本中存放在EEPROM区的具体地址中的数据(变量内容)读出,赋值给Vstore中各待修改变量名称对应的第二变量(当前版本的变量)所在的RAM地址。
第三步,清除EEPROM区域,更新(V,A)=F(map,lcf)。
EEPROM变量的定义会通过表格来存储,上位机通过操作该表格就能获取当前的EEPROM变量的数量和名称等具体内容。
在C代码中定义的变量名称会存储在编译完成之后产生在一个.map文件中,在该map文件中,保存着变量的名称以及其具体分配在控制器的哪一个区域。这样,通过map文件,就能获取上一版本定义的EEPROM变量的具体地址,从该地址就能取出具体的值。
本申请的实施方式能够能实现EEPROM变量的自动更新,消除了重要数据信息被擦除的风险。
第二方面,根据本申请的实施方式,还提出一种用于校正EEPROM变量与地址的装置,如图3所示,包括控制模块,用于获取上版本和当前版本程序中,存储在EEPROM区的变量,得到第一变量和第二变量;对比第一变量和第二变量,提取被修改的第二变量,得到待修改变量名称;根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;将存储内容赋值至待修改变量名称在RAM区的第一存储地址中;清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。
第三方面,根据本申请的实施方式,还提出一种控制器,包括用于校正EEPROM变量与地址的装置。
本申请的方法中,通过获取上版本和当前版本程序中,存储在EEPROM区的变量,并对比,提取被修改的第二变量,得到待修改变量名称,根据映射关系获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容,将存储内容赋值至待修改变量名称在RAM区的第一存储地址中,清除EEPROM区,更新存储内容至EEPROM区中的对应地址,能够在EEPROM区的EEPROM变量变化后,对RAM区和EEPROM区中的变量和地址的对应关系进行校正,从而保护数据。通过在EEPROM变量改变时,更新当前编译环境中的RAM量和EEPROM区的对应关系,实现EEPROM变量的自动更新,消除了重要数据信息被擦除的风险,以此保存原始数据。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (7)

1.一种用于校正EEPROM变量与地址的方法,其特征在于,包括:
获取上版本程序中,存储在EEPROM区的变量,得到第一变量;
获取当前版本程序中,存储在EEPROM区的变量,得到第二变量;
对比第一变量和第二变量中所有变量的变量内容;
提取第二变量中被修改的变量内容对应的第一变量名称,得到待修改变量名称;
根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;
将所述存储内容赋值至待修改变量名称在RAM区的第一存储地址中;
清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。
2.根据权利要求1所述的用于校正EEPROM变量与地址的方法,其特征在于,所述根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容,包括:
获取编译器生成的MAP文件以及EEPROM区地址与RAM区地址的映射关系;
根据映射关系,获取待修改变量名称在RAM区中的存储位置,得到第一存储地址;
根据映射关系,获取待修改变量名称在EEPROM区的储存内容。
3.根据权利要求1所述的用于校正EEPROM变量与地址的方法,其特征在于,在所述提取被修改的第二变量之前,还包括:
若第二变量中无被修改的变量,则结束校正。
4.根据权利要求1所述的用于校正EEPROM变量与地址的方法,其特征在于,所述变量内容包括:变量名称、变量含义、变量类型。
5.根据权利要求1所述的用于校正EEPROM变量与地址的方法,其特征在于,所述被修改包括:对变量名称、变量含义、变量类型及其内容进行了删除和/或增加。
6.一种用于校正EEPROM变量与地址的装置,其特征在于,包括控制模块,用于获取上版本程序中,存储在EEPROM区的变量,得到第一变量;获取当前版本程序中,存储在EEPROM区的变量,得到第二变量;对比第一变量和第二变量中所有变量的变量内容;提取第二变量中被修改的变量内容对应的第一变量名称,得到待修改变量名称;根据映射关系,获取待修改变量名称在RAM区中的第一存储地址和在EEPROM区的储存内容;将所述存储内容赋值至待修改变量名称在RAM区的第一存储地址中;清除EEPROM区,将存储内容更新至EEPROM区中的对应地址。
7.一种控制器,其特征在于,包括如权利要求6所述的用于校正EEPROM变量与地址的装置。
CN201911408907.0A 2019-12-31 2019-12-31 用于校正eeprom变量与地址的方法、装置和控制器 Active CN111241008B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911408907.0A CN111241008B (zh) 2019-12-31 2019-12-31 用于校正eeprom变量与地址的方法、装置和控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911408907.0A CN111241008B (zh) 2019-12-31 2019-12-31 用于校正eeprom变量与地址的方法、装置和控制器

Publications (2)

Publication Number Publication Date
CN111241008A CN111241008A (zh) 2020-06-05
CN111241008B true CN111241008B (zh) 2022-09-23

Family

ID=70870369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911408907.0A Active CN111241008B (zh) 2019-12-31 2019-12-31 用于校正eeprom变量与地址的方法、装置和控制器

Country Status (1)

Country Link
CN (1) CN111241008B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073544A (zh) * 2011-01-28 2011-05-25 武汉天喻信息产业股份有限公司 一种基于页操作的EEPROM cache方法
CN103563325A (zh) * 2011-01-27 2014-02-05 安全第一公司 用于保护数据的系统和方法
CN110297608A (zh) * 2019-06-28 2019-10-01 潍柴动力股份有限公司 数据的处理方法、装置和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2158718B1 (en) * 2007-05-18 2019-04-17 Verimatrix, Inc. System and method for defining programmable processing steps applied when protecting the data
JP5041980B2 (ja) * 2007-11-16 2012-10-03 ルネサスエレクトロニクス株式会社 データ処理回路及び通信携帯端末装置
CN102063634B (zh) * 2010-12-24 2013-04-24 北京握奇数据系统有限公司 一种掩膜智能卡的功能扩展方法及智能卡
CN102650939A (zh) * 2012-03-31 2012-08-29 北京经纬恒润科技有限公司 一种防止重编程程序对应用程序干扰的方法及装置
CN105916707B (zh) * 2014-01-17 2018-12-18 霍富霍尔斯贝克及富尔斯特有限公司 对车型适配胎压监测装置的方法、包括至少一个能适用该方法的胎压监测装置的胎压监测系统、以及为此的胎压监测装置
CN104484202B (zh) * 2014-12-15 2017-07-25 中国科学院长春光学精密机械与物理研究所 适用于8051微控制器的航天嵌入式软件在轨重注方法
CN104580425A (zh) * 2014-12-26 2015-04-29 北京中交兴路车联网科技有限公司 一种客户端数据同步方法及系统
CN106776633B (zh) * 2015-11-23 2023-12-01 上海汽车工业(集团)总公司 用户可配置的自动生成a2l文件的装置和方法
CN108733397B (zh) * 2018-05-28 2022-03-11 北京小米移动软件有限公司 更新状态确定方法、设备及存储介质
CN109358892B (zh) * 2018-09-26 2022-04-05 潍柴动力股份有限公司 一种软件版本升级方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103563325A (zh) * 2011-01-27 2014-02-05 安全第一公司 用于保护数据的系统和方法
CN102073544A (zh) * 2011-01-28 2011-05-25 武汉天喻信息产业股份有限公司 一种基于页操作的EEPROM cache方法
CN110297608A (zh) * 2019-06-28 2019-10-01 潍柴动力股份有限公司 数据的处理方法、装置和存储介质

Also Published As

Publication number Publication date
CN111241008A (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
CN106095620B (zh) 一种嵌入式Linux存储分区的开发方法
CN101650662B (zh) 一种嵌入式系统的存储器件的固件启动及升级方法
KR100531192B1 (ko) 비휘발성 메모리의 제어방법
CN103164342B (zh) 数据可用性的挂载时协调
KR100849446B1 (ko) 기억 장치, 메모리 관리 장치, 메모리 관리 방법, 및 컴퓨터-판독가능한 기록 매체
US8775758B2 (en) Memory device and method for performing a write-abort-safe firmware update
US20150254013A1 (en) Method for storing metadata of log-structured file system for flash memory
JP2005242897A (ja) フラッシュディスク装置
EP2413329A1 (en) Electronic apparatuses
US9710340B2 (en) Replacement of a corrupt driver variable record
US7536536B1 (en) Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device
EP1934727A1 (en) Method and system for in-place updating content stored in a storage device
US20080189476A1 (en) Nonvolatile semiconductor storage device and method of managing the same
KR101150654B1 (ko) 비휘발성 메모리 상의 데이터 관리 방법 및 기계 판독 가능한 매체
JP2009205689A (ja) フラッシュディスク装置
CN110688141B (zh) 固件更新方法
US6925522B2 (en) Device and method capable of changing codes of micro-controller
CN111241008B (zh) 用于校正eeprom变量与地址的方法、装置和控制器
KR20080066381A (ko) 소프트웨어의 업그레이드 방법
CN109933345B (zh) 一种控制器的无扰下装方法及相关装置
KR100654344B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
US10877743B2 (en) Control apparatus for updating stored program and method for updating program stored in control apparatus
CN110990018B (zh) 一种嵌入式系统的编译方法及编译系统
CN115167862A (zh) 补丁方法及相关设备
KR100654343B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법

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