使用与非闪存存储嵌入式代码的方法

文档序号:6380827阅读:219来源:国知局
专利名称:使用与非闪存存储嵌入式代码的方法
技术领域
本发明涉及存储嵌入式代码的方法,尤其是指一种使用与非闪存存储嵌入式代码的方法。
背景技术
在现有技术中,常用的非易失闪存一般可以分为两大类,一类是或非闪存(NorFlash),另一类是与非闪存(Nand Flash)。其中的Nor Flash是并行结构,可随机存取,支持嵌入式代码的本地运行,稳定性很好,并具有较快的数据读出速度,所以通常用于系统中的嵌入式代码的存储与数据存储,或者用于不间断运行的应用,例如,蜂窝电话等。;NandFlash是一种串行结构,采用顺序存储方式,比Nor Flash具有更高的存储密度,一般用于大存储量的应用,例如,PDA、数字相机、数码摄像机、IC卡、汽车导航系统、电子图书、MP3播放机、固态磁盘驱动器、2.5G / 3G蜂窝电话、视频流处理和互联网数据下载等。随着技术的飞速发展,系统级芯片(SOC)的规模也越来越大,嵌入式处理器的功能也越来越强,其所需的嵌入式代码量也随之急剧增加,因此所需要的Nor Flash的存储容量也相应加大。但是,由于Nor Flash在制造过程中较难实现较高的存储密度,因此Nor Flash的存储容量一般都比较小,大容量NorFlash的制造成本比较高,因此造成了整个系统的总成本比较高。与Nor Flash相比,Nand Flash在制造过程中容易实现很高的存储密度,因此具有更大的存储容量,其存储容量通常为Nor Flash的几十倍或几百倍,而且其制造成本也相对低廉,一般被用于大容量的数据存储。但是,由于NandFlash不支持嵌入式代码的本地执行,数据读出速度比较慢(但具有较快的数据写入速度),且Nand Flash的稳定性不够好,容易出现坏块,导致所存储的内容丢失。而如果在系统中发生代码丢失的情况,将使得整个系统的稳定性变得很差,因此现有技术中使用Nand Flash来存储嵌入式代码的方法都存在着稳定性差的缺点。综上可知,由于现有技术中的存储嵌入式代码的方法具有如上所述的缺点,因此如何提出一种更好的存储嵌入式代码的方法,以可靠地存储嵌入式代码,是本领域中亟需解决的技术问题。

发明内容
本发明提供了一种使用与非闪存存储嵌入式代码的方法,从而可以可靠地使用与非闪存来存储嵌入式代码。本发明的技术方案包括:一种使用与非闪存存储嵌入式代码的方法,该方法包括:A、从与非闪存中读取嵌入式代码;B、判断错误检查和纠正校验是否正确,如果正确,返回执行步骤A ;否则,执行步骤C ;
C、对代码进行ECC纠错,判断纠错是否成功,如果成功,返回执行步骤A ;否则,读取下一个备份代码,返回执行步骤B。其中,所述步骤A之前还包括:将代码备份到与非闪存不同的块中。其中,所述步骤C中返回执行步骤A之前还进一步包括:对错误备份代码进行纠错更新。其中,所述步骤C中读取下一个备份代码之前还进一步包括:判断当前代码是否为最后一个备份代码,如果是,则报错,结束流程;否则,继续执行步骤C。综上可知,本发明提供了一种使用与非闪存存储嵌入式代码的方法,可以使用与非闪存来存储嵌入式代码,从而提高嵌入式代码存储的稳定性。


