System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于flash操作的,尤其涉及一种支持备份还原、事务操作、寿命提升的eflash操作方法。
技术介绍
1、在某些应用场景中,会使用一些存储介质存储重要的信息,对存储数据介质的寿命要求很高、同时要求具备异常断电时,数据能回退到更新之前的状态。flash具有如下的优点:
2、1、与低读、写延迟和包含机械部件的磁盘相比,flash存储器的读、写延迟较低;
3、2、统一的读性能,寻道和旋转延迟的消除使得随机读性能与顺序读性能几乎一致;
4、3、低能耗,能量消耗显著低于ram和磁盘存储器;
5、4、高可靠性,mtbf(mean time between failures)比磁盘高一个数量级;
6、5、能适应恶劣环境,包括高温、剧烈震动等。
7、由于这些原因,很多的mcu的存储介质都会选择使用flash。
8、但是,使用flash存储数据时,有如下的缺点:
9、1.在操作上,有一定的要求,即在更新数据前需要对操作的区域做一次擦除操作才可以正常的写入数据且只能按页擦除;
10、2.页擦除的设计寿命只有约10万次;
11、3.flash的空间一般而言会比要存储的数据大一些,有些空间得不到利用;
12、4.一次原子操作中的多次写操作无法保证操作的一致性。
技术实现思路
1、本专利技术的目的是提供一种eflash操作方法及装置,提高flash的空间利用率,并保证
2、为解决上述问题,本专利技术的技术方案为:
3、一种eflash操作方法,包括:
4、设置eflash的物理页结构、缓存空间结构及缓存记录结构,为事务操作提供数据域;
5、定义相关接口,为事务操作提供逻辑基础;
6、其中,所述物理页结构包括head、logic_address、operation_sequence、atomic_number、sector_data及tail数据域,head和tail表明物理页的状态,logic_address表示物理页中保存的逻辑地址,operation_sequence表示操作序号,atomic_number表示原子操作标记,sector_data表示实际存储的数据;
7、将eflash的物理地址映射成逻辑地址,一个逻辑地址对应多个物理地址,所有物理页滚动写,以提高空间利用率;
8、通过操作序号的计数器记录每次操作的序号,用于后续区分操作是否存在异常;
9、通过原子操作的计数器记录每个操作序号中涉及的物理页数,用于保证多页操作的一致性。
10、根据本专利技术一实施例,掉电后判断是否有数据需要还原包括以下步骤:
11、判断是否已处理到最后一个物理页,若是,则判断当前操作数据页数是否为0,若是,则不需要数据还原;若否,则判断当前操作数据页数是否小于操作页中的原子操作页数,若是,则擦除当前操作序号操作的数据页;若否,则判断当前操作中是否有逻辑地址重复,若是,则擦除逻辑地址重复页;
12、当未处理到最后一个物理页时,则判断当前页是否为空页,若是,则更新待处理的物理页地址;若否,则判断当前页是否为有效页,若否,则擦除当前页,更新待处理的物理页地址;
13、若是,则判断当前页的操作序号是否大于当前最大操作序号,若是,则更新当前最大操作序号,并设置当前操作页数为1,记录操作的物理页下标,更新待处理的物理页地址;
14、若否,则判断当前页的操作序号是否等于当前最大操作序号,若是,则记录操作的物理页下标,当前操作页数加1,更新待处理的物理页地址。
15、根据本专利技术一实施例,在读取逻辑地址中的数据时,判断数据是否处理完成,若是,则结束;若否,则将逻辑地址转为物理地址,判断物理地址是否有效,若是,则计算该物理页中的有效数据长度,并与待读取的剩余数据长度比较,取较小的长度的数据输出至缓存,处理长度与迁移值后再判断数据是否处理完成;
16、当物理地址无效时,计算该物理页中有效数据长度,并与待读取的剩余数据长度比较,取较小的长度,并设置输出缓存中相应位置的数据为ff,处理长度与迁移值后再判断数据是否处理完成。
17、根据本专利技术一实施例,在缓存数据时,判断是否超出缓存最大记录条数,若是,则返回错误码;若否,则判断是否超出缓存数据空间大小,若是,则返回错误码;若否,则保存缓存记录和缓存数据,返回成功。
18、根据本专利技术一实施例,在提交数据操作时,扫描缓存空间,判断缓存记录是否处理完成,若否,则计算出缓存记录头和记录尾所在的逻辑页起始地址,判断起始逻辑页是否已经在待更新逻辑页的缓存中,若是,则更新起始逻辑页地址,再次判断缓存记录是否处理完成;若否,则把逻辑页地址加入逻辑页缓存中,更新起始逻辑页地址,再次判断缓存记录是否处理完成。
19、再次扫描缓存空间,判断缓存数据是否处理完成,若否,则获取缓存记录的逻辑地址、逻辑页地址和物理页地址,判断物理页地址是否有效,若是,则设定页地址为查找到的地址,读取物理页中的数据到页数据中,将缓存记录的数据更新到页数据中并更新缓存记录,查找一个空闲页,设定好标记并写入页;
20、当物理页地址无效时,设定页地址无效并设置页数据为ff。
21、扫描缓存记录,确认需要写入的物理页数量,并记录相应的地址,查找空闲的新物理页,把待更新数据写入,擦除旧的物理页。
22、根据本专利技术一实施例,单页数据更新时的掉电处理包括:
23、写新数据操作中断电,此时导致物理页未写完成,该物理页在下次上电的扫描中作为垃圾页擦除,旧的数据未擦除;
24、新数据写完成后到擦除旧页的期间断电,此时导致新页写入成功,旧页未擦除,下次上电扫描中,同一个逻辑地址会对应两个物理页,通过物理页中的操作序号区分新旧数据,按要求把新数据或是旧数据擦除;
25、在擦除旧页时断电,此时新数据已经写入,旧数据也已经破坏,旧页在下次上电时作为垃圾页擦除。
26、根据本专利技术一实施例,多页数据更新时的掉电处理包括:
27、部分物理页写成功时断电,此时部分数据为新数据,部分数据为旧数据,下次上电时,先找到操作序号最大的页,通过页中的原子操作计数器的值找出新写成功的页,然后把这些页擦除;
28、全部物理页写成功、擦除未开始时断电,通过操作序号计数器与原子操作计数器确认新的操作已经完成,然后通过逻辑地址找到旧数据页,按要求删除数据;
29、擦除部分旧物理页时断电,通过操作序号计数器与原子操作计数器确认新的操作已经完成,通过逻辑地址找出旧物理页,把旧物理页全部擦除。
30、一种eflash操作装置,包括:
31、数据结构模块,用于设置eflash的物理页结构、缓存空间结构及本文档来自技高网...
【技术保护点】
1.一种EFlash操作方法,其特征在于,包括:
2.如权利要求1所述的EFlash操作方法,其特征在于,掉电后判断是否有数据需要还原包括以下步骤:
3.如权利要求1所述的EFlash操作方法,其特征在于,在读取逻辑地址中的数据时,判断数据是否处理完成,若是,则结束;若否,则将逻辑地址转为物理地址,判断物理地址是否有效,若是,则计算该物理页中的有效数据长度,并与待读取的剩余数据长度比较,取较小的长度的数据输出至缓存,处理长度与迁移值后再判断数据是否处理完成;
4.如权利要求1所述的EFlash操作方法,其特征在于,在缓存数据时,判断是否超出缓存最大记录条数,若是,则返回错误码;若否,则判断是否超出缓存数据空间大小,若是,则返回错误码;若否,则保存缓存记录和缓存数据,返回成功。
5.如权利要求1所述EFlash操作方法,其特征在于,在提交数据操作时,扫描缓存空间,判断缓存记录是否处理完成,若否,则计算出缓存记录头和记录尾所在的逻辑页起始地址,判断起始逻辑页是否已经在待更新逻辑页的缓存中,若是,则更新起始逻辑页地址,再次判断缓存记录是否
6.如权利要求5所述EFlash操作方法,其特征在于,再次扫描缓存空间,判断缓存数据是否处理完成,若否,则获取缓存记录的逻辑地址、逻辑页地址和物理页地址,判断物理页地址是否有效,若是,则设定页地址为查找到的地址,读取物理页中的数据到页数据中,将缓存记录的数据更新到页数据中并更新缓存记录,查找一个空闲页,设定好标记并写入页;
7.如权利要求6所述EFlash操作方法,其特征在于,扫描缓存记录,确认需要写入的物理页数量,并记录相应的地址,查找空闲的新物理页,把待更新数据写入,擦除旧的物理页。
8.如权利要求1所述的EFlash操作方法,其特征在于,单页数据更新时的掉电处理包括:
9.如权利要求1所述的EFlash操作方法,其特征在于,多页数据更新时的掉电处理包括:
10.一种EFlash操作装置,其特征在于,包括:
...【技术特征摘要】
1.一种eflash操作方法,其特征在于,包括:
2.如权利要求1所述的eflash操作方法,其特征在于,掉电后判断是否有数据需要还原包括以下步骤:
3.如权利要求1所述的eflash操作方法,其特征在于,在读取逻辑地址中的数据时,判断数据是否处理完成,若是,则结束;若否,则将逻辑地址转为物理地址,判断物理地址是否有效,若是,则计算该物理页中的有效数据长度,并与待读取的剩余数据长度比较,取较小的长度的数据输出至缓存,处理长度与迁移值后再判断数据是否处理完成;
4.如权利要求1所述的eflash操作方法,其特征在于,在缓存数据时,判断是否超出缓存最大记录条数,若是,则返回错误码;若否,则判断是否超出缓存数据空间大小,若是,则返回错误码;若否,则保存缓存记录和缓存数据,返回成功。
5.如权利要求1所述eflash操作方法,其特征在于,在提交数据操作时,扫描缓存空间,判断缓存记录是否处理完成,若否,则计算出缓存记录头和记录尾所在的逻辑页起始地址,判断起始逻辑页是否已经在待更新逻辑页的...
【专利技术属性】
技术研发人员:刘祥锋,周玉洁,谭永伟,
申请(专利权)人:上海航芯电子科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。