CN1271526C - 一种刷新嵌入式系统中非易失性存储器的方法 - Google Patents
一种刷新嵌入式系统中非易失性存储器的方法 Download PDFInfo
- Publication number
- CN1271526C CN1271526C CN 03153387 CN03153387A CN1271526C CN 1271526 C CN1271526 C CN 1271526C CN 03153387 CN03153387 CN 03153387 CN 03153387 A CN03153387 A CN 03153387A CN 1271526 C CN1271526 C CN 1271526C
- Authority
- CN
- China
- Prior art keywords
- logical block
- refresh
- nonvolatile memory
- refreshing
- refresh process
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种刷新嵌入式系统中非易失性存储器的方法,通过将非易失性存储器划分逻辑块,并对每个逻辑块进行编号后,借助保存在硬件上的标志,系统每刷新完一逻辑块都做一次记录,使得系统即使在刷新过程意外中断,也可在下次刷新操作中从中断位置开始,因而在一定程度上减少了升级时间,同时由于不需要对已经成功刷新的部分进行重复的数据写入,从而减少了对非易失性存储器上许多存储单元的刷新次数,降低了因刷新次数过多而引起坏快的危险,同时还减少了由于刷新过程较长而导致的发生意外的几率。应用本发明,不需要增加用户成本,对于强调安全快速的进行刷新的嵌入式系统提供了一种低价可靠的解决方案。
Description
技术领域
本发明涉及嵌入式系统技术领域,特别是指一种刷新嵌入式系统中非易失性存储器的方法。
背景技术
由于某种原因或嵌入式系统需要升级时,要对保存数据的非易失性存储器进行刷新。现有的刷新流程如图1所示。
步骤101,系统读入刷新所需的镜像文件;
步骤102,将嵌入式系统中的非易失性存储器上待刷新位置的原有的数据全部擦除;
步骤103,将镜像文件写入到非易失性存储器上,以达到刷新或升级的目的。
上述方法的缺陷在于:由于嵌入式系统本身用来保存程序和数据的非易失性存储器的刷新速度较慢,刷新过程所需时间相对较长,所以,一旦发生意外断电等使刷新过程中断的情况,将造成系统无法启动,此时必须使用特殊的工具和方法再次对该嵌入式系统中的非易失性存储器重新进行刷新操作,以保证该系统可用。而嵌入式系统中的非易失性存储器的写入次数,即刷新次数通常是受限制的。可见,上述刷新方案即浪费时间又减少了该嵌入式系统的可维护性次数。
发明内容
有鉴于此,本发明的目的在于提供一种刷新嵌入式系统中非易失性存储器的方法,使对嵌入式系统中非易失性存储器刷新操作不但可以从头开始,也可以从上次刷新的断点处开始。
为达到上述目的,本发明的技术方案是这样实现的:
一种刷新嵌入式系统中非易失性存储器的方法,该方法包括以下步骤:
a、将嵌入式系统中的非易失性存储器划分为一个以上的逻辑块,对每个逻辑块编号,并应用其中一逻辑块保存刷新过程中已刷新成功的逻辑块的编号;
b、系统对非易失性存储器进行刷新操作时,读入刷新文件,并判断上次刷新过程是否正常结束,如果是,则将已刷新成功的逻辑块的编号清零,并执行步骤c,否则获取上次中断的位置,并将已读入的刷新文件定位到相应的位置后,执行步骤c;
c、每刷新完一个逻辑块后,将已刷新成功逻辑块编号的值加一,并判断刷新过程是否完成,如果是,则结束本次刷新过程,否则,重复执行步骤c。
较佳地,步骤a所述一个以上的逻辑块大小相同。
较佳地,步骤a所述保存刷新过程中已刷新成功的逻辑块编号的逻辑块是非易失性存储器中物理位置上的最后一个。
较佳地,步骤a所述保存刷新过程中已刷新成功的逻辑块编号的逻辑决中还保存刷新完毕标志;所述步骤b进一步包括:将已刷新成功的逻辑块编号的值清零后,将刷新完毕标志置为否,再执行后续步骤;所述步骤c进一步包括:刷新过程完成后,将刷新完毕标志置为是,结束本次刷新过程。
较佳地,所述步骤b是根据刷新完毕标志来判断的。
较佳地,所述步骤b是根据已刷新成功的逻辑块编号乘以逻辑块的大小后所得到的值,获取上次中断的位置。
应用本发明,通过将非易失性存储器划分逻辑块,并对每个逻辑块进行编号后,借助保存在硬件上的标志,使每刷新完一逻辑块都做一次记录,使得系统即使在刷新过程意外中断,也可在下次刷新操作中从中断位置开始,因而在一定程度上减少了升级时间,同时由于不需要对已经成功刷新的部分进行重复的数据写入,从而减少了对非易失性存储器上许多存储单元的刷新次数,降低了因刷新次数过多而引起坏快的危险,同时还减少了由于刷新过程较长而导致的发生意外的几率,并且减少了再次刷新时的操作时间。应用本发明,不需要增加用户成本,对于强调安全快速的进行刷新的嵌入式系统提供了一种低价可靠的解决方案。
附图说明
图1为现有技术的刷新非易失性存储器操作流程示意图;
图2为应用本发明的刷新非易失性存储器操作流程示意图;
图3为应用本发明的对非易失性存储器实现断点刷新的流程图。
具体实施方式
为使本发明的目的、技术方案和效果更加清楚,以下结合附图及实施例对本发明再做进一步详细的说明。
本发明的思路是:将嵌入式系统中用于保存数据的非易失性存储器划分为一个以上的逻辑块,对每个逻辑块编号,并应用其中一逻辑块保存刷新过程数据记录。图2所示为应用本发明的刷新非易失性存储器操作流程示意图。
步骤201,系统读入刷新所需的镜像文件;
步骤202,根据保存的升级过程数据记录,获取待刷新位置;
步骤203,擦除非易失性存储器上一个逻辑块中的数据;
步骤204,将已擦除数据的逻辑块中写入相应的刷新数据,并返回步骤202。直到刷新完毕结束。
上述刷新过程数据记录(update_record)中包括用于记录当前已刷新成功的非易失性存储器上的物理位置逻辑顺序的刷新编号(update_number),和用于记录当前刷新过程正常结束的刷新完毕标志(update_flag)。
当系统对非易失性存储器进行刷新操作时,如果上次刷新过程正常结束,则将update_number的值清零,将update_flag置为否后,读入刷新文件,每刷新完一个逻辑块,将update_number的值加一,当全部刷新完毕后,将update_flag置为是后结束本次刷新过程;如果上次刷新过程是非正常结束,则获取上次中断的位置,并将已读入的刷新文件定位到相应的位置后,每刷新完一个逻辑块,将update_number的值加一,当全部刷新完毕后,将update_flag置为是后结束本次刷新过程。
图3所示为应用本发明的对非易失性存储器实现断点刷新的流程图。
步骤301,读取刷新数据;
步骤302,判断刷新过程数据记录中的update_flag是否为“Y”,如果是,则执行步骤305,否则执行步骤303;
步骤303,读取刷新过程数据记录中的update_number,以确定上次刷新中断时已刷新过的逻辑块数;
步骤304,获取上次刷新中断的位置,即用update_number的值乘以逻辑块的大小得到上次刷新中断的位置,并将刷新文件偏移到断点处后,执行步骤306;
步骤305,重置刷新过程数据记录,即将update_number置为零,将update_flag置为“N”;
步骤306,刷新一个逻辑块,即擦除一个逻辑块中的数据内容后,将已擦除数据的逻辑块中写入相应的刷新数据;
步骤307,update_number的值加一;
步骤308,判断升级过程是否完成,如果是,则执行步骤309,否则返回步骤306;
步骤309,将update_flag置为“Y”后结束本次刷新过程。
现以嵌入式Linux系统为例,具体说明本方案的实现过程:
本实施例的嵌入式Linux系统的系统文件被压缩后为3.3M,所以选用4M的闪存(flash)作为该系统的非易失性存储器,且该系统的flash被完整刷新一遍大约需要118秒。
本实施例所选用flash的最小单位即写入操作的最小基本操作块为32K,将该flash划分为4M/32K,即128个基本操作块,并将刷新过程的数据记录保存在该flash物理位置上的最后一个基本操作块中,数据记录中的update_number的取值范围为0~127。该系统出厂时的update_number置为0,update_flag置为“Y”。
该系统进行刷新操作时,先读入刷新文件,判断update_flag的值为“Y”后,将update_number的值置为0,将update_flag的值置为“N”,再开始刷新操作,即擦除一个基本操作块中的数据,再将相应的数据写入该基本操作块中,再擦除一个基本操作块中的数据,再将相应的数据写入该基本操作块中……,直到全部刷新完毕,将update_flag的值置为“Y”后结束。
如果该系统的刷新操作执行了100秒左右时突然发生意外断电的情况,而此时系统中update_number的值为93,则表示本次刷新过程正在进行第94(因为是从0开始计数,所以93表示第94块)块数据的写入时发生了中断。当系统重新进行刷新操作时,首先读取flash的最后一个基本操作块所记录的数据,由于上次刷新过程出现意外中断,因此得到update_flag的值不为“Y”,且update_number的值为93,这表示系统的上次刷新过程没有正常结束,且刷新到第94块时中断。根据这些信息,刷新文件偏移到93×32K,即3047424字节处继续进行刷新操作,直到将剩余的基本操作块全部刷新完毕,将update_flag的值置为“Y”后结束。这次刷新过程大约用时21秒完成。这样,既避免对已经写入成功的flash块进行重新的写入,又减少了刷新过程的时间,而且避免了再次发生意外的几率,间接地提高了刷新过程的安全性。
以上所述仅为本实用新型的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1、一种刷新嵌入式系统中非易失性存储器的方法,其特征在于,该方法包括以下步骤:
a、将嵌入式系统中的非易失性存储器划分为一个以上的逻辑块,对每个逻辑块编号,并应用其中一逻辑块保存刷新过程中已刷新成功的逻辑块的编号;
b、系统对非易失性存储器进行刷新操作时,读入刷新文件,并判断上次刷新过程是否正常结束,如果是,则将已刷新成功的逻辑块的编号清零,并执行步骤c,否则获取上次中断的位置,并将已读入的刷新文件定位到相应的位置后,执行步骤c;
c、每刷新完一个逻辑块后,将已刷新成功的逻辑块编号的值加一,并判断刷新过程是否完成,如果是,则结束本次刷新过程,否则,重复执行步骤c。
2、根据权利要求1所述的方法,其特征在于,步骤a所述一个以上的逻辑块大小相同。
3、根据权利要求1所述的方法,其特征在于,步骤a所述保存刷新过程中已刷新成功的逻辑块编号的逻辑块是非易失性存储器中物理位置上的最后一个。
4、根据权利要求1所述的方法,其特征在于,
步骤a所述保存刷新过程中已刷新成功的逻辑块编号的逻辑块中还保存刷新完毕标志;
所述步骤b进一步包括:将已刷新成功的逻辑块编号的值清零后,将刷新完毕标志置为否,再执行后续步骤;
所述步骤c进一步包括:刷新过程完成后,将刷新完毕标志置为是,结束本次刷新过程。
5、据权利要求4述的方法,其特征在于,所述步骤b是根.据刷新完毕标志来判断的。
6、据权利要求1所述的方法,其特征在于,所述步骤b是根据已刷新成功的逻辑块编号乘以逻辑块的大小后所得到的值,获取上次中断的位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03153387 CN1271526C (zh) | 2003-08-12 | 2003-08-12 | 一种刷新嵌入式系统中非易失性存储器的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03153387 CN1271526C (zh) | 2003-08-12 | 2003-08-12 | 一种刷新嵌入式系统中非易失性存储器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1581109A CN1581109A (zh) | 2005-02-16 |
CN1271526C true CN1271526C (zh) | 2006-08-23 |
Family
ID=34580038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 03153387 Expired - Fee Related CN1271526C (zh) | 2003-08-12 | 2003-08-12 | 一种刷新嵌入式系统中非易失性存储器的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1271526C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007048272A1 (en) * | 2005-10-24 | 2007-05-03 | Intel Corporation | Method of realizing commands synchronization in supporting multi-threading non-volatile memory file system |
CN100407336C (zh) * | 2005-11-22 | 2008-07-30 | 武汉国光通信有限公司 | 一种嵌入式系统中非易失性存储器的数据存取方法 |
US8171205B2 (en) * | 2008-05-05 | 2012-05-01 | Intel Corporation | Wrap-around sequence numbers for recovering from power-fall in non-volatile memory |
CN102650947B (zh) * | 2012-04-01 | 2015-06-24 | 广东欧珀移动通信有限公司 | 一种Android手持设备连续增量的空中升级方法 |
CN109471656A (zh) * | 2017-09-06 | 2019-03-15 | 上海汽车集团股份有限公司 | 一种程序刷新方法及装置 |
CN109343800B (zh) * | 2018-09-30 | 2021-11-12 | 深圳市得一微电子有限责任公司 | 存储设备管理方法、装置及可读存储介质 |
-
2003
- 2003-08-12 CN CN 03153387 patent/CN1271526C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1581109A (zh) | 2005-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10732857B2 (en) | Techniques for reducing memory write operations using coalescing memory buffers and difference information | |
US10592410B2 (en) | Backup mechanism of writing sequential data to single-level cell buffer and multi-level cell buffer | |
US8316257B2 (en) | NAND power fail recovery | |
US7809900B2 (en) | System, method, and computer program product for delaying an operation that reduces a lifetime of memory | |
US8024507B2 (en) | Transaction-safe FAT file system improvements | |
EP2367110B1 (en) | Emerging bad block detection | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
ATE382892T1 (de) | Flash-speicherdatenkorrektur- und scrub-techniken | |
JP2004213647A (ja) | データ記憶装置およびシステム用のログ構造の書込みキャッシュ | |
CN109558335B (zh) | 一种基于Nor Flash存储器的嵌入式系统的文件存储格式 | |
US9785438B1 (en) | Media cache cleaning based on workload | |
US11467645B2 (en) | Storage device and method for sudden power off recovery thereof | |
WO2023116346A1 (zh) | 异常掉电下Trim数据的恢复方法、系统及固态硬盘 | |
EP3617868A1 (en) | Persistent storage device management | |
CN103984506A (zh) | 闪存存储设备数据写的方法和系统 | |
CN1271526C (zh) | 一种刷新嵌入式系统中非易失性存储器的方法 | |
US10776265B2 (en) | Data storage devices and data processing methods | |
CN111581018B (zh) | 一种数据恢复方法、智能终端及存储介质 | |
CN116185563B (zh) | 一种基于车规级微控制器数据闪存的软件模拟算法 | |
CN113836600B (zh) | 一种Embedded Flash误写保护方法 | |
US7558914B2 (en) | Data object processing of storage drive buffers | |
CN113918485B (zh) | 一种闪存资料防丢失方法、装置、设备及存储介质 | |
CN115657956B (zh) | 一种应对缓存数据丢失的元数据一致性写入方法和系统 | |
CN111563054B (zh) | 一种提高芯片读写速度的方法、智能终端及存储介质 | |
CN115904264B (zh) | 一种存储系统中块的垃圾数据回收方法、装置以及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060823 Termination date: 20200812 |