CN111241008B - 用于校正eeprom变量与地址的方法、装置和控制器 - Google Patents
用于校正eeprom变量与地址的方法、装置和控制器 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing 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变量具有掉电保存的属性。控制器复位后,程序在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变量与地址的装置。
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)
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)
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 | 潍柴动力股份有限公司 | 一种软件版本升级方法及装置 |
-
2019
- 2019-12-31 CN CN201911408907.0A patent/CN111241008B/zh active Active
Patent Citations (3)
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 |