图1为本发明实施例中使用Nand Flash存储嵌入式代码的方法的流程图。
具体实施例方式为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明的实施例提供了一种使用与非闪存存储嵌入式代码的方法。图1所示为本发明实施例中使用与非闪存存储嵌入式代码的方法的流程图,如图1所示,本发明的实施例中使用与非闪存存储嵌入式代码的方法包括如下所述的步骤:步骤101,处理器启动后从Nand Flash中读取所存储的嵌入式代码。在本步骤中,当处理器启动后,如果该处理器需要更新缓存中的嵌入式代码时,它将从Nand Flash中读取所需的嵌入式代码。步骤102,判断错误检查和纠正(ECC,Error Checking and Correcting)校验是否正确,如果正确,则返回执行步骤101 ;如果不正确,则执行步骤103。在本步骤中,需要对上述被读取的嵌入式代码进行ECC校验,并判断ECC校验是否正确。所述的ECC是一种指令纠错技术,该技术不仅能检测出嵌入式代码中的多位数据错误,同时还可以指定出错的数位并改正。步骤103,对嵌入式代码进行ECC纠错。步骤104,判断纠错是否成功,如果成功,则执行步骤105 ;如果不成功,则执行步骤 106。步骤105,对错误备份进行纠错更新,并返回执行步骤101。所述的对错误备份进行纠错更新,就是将上述纠错后的嵌入式代码覆盖Nand Flash中该段嵌入式代码所对应的备份代码。步骤106,判断当前嵌入式代码是否为最后一个备份代码,如果是,则执行步骤107 ;否则,执行步骤108。步骤107,报错,并结束流程。由于上述嵌入式代码的所有备份代码都出错,则此时将结束整个流程,并对错误出现的原因进行检查。步骤108,读取下一个备份代码,并返回执行步骤102。即从Nand Flash中读取上述发生错误的嵌入式代码相对应的下一个备份代码,重新返回执行步骤102,对该备份代码进行ECC校验。在进行上述步骤101 108之前,需要预先在Nand Flash中的不同的块中对同一段嵌入式代码进行备份,备份代码的数目可根据具体情况而定,可以是两个备份代码,也可以是多个备份代码,且每个备份代码都有ECC码。当处理器读取Nand Flash中的某段嵌入式代码时,需要先对该段嵌入式代码进行ECC校验。如果校验结果正确,则将该段嵌入式代码存储到处理器的缓存中,等待被读入处理器;如果校验结果错误,则表示该段嵌入式代码出现了某些错误,此时,可对出现上述错误的嵌入式代码进行ECC纠错。如果纠错成功,则将纠错后的嵌入式代码存储到处理器的缓存中,等待被读入处理器,并将上述纠错后的嵌入式代码覆盖Nand Flash中该段嵌入式代码所对应的备份代码;如果出现不可纠错的ECC错误,Nand Flash将读取该段嵌入式代码的其他备份代码,并重复上述的步骤,直到最终将正确的嵌入式代码存储到处理器的缓存中,同时用正确的嵌入式代码覆盖Nand Flash中相应的备份代码。在Nand Flash中,虽然某个块中出现随机错误的概率比较高,但却很少出现块与块之间的关联错误,因此如果将所需存储的每一段嵌入式代码在NandFlash中不同的块中存储若干个备份代码,则当某个块中的某段嵌入式代码出现错误时,可通过读取其他块中相应的备份代码得到正确的嵌入式代码,从而极大地提高了系统的稳定性。综上所述,本发明的实施例提供了一种使用与非闪存存储嵌入式代码的方法,因此可以使用与非闪存来存储嵌入式代码,从而提高嵌入式代码存储的稳定性。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种使用与非闪存存储嵌入式代码的方法,其特征在于,该方法包括: A、从与非闪存中读取嵌入式代码;B、判断错误检查和纠正校验是否正确,如果正确,返回执行步骤A;否则,执行步骤C ; C、对代码进行ECC纠错,判断纠错是否成功,如果成功,返回执行步骤A;否则,读取下一个备份代码,返回执行步骤B。
2.根据权利要求1所述的方法,其特征在于,所述步骤A之前还包括:将代码备份到与非闪存不同的块中。
3.根据权利要求1所述的方法,其特征在于,所述步骤C中返回执行步骤A之前还进一步包括:对错误备份代码进行纠错更新。
4.根据权利要求1所述的方法,其特征在于,所述步骤C中读取下一个备份代码之前还进一步包括: 判断当前代码是否为最后一个备份代码,如果是,则报错,结束流程;否则,继续执行步骤C。
全文摘要
本发明公开了一种使用与非闪存存储嵌入式代码的方法,包括以下步骤A、从与非闪存中读取代码;B、判断错误检查和纠正是否正确,如果正确,返回执行步骤A;否则,执行步骤C;C、对代码进行ECC纠错,判断纠错是否成功,如果成功,返回执行步骤A;否则,读取下一个备份代码,返回执行步骤B。使用本发明所提供的方法,可以使用与非闪存来存储嵌入式代码,从而提高嵌入式代码存储的稳定性。
文档编号G06F11/07GK103092713SQ20121044220
公开日2013年5月8日 申请日期2012年11月7日 优先权日2012年11月7日
发明者吴跃, 张进, 王颖, 贺知明 申请人:无锡成电科大科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1