CN101567217A - 一种安全烧写闪存的方法及数据写入方法 - Google Patents
一种安全烧写闪存的方法及数据写入方法 Download PDFInfo
- Publication number
- CN101567217A CN101567217A CNA2008100932301A CN200810093230A CN101567217A CN 101567217 A CN101567217 A CN 101567217A CN A2008100932301 A CNA2008100932301 A CN A2008100932301A CN 200810093230 A CN200810093230 A CN 200810093230A CN 101567217 A CN101567217 A CN 101567217A
- Authority
- CN
- China
- Prior art keywords
- data
- storage unit
- write
- flash memory
- page
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种安全烧写闪存的方法及数据写入方法,安全烧写闪存的方法包括:将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据;将标识闪存中有效存储单元位置的信息做为索引,并将所述索引写入闪存的启动块中。本发明的方法可以保证数据都写在完好的闪存数据块上,保证了数据不会因为闪存的质量问题而丢失。
Description
技术领域
本发明涉及一种内存烧写方法,尤其涉及一种安全烧写闪存的方法及数据写入方法。
背景技术
Flash(闪存)是嵌入式系统中常用的存储设备,一般用来保存掉电不丢失的数据,例如:bootloader(引导加载程序)、kernel image(内核镜像)、file system(文件系统)等。一般的NAND Flash(与非闪存)在其最前面的启动块中不会有坏块的,所以在此启动块空间可以保存一些不能发生错误的数据;而其余的部分,有可能会产生一些坏块,这跟生产厂家的生产质量有关。
烧写NAND Flash的方法很多,市场上有很多种NAND Flash烧写器。图1所示的烧写方式,是指定一个地址,将数据整个烧写进去,并不考虑Flash内部是否有坏块的情况。如果Flash内部有坏块,将会导致写入的数据不完整,如果写入的是kernel image,那么在系统启动时,系统就无法正常运行。
如图2所示,另外一种烧写方法是用JTAG(Joint Test Action Group,联合测试行动组)口烧写Flash的时候将重要的数据(例如kernel image)分别烧录在两个地址下,相当于做了一个备份,如果一块出了问题,则从备份中的对应的块中读取数据。
上述方法中,很可能出现将数据保存在Flash的坏块上的情况,如果保存的是操作系统镜像,则会导致整个系统不能运行。
发明内容
本发明要解决的技术问题是提供一种安全烧写闪存的方法,保证数据都写入闪存中完好的数据块。
为了解决上述问题,本发明提供了一种安全烧写闪存的方法,包括:将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据;将标识闪存中有效存储单元位置的信息做为索引,并将所述索引写入闪存的启动块中。
进一步地,将数据写入所述存储单元后,根据系统设定规则计算写入此存储单元的数据所对应的冗余校验数据,并将写入此存储单元的数据读出,根据所述规则计算读出数据对应的冗余校验数据,判断两次计算得到的冗余数据是否相同,如果相同,确定此存储单元无坏块,否则,确定此存储单元有坏块。
进一步地,将数据写入闪存后,系统启动时或启动后,根据所述索引中有效存储单元位置的信息将各个有效存储单元中的数据读出,并写入系统内存;所述有效存储单元位置的信息是指有效存储单元的首地址。
进一步地,所述闪存为与非闪存。
进一步地,在与非闪存中写入数据时,每页分两次写入:每写入256字节的数据后,根据此256字节的数据计算得到8字节的冗余校验数据,将写入的256字节数据读出,计算读出的256字节数据对应的8字节冗余校验数据,判断两次计算得到的冗余检验数据是否相同;如果每页分两次写入时分别判断其写入和读出的数据对应的冗余检验数据均相同,确定此页为有效页,否则,跳过此页,在下一页重新写该页的数据。
进一步地,所述待写入数据为内核镜像文件数据、引导程序可执行文件数据或文件系统数据。
进一步地,在与非闪存中写入数据时,通过联合测试行动组接口或串口或通用串行总线接口将待写入数据写入到同步动态随机存取存储器中,再从所述同步动态随机存取存储器中读出写入与非闪存中。
本发明还提供了一种数据写入方法,包括:将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据。
进一步地,将数据写入所述存储单元后,根据系统设定规则计算写入此存储单元的数据所对应的冗余校验数据,并将写入此存储单元的数据读出,根据所述规则计算读出数据对应的冗余校验数据,判断两次计算得到的冗余数据是否相同,如果相同,确定此存储单元无坏块,否则,确定此存储单元有坏块。
进一步地,在闪存中写入数据时,每页分两次写入:每写入256字节的数据后,根据此256字节的数据计算得到8字节的冗余校验数据,将写入的256字节数据读出,计算读出的256字节数据对应的8字节冗余校验数据,判断两次计算得到的冗余检验数据是否相同;如果每页分两次写入时判断其写入和读出的数据对应的冗余检验数据均相同,确定此页为有效页,否则,跳过此页,在下一页重新写该页的数据。
与其他烧写Flash的方法相比,本发明的方法可以保证数据都写在完好的Flash数据块上,保证了数据不会因为Flash的质量问题而丢失。
附图说明
图1是现有技术中不考虑Flash中有坏块的烧写方法示意图;
图2是现有技术中考虑Flash有坏块并只做备份的烧写方法示意图;
图3是本发明的烧写方法的流程图;
图4是本发明中烧写方法的示意图。
具体实施方式
本发明的方法包括:在闪存中写入数据时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据;确定闪存中各个有效存储单元的首地址做为索引,并将所述索引写入闪存的启动块中;上述方法可解决由于NAND Flash质量问题导致重要数据(尤其是操作系统镜像数据)保存失败的问题,保证数据都写在完好的Flash数据块上。
如图3所示,本发明中烧写内存的方法包括以下步骤:
步骤301,将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据;
写入数据时,每次将数据写入一存储单元时,根据系统设定规则计算写入此存储单元的数据所对应的冗余校验数据,将写入此存储单元的数据读出,并根据上述系统设定规则计算读出数据所对应的冗余数据,判断两次计算得到的冗余数据是否相同,如果相同,则确定段存储单元为有效存储单元,在此存储单元结束位置继续写入数据,否则,跳过此存储单元,在下一个存储单元重新写入数据。
上述存储单元的大小为512字节,NAND Flash的一个页(page)为512+16字节,在NAND Flash中写入数据时,每页分两次写:每写256字节的数据时,根据此256字节的数据产生8字节的冗余校验数据,写入256字节数据后,将其读出,同时计算读出的256字节数据对应的8字节冗余校验数据,判断两次计算得到的冗余检验数据是否相同,如果每页分两次写入时判断其写入和读出的数据对应的冗余检验数据均相同,则说明此页中无坏块,否则说明此页中有坏块,则跳过此页,在下一页重新写该页的内容。
根据256字节的数据计算其对应的冗余校验数据的方法很多,此处不再赘述。
步骤302,将标识闪存中各个有效存储单元位置的信息做成一个索引,保存在闪存的启动块中。
可以将闪存中各个有效存储单元的首地址做成索引;
系统启动时或启动后,根据上述索引将Flash中的数据从各个存储单元读出。
NAND Flash在最开始的启动块中没有坏块,在NAND Flash中写入数据时,将所有有效页的首地址做成一个索引,保存在NAND Flash的启动块中中。
因为无法通过JTAG口直接将数据写到NAND Flash中,所以可以先将待写入的数据写入到系统的SDRAM(同步动态随机存取存储器)中,再将其写入到NAND Flash中。待写入的数据可以是内核镜像文件数据、引导程序可执行文件数据、文件系统数据,可以将待写入的数据通过JTAG口或串口或USB(通用串行总线)接口写入到系统的SDRAM中。
下面以烧写内核镜像文件数据为例,说明本发明的方法:
步骤1、将内核镜像文件数据通过JTAG口写入到SDRAM中;
步骤2、将内核镜像文件数据从SDRAM中写入NAND Flash中;
在NAND Flash中写入数据时,每页分两次写:每写256字节的数据时,根据此256字节的数据产生8字节的冗余校验数据,写入256字节数据后,将其读出,同时计算读出的256字节数据对应的8字节冗余校验数据,和写入时产生的8字节的冗余检验相比较,若相同,则说明Flash中写入256字节的存储空间良好,判断此页为有效页,否则说明写入256字节的存储空间中有坏块,则跳过此页,在下一页重新写该页的内容。
步骤3、将所有有效页的首地址做成一个索引,保存在Flash的启动块中;系统启动运行时或启动后,根据上述索引将Flash中的数据逐页读出;
例如,bootloader引导加载程序的首地址为0x00000000;
索引的首地址为0x1000;
内核镜像存放的首地址为0x4000。
其中,在NAND Flash中写入数据时,系统运行可执行程序writefiletoflash,可执行程序writefiletoflash中包括:写Flash函数;读Flash函数;比较冗余校验码函数;打开文件函数;关闭文件函数;还包括保存地址索引的数组。
步骤4、将内核镜像文件数据根据上述方法写入NAND Flash后,系统上电启动时,根据上述索引将NAND Flash中的数据逐页读入到内存中并完成系统启动。
如图4所示的本发明中烧写方法的示意图中,写入内核镜像文件数据时,跳过Flash中的坏块,进行内核镜像文件数据的存储。根据Flash的有效页构建的索引位于Flash的启动块中。
与其他烧写NAND Flash的方法相比,虽然烧写的速度慢,而且需要额外的空间保存地址索引,但能够保证数据都写在完好的Flash页,保证了数据不会因为Flash的质量问题而丢失。
上述方法中既适用于软件操作系统也适用于嵌入式操作系统。
本发明还提出了一种数据写入方法,包括:将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据。其原理与上述方法同理,此处不再赘述。
本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
1、一种安全烧写闪存的方法,其特征在于,
将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据;
将标识闪存中有效存储单元位置的信息做为索引,并将所述索引写入闪存的启动块中。
2、如权利要求1所述的方法,其特征在于,
将数据写入所述存储单元后,根据系统设定规则计算写入此存储单元的数据所对应的冗余校验数据,并将写入此存储单元的数据读出,根据所述规则计算读出数据对应的冗余校验数据,判断两次计算得到的冗余数据是否相同,如果相同,确定此存储单元无坏块;否则,确定此存储单元有坏块。
3、如权利要求1或2所述的方法,其特征在于,
将数据写入闪存后,系统启动时或启动后,根据所述索引中有效存储单元位置的信息将各个有效存储单元中的数据读出,并写入系统内存;所述有效存储单元位置的信息是指有效存储单元的首地址。
4、如权利要求1或2所述的方法,其特征在于,
所述闪存为与非闪存。
5、如权利要求4所述的方法,其特征在于,
在与非闪存中写入数据时,每页分两次写入:每写入256字节的数据后,根据此256字节的数据计算得到8字节的冗余校验数据,将写入的256字节数据读出,计算读出的256字节数据对应的8字节冗余校验数据,判断两次计算得到的冗余检验数据是否相同;如果每页分两次写入时分别判断其写入和读出的数据对应的冗余检验数据均相同,确定此页为有效页;否则,跳过此页,在下一页重新写该页的数据。
6、如权利要求1所述的方法,其特征在于,
所述待写入数据为内核镜像文件数据、引导程序可执行文件数据或文件系统数据。
7、如权利要求4所述的方法,其特征在于,
在与非闪存中写入数据时,通过联合测试行动组接口或串口或通用串行总线接口将待写入数据写入到同步动态随机存取存储器中,再从所述同步动态随机存取存储器中读出写入与非闪存中。
8、一种数据写入方法,其特征在于,
将待写入数据写入闪存中时,每次将数据写入闪存的一存储单元后,判断此存储单元是否无坏块,如果无坏块,确定此存储单元为有效存储单元,否则,跳过此存储单元在下一个存储单元重新写入数据。
9、如权利要求8所述的方法,其特征在于,
将数据写入所述存储单元后,根据系统设定规则计算写入此存储单元的数据所对应的冗余校验数据,并将写入此存储单元的数据读出,根据所述规则计算读出数据对应的冗余校验数据,判断两次计算得到的冗余数据是否相同,如果相同,确定此存储单元无坏块;否则,确定此存储单元有坏块。
10、如权利要求9所述的方法,其特征在于,
在闪存中写入数据时,每页分两次写入:每写入256字节的数据后,根据此256字节的数据计算得到8字节的冗余校验数据,将写入的256字节数据读出,计算读出的256字节数据对应的8字节冗余校验数据,判断两次计算得到的冗余检验数据是否相同;如果每页分两次写入时判断其写入和读出的数据对应的冗余检验数据均相同,确定此页为有效页;否则,跳过此页,在下一页重新写该页的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100932301A CN101567217A (zh) | 2008-04-23 | 2008-04-23 | 一种安全烧写闪存的方法及数据写入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100932301A CN101567217A (zh) | 2008-04-23 | 2008-04-23 | 一种安全烧写闪存的方法及数据写入方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101567217A true CN101567217A (zh) | 2009-10-28 |
Family
ID=41283335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100932301A Pending CN101567217A (zh) | 2008-04-23 | 2008-04-23 | 一种安全烧写闪存的方法及数据写入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101567217A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101958151A (zh) * | 2010-08-26 | 2011-01-26 | 南京通用电器有限公司 | 一种电可擦可编程只读存储器的读写方法 |
CN102237143A (zh) * | 2010-04-21 | 2011-11-09 | 深圳市江波龙电子有限公司 | 一种闪存块信息的重建方法、系统及重建设备 |
CN102646067A (zh) * | 2012-02-27 | 2012-08-22 | 深圳市共进电子股份有限公司 | 一种嵌入式软件的测试方法 |
CN103064710A (zh) * | 2012-12-26 | 2013-04-24 | 深圳市诺威达科技有限公司 | 一种flash烧录方法和装置 |
CN104750565A (zh) * | 2013-12-31 | 2015-07-01 | 重庆重邮信科通信技术有限公司 | Nand坏块处理方法及nand闪存设备 |
CN105117237A (zh) * | 2015-04-22 | 2015-12-02 | 北京天诚盛业科技有限公司 | 基于Flash的程序分层存储、运行以及升级的方法和装置 |
CN105117266A (zh) * | 2015-09-22 | 2015-12-02 | Tcl移动通信科技(宁波)有限公司 | 一种移动终端的刷机方法及系统 |
CN106020735A (zh) * | 2016-05-31 | 2016-10-12 | 晨星半导体股份有限公司 | 一种数据存储方法及数据存储装置 |
CN103914667B (zh) * | 2012-12-29 | 2017-05-24 | 北京谊安医疗系统股份有限公司 | 一种安全读写eeprom的方法及其系统 |
WO2017107160A1 (zh) * | 2015-12-25 | 2017-06-29 | 研祥智能科技股份有限公司 | 基于异构混合内存的nvm坏块识别处理及纠错方法和系统 |
CN110109708A (zh) * | 2019-04-25 | 2019-08-09 | 深圳忆联信息系统有限公司 | 一种控制器NandBoot机制的方法及其系统 |
CN113312065A (zh) * | 2021-06-06 | 2021-08-27 | 深圳市昂科技术有限公司 | 数据烧录方法、装置、终端及存储介质 |
-
2008
- 2008-04-23 CN CNA2008100932301A patent/CN101567217A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102237143A (zh) * | 2010-04-21 | 2011-11-09 | 深圳市江波龙电子有限公司 | 一种闪存块信息的重建方法、系统及重建设备 |
CN102237143B (zh) * | 2010-04-21 | 2014-03-12 | 深圳市江波龙电子有限公司 | 一种闪存块信息的重建方法、系统及重建设备 |
CN101958151A (zh) * | 2010-08-26 | 2011-01-26 | 南京通用电器有限公司 | 一种电可擦可编程只读存储器的读写方法 |
CN102646067A (zh) * | 2012-02-27 | 2012-08-22 | 深圳市共进电子股份有限公司 | 一种嵌入式软件的测试方法 |
CN102646067B (zh) * | 2012-02-27 | 2015-07-29 | 深圳市共进电子股份有限公司 | 一种嵌入式软件的测试方法 |
CN103064710A (zh) * | 2012-12-26 | 2013-04-24 | 深圳市诺威达科技有限公司 | 一种flash烧录方法和装置 |
CN103064710B (zh) * | 2012-12-26 | 2016-09-07 | 深圳市诺威达科技有限公司 | 一种flash烧录方法和装置 |
CN103914667B (zh) * | 2012-12-29 | 2017-05-24 | 北京谊安医疗系统股份有限公司 | 一种安全读写eeprom的方法及其系统 |
CN104750565A (zh) * | 2013-12-31 | 2015-07-01 | 重庆重邮信科通信技术有限公司 | Nand坏块处理方法及nand闪存设备 |
CN104750565B (zh) * | 2013-12-31 | 2019-08-30 | 锐迪科(重庆)微电子科技有限公司 | Nand坏块处理方法及nand闪存设备 |
CN105117237A (zh) * | 2015-04-22 | 2015-12-02 | 北京天诚盛业科技有限公司 | 基于Flash的程序分层存储、运行以及升级的方法和装置 |
CN105117266A (zh) * | 2015-09-22 | 2015-12-02 | Tcl移动通信科技(宁波)有限公司 | 一种移动终端的刷机方法及系统 |
WO2017107160A1 (zh) * | 2015-12-25 | 2017-06-29 | 研祥智能科技股份有限公司 | 基于异构混合内存的nvm坏块识别处理及纠错方法和系统 |
CN106020735A (zh) * | 2016-05-31 | 2016-10-12 | 晨星半导体股份有限公司 | 一种数据存储方法及数据存储装置 |
CN110109708A (zh) * | 2019-04-25 | 2019-08-09 | 深圳忆联信息系统有限公司 | 一种控制器NandBoot机制的方法及其系统 |
CN113312065A (zh) * | 2021-06-06 | 2021-08-27 | 深圳市昂科技术有限公司 | 数据烧录方法、装置、终端及存储介质 |
CN113312065B (zh) * | 2021-06-06 | 2022-10-21 | 深圳市昂科技术有限公司 | 数据烧录方法、装置、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101567217A (zh) | 一种安全烧写闪存的方法及数据写入方法 | |
US9317418B2 (en) | Non-volatile memory storage apparatus, memory controller and data storing method | |
JP4524309B2 (ja) | フラッシュメモリ用のメモリコントローラ | |
TW392173B (en) | Method for controlling non volatile semiconductor memory | |
US8291155B2 (en) | Data access method, memory controller and memory storage system | |
US8904086B2 (en) | Flash memory storage system and controller and data writing method thereof | |
US8806301B2 (en) | Data writing method for a flash memory, and controller and storage system using the same | |
TWI498899B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
US20080189476A1 (en) | Nonvolatile semiconductor storage device and method of managing the same | |
US20130013885A1 (en) | Memory storage device, memory controller, and method for identifying valid data | |
CN102890655A (zh) | 存储器储存装置、其存储器控制器与有效数据识别方法 | |
CN107291374A (zh) | 纪录数据区块的使用时间的方法及其装置 | |
US9501397B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
TW201403323A (zh) | 記憶體儲存裝置及其修復方法 | |
JP4661369B2 (ja) | メモリコントローラ | |
US8589620B2 (en) | Data writing method, memory controller, and memory storage apparatus | |
US20130067141A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
CN112988069B (zh) | 存储器管理方法、存储器存储装置及存储器控制器 | |
CN102109965A (zh) | 闪存储存系统、闪存控制器、电脑系统及模拟方法 | |
CN114356653A (zh) | 一种工控防火墙掉电保护方法及装置 | |
CN102591738A (zh) | 数据管理方法、存储器控制器与嵌入式存储器储存装置 | |
TWI425513B (zh) | 識別快閃記憶體中區塊之資料頁的方法以及相關之記憶裝置 | |
CN109086165A (zh) | 一种基于单片机Flash的数据备份方法、装置及存储介质 | |
KR100575927B1 (ko) | 이동통신 단말기에서 부팅 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20091028 |
|
RJ01 | Rejection of invention patent application after publication |