使用norflash模拟eeprom的方法技术

技术编号:24205061 阅读:17 留言:0更新日期:2020-05-20 14:19
本申请公开了一种使用norflash模拟eeprom的方法。该方法包括:将norflash分为初始化区、数据区、替换区、整理区;在初始化区存入初始化标记、密钥和校验值;将数据区划分为多个物理页,数据区物理页与eeprom逻辑页映射,以模拟eeprom进行数据写入和读出;写入数据后,将当前写入的物理页与逻辑页间的映射关系以及成功写入标记存储在替换区作为记录;当替换区写满时,将数据区物理页与逻辑页间的最新映射关系拷贝到整理区,然后在整理区写入成功拷贝标记,并将整理区数据拷贝回已擦除的替换区,最后擦除整理区。本申请的方案能提供可靠的掉电保护并保障数据安全,还便于在不同平台移植。

The method of simulating EEPROM with norflash

【技术实现步骤摘要】
使用norflash模拟eeprom的方法
本申请属于嵌入式系统的数据读写领域,更具体地,涉及使用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值。作为本申请实施例的一种具体实现方式,所述方法还包括:针对替换区的每条记录,如果该记录对应的成功写入标记不完整,判断该记录为无效记录。作为本申请实施例的一种具体实现方式,初本文档来自技高网...

【技术保护点】
1.一种使用norflash模拟eeprom的方法,其特征在于,所述方法包括:/n将norflash分为初始化区、数据区、替换区、整理区;/n在初始化区存入初始化标记、密钥和初始化区校验值,所述密钥用于对存储在norflash的数据进行加密;/n将数据区划分为多个物理页,数据区物理页与eeprom逻辑页映射,以模拟eeprom进行数据写入和读出,物理页存储使用密钥加密后的对应逻辑页数据和根据对应逻辑页数据生成的数据校验值;/n写入数据后,将当前写入的物理页与eeprom逻辑页间的映射关系以及成功写入标记存储在替换区作为记录;/n当替换区写满时,将数据区物理页与eeprom逻辑页间的最新映射关系拷贝到整理区,然后在整理区写入成功拷贝标记,并将整理区数据拷贝回已擦除的替换区,最后擦除整理区。/n

【技术特征摘要】
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所述的方法,其特征在于,写入数...

【专利技术属性】
技术研发人员:王招凯范丽
申请(专利权)人:航天信息股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1