CN111176579B - 使用norflash模拟eeprom的方法 - Google Patents
使用norflash模拟eeprom的方法 Download PDFInfo
- Publication number
- CN111176579B CN111176579B CN201911397192.3A CN201911397192A CN111176579B CN 111176579 B CN111176579 B CN 111176579B CN 201911397192 A CN201911397192 A CN 201911397192A CN 111176579 B CN111176579 B CN 111176579B
- Authority
- CN
- China
- Prior art keywords
- data
- area
- variable
- page
- initialization
- 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
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation 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/065—Replication mechanisms
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种使用norflash模拟eeprom的方法。该方法包括:将norflash分为初始化区、数据区、替换区、整理区;在初始化区存入初始化标记、密钥和校验值;将数据区划分为多个物理页,数据区物理页与eeprom逻辑页映射,以模拟eeprom进行数据写入和读出;写入数据后,将当前写入的物理页与逻辑页间的映射关系以及成功写入标记存储在替换区作为记录;当替换区写满时,将数据区物理页与逻辑页间的最新映射关系拷贝到整理区,然后在整理区写入成功拷贝标记,并将整理区数据拷贝回已擦除的替换区,最后擦除整理区。本申请的方案能提供可靠的掉电保护并保障数据安全,还便于在不同平台移植。
Description
技术领域
本申请属于嵌入式系统的数据读写领域,更具体地,涉及使用norflash模拟eeprom的方法。
背景技术
嵌入式安全应用中,通常是单芯片系统,需要用到可按字节读写的eeprom存储介质。但eeprom价格较贵,芯片内部存储介质通常为norflash。norflash的特点是:只能按页擦除,按字(4字节)写入;需要修改数据时,必须先擦除整页,再写入数据;且norflash可靠擦写寿命为10万次。而实际应用中会频繁修改关键业务数据,为延长芯片使用寿命,可考虑使用芯片内的大容量的norflash模拟小容量的eeprom,将频繁修改的业务数据存放于模拟的eeprom中。
申请号为200910194936.1的专利申请描述了一种掉电保护方法:每个数据块增加4字节的标志位,根据标志位进行掉电保护相关操作。但该方法未对标志位的有效性进行校验,如果由于电磁环境发生变化导致标志位发生bit位翻转,会产生错误操作,进而丢失关键数据或者产生更多的错误数据。
申请号为201110449693.9的专利申请描述了另一种嵌入式存储器的读写优化方法,其在ram中建立一个二维数组映射表访问数据。但该方法使用ram资源较多,并且没有对ram中数据进行有效性校验,此外也没有考虑掉电保护。
发明内容
有鉴于此,本申请实施例提供了一种能够提供可靠掉电保护并保证数据有效性的模拟eeprom的方法。
第一方面,本申请实施例提供了一种使用norflash模拟eeprom的方法,所述方法包括:
将norflash分为初始化区、数据区、替换区、整理区;
在初始化区存入初始化标记、密钥和初始化区校验值,所述密钥用于对存储在norflash的数据进行加密;
将数据区划分为多个物理页,数据区物理页与eeprom逻辑页映射,以模拟eeprom进行数据写入和读出,物理页存储使用密钥加密后的对应逻辑页数据和根据对应逻辑页数据生成的数据校验值;
写入数据后,将当前写入的物理页与eeprom逻辑页间的映射关系以及成功写入标记存储在替换区作为记录;
当替换区写满时,将数据区物理页与eeprom逻辑页间的最新映射关系拷贝到整理区,然后在整理区写入成功拷贝标记,并将整理区数据拷贝回已擦除的替换区,最后擦除整理区。
作为本申请实施例的一种具体实现方式,所述方法还包括:将下列数据存储在ram中作为全局变量:
用于指示当前数据区物理页与eeprom逻辑页间映射关系的数组变量logic2realbuf;
用于指示当前数据区各个物理页是否处于空闲状态的数组变量freepagebit;
用于指示替换区最新可写入地址的变量addrSort;
用于指示数据区最新用到的空闲物理页的变量freeBit
用于对全局变量进行校验的变量memHash。
作为本申请实施例的一种具体实现方式,所述方法还包括:采用国密算法对全局变量进行加密。
作为本申请实施例的一种具体实现方式,所述方法还包括根据下列步骤对norflash进行上电初始化:
步骤11,上电后,根据初始化区校验值对初始化区的数据进行校验,如果校验不通过,则先擦除norflash所有物理页,再将数据区物理页与eeprom逻辑页的初始映射关系写入替换区,并将初始化标记、密钥和初始化区校验值写入初始化区,然后进入步骤12;如果校验通过,直接进入步骤12;
步骤12,检查整理区的成功拷贝标记是否正确,如果正确,则擦除替换区后将整理区数据拷贝回已擦除的替换区,然后擦除整理区,再进入步骤13;如果不正确,则直接进入步骤13;
步骤13,遍历替换区,提取有效记录,根据有效记录更新ram中的全局变量。
作为本申请实施例的一种具体实现方式,根据有效记录更新ram中的全局变量包括:
根据有效记录的存储地址设置addrSort;
将数据区物理页与eeprom逻辑页间最新映射关系保存到数组变量logic2realbuf;
根据数据区物理页的空闲状态设置变量freepagebit;
初始化freeBit为0;
计算全局变量的校验值并给memHash赋值。
作为本申请实施例的一种具体实现方式,写入数据包括:
步骤21,判断待写入数据的长度和要写入的逻辑地址是否在eeprom范围内,如果不在范围内,则返回错误;如果在范围内,则根据变量memHash对ram中的全局变量进行校验,如果校验不通过,则返回错误,如果校验通过,则根据数据区物理页大小对待写入数据进行分包,然后进入步骤22;
步骤22,计算当前包要写入的逻辑页地址、页内偏移地址和数据长度,根据物理页与逻辑页间的映射关系,读取对应物理页数据到缓存并解密,根据数据校验值对解密后的数据进行校验,如果校验不通过,则返回错误;如果校验通过,则将当前包更新到缓存中对应位置,并在缓存中更新数据校验值,然后进入步骤23;
步骤23,根据变量freeBit和数组变量freepagebit找到数据区的下一空闲物理页,将要写入的逻辑页映射到找到的空闲物理页,更新数组变量logic2realbuf和变量freeBit,对缓存中的数据进行加密,然后写入找到的空闲物理页中,如果替换区已满,则进入步骤24,否则将要写入的逻辑页最新的映射关系根据变量addrSort写入替换区,进入步骤25;
步骤24,将数组变量logic2realbuf记录的数据区物理页与eeprom逻辑页间最新映射关系写入整理区,然后在整理区写入成功拷贝标记,并擦除替换区,将整理区数据拷贝回替换区,之后擦除整理区,更新变量addrSort,进入步骤25;
步骤25,判读是否还有数据包未写入,如果有,回到步骤22,如果没有,更新变量memHash,结束写入过程。
作为本申请实施例的一种具体实现方式,读出数据包括:
步骤31,判断待读出数据的逻辑页地址和长度是否在eeprom范围内,如果不在范围内,则返回错误;如果在范围内,则根据变量memHash对ram中的全局变量进行校验,如果校验不通过,则返回错误,如果校验通过,则根据数据区物理页大小对待读出数据进行分包,然后进入步骤32;
步骤32,计算当前包要读取的逻辑页地址、页内偏移地址和数据长度,根据物理页与逻辑页间的映射关系,读取对应物理页数据到缓存并解密,根据数据校验值对解密后的数据进行校验,如果校验不通过,则返回错误;如果校验通过,则将该包数据更新到读函数输出缓存对应的位置,然后进入步骤33;
步骤33,判读是否还有数据包未读取,如果有,回到步骤32,如果没有,结束读取过程。
作为本申请实施例的一种具体实现方式,初始化区校验值、数据校验值、成功拷贝标记和变量memHash是根据SM3算法得到的hash值。
作为本申请实施例的一种具体实现方式,所述方法还包括:
针对替换区的每条记录,如果该记录对应的成功写入标记不完整,判断该记录为无效记录。
作为本申请实施例的一种具体实现方式,初始化区位于MCU内部。
本申请的实施例将norflash分为若干功能区域,可根据需要灵活调整各区域大小,便于在不同硬件平台和应用方式间移植;使用替换区记录逻辑页和物理页对应关系,根据记录的完整性判断当次写入是否成功,能够实现有效掉电保护。此外本申请还对各个分区的数据进行加密和/或校验,以提高数据读写的可靠性和安全性。
附图说明
通过结合附图对本申请示例性实施方式进行更详细的描述,本申请的上述以及其它目的、特征和优势将变得更加明显,其中,在本申请示例性实施方式中,相同的参考标号通常代表相同部件。
图1显示根据本申请一个示例性实施方式的上电初始化norflash的流程示意图。
图2显示根据本申请一个示例性实施方式的向eeprom写入数据的流程示意图。
图3显示根据本申请一个示例性实施方式的读取eeprom的流程示意图。
具体实施方式
下面将更详细地描述本申请的优选实施方式。虽然以下描述了本申请的优选实施方式,然而应该理解,可以以各种形式实现本申请而不应被这里阐述的实施方式所限制。
本申请提出了一种使用norflash模拟eeprom的方法。该方法包括:
将norflash分为初始化区、数据区、替换区、整理区;
在初始化区存入初始化标记、密钥和初始化区校验值,所述密钥用于对存储在norflash的数据进行加密;
将数据区划分为多个物理页,数据区物理页与eeprom逻辑页映射,以模拟eeprom进行数据写入和读出,物理页存储使用密钥加密后的对应逻辑页数据和根据对应逻辑页数据生成的数据校验值;
写入数据后,将当前写入的物理页与eeprom逻辑页间的映射关系以及成功写入标记存储在替换区作为记录;
当替换区写满时,将数据区物理页与eeprom逻辑页间的最新映射关系拷贝到整理区,然后在整理区写入成功拷贝标记,并将整理区数据拷贝回已擦除的替换区,最后擦除整理区。
以下给出了根据申请的一个具体实施方式。本实施方式使用128K字节大小的norflash模拟32000字节大小eeprom。将norflash分为初始化区、数据区、替换区、整理区,各区域由若干物理页组成。eeprom分为64个逻辑页,每页大小为500字节,norflash的物理页大小为512字节。使用物理页最后的8字节作为hash值进行数据校验。本实施方式用到的hash值计算方法为:使用SM3算法对源数据进行计算得到32字节数组A,再将A前16字节后16字节进行异或得到16字节数组B,最后将字节数组B前8字节和后8字节异或得到最终hash值。
初始化区保存初始化标记和密钥,为保证安全,初始化区必须位于芯片内部,其余区域可位于芯片外部的外扩norflash。初始化区数据格式如下:
0xaaaaaaaa(初始化标记)+500字节随机数+8字节hash值(即为初始化区校验值,使用约定的算法计算前504字节得出)。
上电时根据数据格式和校验值判断是否初始化成功,如果没有初始化成功,需要重新初始化。可选用随机数中的的32字节作为SM4算法密钥,用于加密存储norflash上的数据。特别地,当选用外扩norflash模拟eeprom时,加密可保证数据安全。
读写eeprom时,实际操作的是数据区上的数据,根据逻辑地址计算出eeprom逻辑页和页内偏移地址,通过eeprom逻辑页和数据区物理页的映射关系访问数据。映射关系以记录形式存在替换区,记录格式如下:
2字节逻辑页号+2字节物理页号+0xaaaa(2字节)+前6字节的CRC(2字节),其中后4字节作为成功写入标记。
写eeprom时,先根据映射关系计算出逻辑页和页内偏移,再寻找空闲页,然后读出该页数据到ram,并根据页内偏移更新要写入的数据,将数据写入空闲页,最后更新映射关系,产生一条记录写入替换区。如果该次写入发生异常掉电导致记录不完整(根据成功写入标记是否完整来判断),上电初始化会忽略该条记录,使用上一条有效记录建立映射关系。
当记录顺序地写满替换区后,需要通过整理区将替换区进行整理。整理时,先将所有最新有效的记录拷贝到整理区,然后在整理区末尾保存8字节整理区的hash值(即成功拷贝标记),再擦除替换区,将整理区记录拷贝回替换区,最后擦除整理区。上电时,如果成功拷贝标记校验正确,表明整理数据还没有拷贝回替换区,这时将数据直接拷贝回替换区即可,然后擦除整理区;如果成功拷贝标记全是0xff或校验不正确,说明整理的最后一步擦除整理区已被执行,替换区数据有效,这时不做任何处理。
由于ram存取速度远大于norflash存取速度,为提高检索替换区记录和寻找空闲页的效率,在ram中定义logic2realbuf[ee_page_num]和freepagebit[norflash_pages/8]两个全局数组(以字节为单位)。前者表示eeprom逻辑页和数据区物理页对应关系,后者以bit位表示数据区物理页状态:0表示使用状态,1表示空闲状态;ee_page_num为eeprom逻辑页总数,norflash_pages为norflash数据区物理页总数。例如,logic2realbuf[0]=3:表示eeprom逻辑页0映射数据区物理页3;freepagebit[0]=0xfe:表示数据区物理页0处于使用状态,物理页1~7处于空闲状态。
另外还定义unsigned int addrSort、unsigned char freeBit这两个全局变量,分别指示当前替换区最新可写入地址和最后一次用到的数据区空闲物理页,以便于快速定位替换区写入地址和下一空闲物理页。
在上电时,将freeBit初始化为0,遍历替换区有效记录,利用这些记录初始化logic2realbuf和freepagebit,同时,将addrSort正确赋值;当往eeprom写数据时,先更新ram中全局变量,再根据映射关系写入数据,最后添加记录到替换区。
由于ram中的全局变量关系到数据读写的正确与否,所以读写eeprom前,先对这些数据的正确性进行校验。校验方法如下:将以上定义的数据按如下排列,freepagebit(物理页使用状态)+logic2realbuf(物理页与逻辑页的对应关系)+addrSort(替换区最新可写入地址)+freeBit(最后一次用到的数据区空闲物理页);将排列后的数组按约定的hash算法得到8字节hash值存在全局变量unsigned char memHash[8]中。读写eeprom前,先根据变量memHash进行校验,若不正确,说明内存数据被破坏,需要重新上电初始化。当写操作正确完成时,需要更新变量memHash。
本方案采用上海航芯ACH512芯片实现,norflash物理页大小为512字节,地址空间为0x0006_0000~0x0007_FFFF共128kB。占用109字节ram,具体如下:
数据区:0x00060000~0x0007F3FF:250物理页
替换区:0x0007F400~0x0007FBFF:4物理页
整理区:0x0007FC00~0x0007FDFF:1物理页
初始化区:0x0007FE00~0x0007FFFF:1物理页
logic2realbuf:64字节
Freepagebit:32字节
addrSort:4字节
freeBit:1字节
memHash:8字节。
图1显示本具体实施方式中上电初始化流程示意图。S101,根据初始化区校验值校验初始化区数据是否正确。如果校验不通过,进入S102,擦除norflash所有物理页,初始化替换区和初始化区,再进入S103。如果S101中校验通过,直接进入S103。
在S103,检查整理区的成功拷贝标记是否正确。如果正确,则进入S104,擦除替换区,拷贝整理区数据到替换区,再擦除整理区,然后进入S105。如果S103的结果是否定的,则直接进入S105。
在S105,遍历替换区,提取有效记录,根据有效记录更新ram中的全局变量。
图2显示本具体实施方式中写入数据的流程示意图。S201,判断待写入数据的长度和要写入的逻辑地址是否在eeprom范围内。如果不在范围内,进入S202,返回错误;如果在范围内,进入S203,根据变量memHash对ram中的全局变量进行校验。如果校验不通过,进入S202,返回错误;如果校验通过,进入S204,对待写入数据进行分包。
S205,计算当前包实际要写入的数据区物理地址(物理页和页内地址偏移),读取该物理页数据到缓存并解密。S206,根据数据校验值对解密后的数据进行校验,如果校验不通过,则返回S202;如果校验通过,进入S207,将当前包更新到缓存中对应位置,并更新该物理页的数据校验值。
S208,寻找数据区下一空闲物理页,更新ram中的数组变量logic2realbuf和变量freeBit,采用SM4算法对缓存中的数据进行加密,然后写入找到的空闲物理页中。
S209,判断替换区是否已写满?如果写满,则进入S210,将最新映射关系和成功拷贝标记写入整理区,擦除替换区,拷贝整理区数据到替换区,再擦除整理区,然后进入S212;如果没写满,则进入S211将这一最新映射关系写入替换区,再进入S212。
在S212,判断是否所有数据包都已写完。如果否,则回到S205,处理下一数据包;如果是,则结束写入过程。
图3显示本具体实施方式中读取数据的流程示意图。S301,判断待读出数据的逻辑地址和长度是否在eeprom范围内,如果不在范围内,则进入S302,返回错误;如果在范围内,则进入S303,根据变量memHash对ram中的全局变量进行校验。如果校验不通过,则进入S302,返回错误;如果校验通过,则进入S304,对待读出数据进行分包,然后进入S305。
S305,计算当前包实际读取的物理地址(物理页和页内偏移地址),读取对应物理页到缓存并解密。S306,根据数据校验值校验解密后的数据是否校验通过。如果不通过,进入S302,返回错误;如果通过,进入S307,更新该包数据到读函数输出缓存对应的位置。
S308,判断是否所有数据包都已读完。如果否,则回到S305,处理下一数据包;如果是,则结束读取过程。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。
Claims (10)
1.一种使用norflash模拟eeprom的方法,其特征在于,所述方法包括:
将norflash分为初始化区、数据区、替换区、整理区;
在初始化区存入初始化标记、密钥和初始化区校验值,所述密钥用于对存储在norflash的数据进行加密;
将数据区划分为多个物理页,数据区物理页与eeprom逻辑页映射,以模拟eeprom进行数据写入和读出,物理页存储使用密钥加密后的对应逻辑页数据和根据对应逻辑页数据生成的数据校验值;
写入数据后,将当前写入的物理页与eeprom逻辑页间的映射关系以及成功写入标记存储在替换区作为记录;
当替换区写满时,将数据区物理页与eeprom逻辑页间的最新映射关系拷贝到整理区,然后在整理区写入成功拷贝标记,并将整理区数据拷贝回已擦除的替换区,最后擦除整理区。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将下列数据存储在ram中作为全局变量:
用于指示当前数据区物理页与eeprom逻辑页间映射关系的数组变量logic2realbuf;
用于指示当前数据区各个物理页是否处于空闲状态的数组变量freepagebit;
用于指示替换区最新可写入地址的变量addrSort;
用于指示数据区最新用到的空闲物理页的变量freeBit
用于对全局变量进行校验的变量memHash。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:采用国密算法对全局变量进行加密。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括根据下列步骤对norflash进行上电初始化:
步骤11,上电后,根据初始化区校验值对初始化区的数据进行校验,如果校验不通过,则先擦除norflash所有物理页,再将数据区物理页与eeprom逻辑页的初始映射关系写入替换区,并将初始化标记、密钥和初始化区校验值写入初始化区,然后进入步骤12;如果校验通过,直接进入步骤12;
步骤12,检查整理区的成功拷贝标记是否正确,如果正确,则擦除替换区后将整理区数据拷贝回已擦除的替换区,然后擦除整理区,再进入步骤13;如果不正确,则直接进入步骤13;
步骤13,遍历替换区,提取有效记录,根据有效记录更新ram中的全局变量。
5.根据权利要求4所述的方法,其特征在于,根据有效记录更新ram中的全局变量包括:
根据有效记录的存储地址设置addrSort;
将数据区物理页与eeprom逻辑页间最新映射关系保存到数组变量logic2realbuf;
根据数据区物理页的空闲状态设置变量freepagebit;
初始化freeBit为0;
计算全局变量的校验值并给memHash赋值。
6.根据权利要求2所述的方法,其特征在于,写入数据包括:
步骤21,判断待写入数据的长度和要写入的逻辑地址是否在eeprom范围内,如果不在范围内,则返回错误;如果在范围内,则根据变量memHash对ram中的全局变量进行校验,如果校验不通过,则返回错误,如果校验通过,则根据数据区物理页大小对待写入数据进行分包,然后进入步骤22;
步骤22,计算当前包要写入的逻辑页地址、页内偏移地址和数据长度,根据物理页与逻辑页间的映射关系,读取对应物理页数据到缓存并解密,根据数据校验值对解密后的数据进行校验,如果校验不通过,则返回错误;如果校验通过,则将当前包更新到缓存中对应位置,并在缓存中更新数据校验值,然后进入步骤23;
步骤23,根据变量freeBit和数组变量freepagebit找到数据区的下一空闲物理页,将要写入的逻辑页映射到找到的空闲物理页,更新数组变量logic2realbuf和变量freeBit,对缓存中的数据进行加密,然后写入找到的空闲物理页中,如果替换区已满,则进入步骤24,否则将要写入的逻辑页最新的映射关系根据变量addrSort写入替换区,进入步骤25;
步骤24,将数组变量logic2realbuf记录的数据区物理页与eeprom逻辑页间最新映射关系写入整理区,然后在整理区写入成功拷贝标记,并擦除替换区,将整理区数据拷贝回替换区,之后擦除整理区,更新变量addrSort,进入步骤25;
步骤25,判读是否还有数据包未写入,如果有,回到步骤22,如果没有,更新变量memHash,结束写入过程。
7.根据权利要求2所述的方法,其特征在于,读出数据包括:
步骤31,判断待读出数据的逻辑页地址和长度是否在eeprom范围内,如果不在范围内,则返回错误;如果在范围内,则根据变量memHash对ram中的全局变量进行校验,如果校验不通过,则返回错误,如果校验通过,则根据数据区物理页大小对待读出数据进行分包,然后进入步骤32;
步骤32,计算当前包要读取的逻辑页地址、页内偏移地址和数据长度,根据物理页与逻辑页间的映射关系,读取对应物理页数据到缓存并解密,根据数据校验值对解密后的数据进行校验,如果校验不通过,则返回错误;如果校验通过,则将该包数据更新到读函数输出缓存对应的位置,然后进入步骤33;
步骤33,判读是否还有数据包未读取,如果有,回到步骤32,如果没有,结束读取过程。
8.根据权利要求2所述的方法,其特征在于,初始化区校验值、数据校验值、成功拷贝标记和变量memHash是根据SM3算法得到的hash值。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对替换区的每条记录,如果该记录对应的成功写入标记不完整,判断该记录为无效记录。
10.根据权利要求1所述的方法,其特征在于,初始化区位于MCU内部。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911397192.3A CN111176579B (zh) | 2019-12-30 | 2019-12-30 | 使用norflash模拟eeprom的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911397192.3A CN111176579B (zh) | 2019-12-30 | 2019-12-30 | 使用norflash模拟eeprom的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176579A CN111176579A (zh) | 2020-05-19 |
CN111176579B true CN111176579B (zh) | 2023-05-30 |
Family
ID=70652268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911397192.3A Active CN111176579B (zh) | 2019-12-30 | 2019-12-30 | 使用norflash模拟eeprom的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111176579B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506712B (zh) * | 2020-12-19 | 2024-06-21 | 苏州思立特尔半导体科技有限公司 | 一种基于硬拷贝的mcu模拟eeprom的数据保护方法 |
CN114610230B (zh) * | 2022-01-27 | 2023-02-07 | 福建时代星云科技有限公司 | 一种基于单片机的闪存数据交换方法及终端 |
CN117289860A (zh) * | 2023-09-05 | 2023-12-26 | 北京智芯微电子科技有限公司 | 嵌入式微控制器及其数据读写方法 |
CN117742588B (zh) * | 2023-11-30 | 2024-06-04 | 武汉芯必达微电子有限公司 | 使用Flash模拟EEPROM的数据存储方法及系统 |
CN118034610B (zh) * | 2024-04-07 | 2024-07-02 | 深圳市纽创信安科技开发有限公司 | 应用于存储器的密钥数据处理方法、存储器、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003096157A2 (en) * | 2002-05-10 | 2003-11-20 | Veritas Software Corporation | Method and apparatus for creating a virtual data copy |
CN101202085A (zh) * | 2004-05-25 | 2008-06-18 | 三星电子株式会社 | 信息记录介质、记录/再现方法、和记录/再现设备 |
CN101208669A (zh) * | 2005-06-30 | 2008-06-25 | 英特尔公司 | 写入非易失性存储器的技术 |
CN102736981A (zh) * | 2011-04-08 | 2012-10-17 | 航天信息股份有限公司 | 提高nor flash擦写寿命的方法 |
CN107291405A (zh) * | 2017-08-17 | 2017-10-24 | 北京中电华大电子设计有限责任公司 | 一种NorFlash的数据管理方法与装置 |
CN110096451A (zh) * | 2018-01-29 | 2019-08-06 | 华为技术有限公司 | 一种数据存储方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250875A1 (en) * | 2009-03-25 | 2010-09-30 | Silicon Laboratories Inc. | Eeprom emulation using flash memory |
-
2019
- 2019-12-30 CN CN201911397192.3A patent/CN111176579B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003096157A2 (en) * | 2002-05-10 | 2003-11-20 | Veritas Software Corporation | Method and apparatus for creating a virtual data copy |
CN101202085A (zh) * | 2004-05-25 | 2008-06-18 | 三星电子株式会社 | 信息记录介质、记录/再现方法、和记录/再现设备 |
CN101208669A (zh) * | 2005-06-30 | 2008-06-25 | 英特尔公司 | 写入非易失性存储器的技术 |
CN102736981A (zh) * | 2011-04-08 | 2012-10-17 | 航天信息股份有限公司 | 提高nor flash擦写寿命的方法 |
CN107291405A (zh) * | 2017-08-17 | 2017-10-24 | 北京中电华大电子设计有限责任公司 | 一种NorFlash的数据管理方法与装置 |
CN110096451A (zh) * | 2018-01-29 | 2019-08-06 | 华为技术有限公司 | 一种数据存储方法及装置 |
Non-Patent Citations (2)
Title |
---|
卫兵等.基于闪存设备分区的 新型虚拟EEPROM 设备的设计与研究.中国知网.2014,全文. * |
韩金霞等.基于微控制器的FLASH 模拟EEPROM 的设计.中国知网.2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111176579A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176579B (zh) | 使用norflash模拟eeprom的方法 | |
CN101427323B (zh) | 读取非易失性计算机存储器的系统和方法 | |
US20200065256A1 (en) | Logical to physical memory address mapping tree | |
US6970890B1 (en) | Method and apparatus for data recovery | |
US10409717B2 (en) | Data storage device and method for operating data storage device | |
US11100011B2 (en) | Flash translation layer with hierarchical security | |
CN108319433B (zh) | 小内存单片机的NOR Flash的存储管理方法 | |
JP4417629B2 (ja) | ビット変更を可能にする、フラッシュメモリにおける使用のための、改良されたエラー修正方式 | |
CN102844746B (zh) | 用于在存储设备和机器可读的存储介质中生成物理标识符的方法 | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
CN101983376B (zh) | 访问装置、信息记录装置、信息记录系统、文件管理方法和程序 | |
US6839798B1 (en) | Flash memory capable of storing frequently rewritten data | |
TWI486957B (zh) | Nand快閃記憶體燒錄資料的處理、使用方法及裝置、運行系統 | |
US20200327066A1 (en) | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive | |
CN113568579B (zh) | 一种存储器、数据存储方法以及数据读取方法 | |
EP3336702B1 (en) | Metadata recovery method and device | |
TWI528372B (zh) | 資料儲存裝置以及揮發式記憶體的資料校驗方法 | |
CN113885808B (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
US20220171715A1 (en) | Electronic device | |
US20090006749A1 (en) | Drive tracking system for removable media | |
US20090063593A1 (en) | Semiconductor memory device and operation method thereof | |
CN111913890B (zh) | 一种基于安全模组的非易失存储器随机化读写方法 | |
CN117215488A (zh) | 用于nfc安全元件的数据存储方法、装置及nfc安全元件 | |
CA2570401A1 (en) | System and method for testing a data storage device without revealing memory content | |
CN107257281B (zh) | Nor flash存储密钥记录的方法、装置及计算机可读存储介质 |
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 |