避免电子产品开机错误的闪存管理方法

文档序号:6463055阅读:133来源:国知局
专利名称:避免电子产品开机错误的闪存管理方法
避免电子产品开机错误的闪存管理方法
所属技术领域
本发明涉及一种电子产品的闪存的管理方法,尤其涉及避免电子 产品的开机错误的闪存管理方法,保证开机启动时的正确、稳定性。
背景技术
闪存(FlashMemory)因其稳定性、低功耗等特点,且不易受到 震动而损坏,在电子产品、计算机领域得到普遍应用。例如,闪存被 应用在计算机中的BIOS、 PDA、数码相机、手机、数字电视、游戏 机、视频播放器等电子产品中。
由于闪存具有上述优点,现有的电子产品中也采用闪存来存储系 统文件等开机所需要的固件(Firmware)程序,然而,闪存的制造工 艺不能保证在其生命周期中性能的可靠,从而在闪存的制造及使用过 程中会产生坏块。在数据写入时,不能将数据写入坏块,否则,写入 坏块的数据不能被读取,造成数据的损坏或丢失。
因此,对于使用闪存作为固件的存储器的电子产品,在向闪存中 烧录的操作系统文件或开机画面等开机启动文件时,由于坏块的存 在,烧录的操作系统文件或开机画面所在的闪存的地址发生改变,从 而使得电子产品在开机启动时,因为地址的改变而出现开机错误。
如图11所示,若烧录的操作系统文件的闪存的地址位于烧录开机画面的地址之前时,假定操作系统文件需要烧录到闪存的某一地址
为A,开机画面的数据烧录到闪存的地址为A+l,由于地址A为坏 块,则烧录程序不烧录数据到地址A的闪存中,并检测下一闪存块, 若A+1的闪存块仍为坏块,则烧录程序继续检测,若A+2的闪存块 为好块,贝U,操作系统文件将被烧录到A+2的好块中,由于坏块的 存在而使得操作系统文件占用了本应烧录开机画面的两个好块,本来 应该烧录到地址为A+l中的开机画面被烧录到地址A+3的闪存块中。 因此,开机画面的地址发生变化,烧录完成后,开机启动电子产品后, 开机启动程序仍然按照原来的地址从地址A+l读取开机画面的数据, 而实际上,在烧录过程中,本来应该位于地址A+l的闪存块的开机 画面的数据已经因为坏块的存在而写入到地址A+3的闪存块中,故 而,按照地址A+l所读取的开机画面的数据不正确,导致开机界面 出现无画面或者画面错误或者仅仅显示一部分开机画面的情况,影响 电子产品的正常使用。
又,如图IO所示,若操作系统文件烧录于开机画面文件之后, 假定烧录开机画面的闪存地址为B,烧录的操作系统文件的闪存地址 为B+l,当地址为B的闪存块为坏块时,则开机画面的数据不能写入 地址B的闪存块中,烧录程序检测到若地址为B+l为好块,贝lj,开 机画面的数据烧录到地址B+l的闪存块中,而操作系统文件被烧录 到地址B+2闪存块中。烧录完成后,在开机启动该电子产品时,操 作系统文件仍然从原来的地址B+l进行系统文件的引导读取,而实 际上,在烧录过程中,位于地址B+l的数据为开机画面的数据,所读取的数据为开机画面的数据,而并不能正确地读取到操作系统文件 的数据,导致开机启动程序不能够正确地把操作系统文件导入到内存 中,从而出现因操作系统文件不能读取的开机错误甚至出现不能开机 的严重情况,影响正常使用。

发明内容
本发明提供一种避免出现开机错误的闪存存储器的管理方法,解 决开机出现错误的技术问题。
为解决上述的技术问题,本发明提供一种避免电子产品出现开机 错误的闪存管理方法,电子产品采用闪存用以烧录开机启动文件的存 储器,在开机后,包括如下步骤
一种避免电子产品开机错误的闪存管理方法,所述的电子产品的 固件程序是被烧录到闪存中,当电子产品开机启动后,包括如下步骤
(1) 系统初始化,硬件导入开机引导程序,运行开机引导程序;
(2) 转至下一闪存块地址;
(3) 是否到达了根文件系统的起始地址,若是,则进入步骤(7), 若否,则进入步骤(4);
(4) 闪存块是否为坏块,若是,则坏块的计量数加1,同时返 回步骤(2),若否,则进入步骤(5);
(5) 闪存块的数据是否为第一、第二开机启动文件,若是,则 进入步骤(6),若否,则返回步骤(2);
(6) 复制闪存块的数据到内存,同时返回步骤(2)(7)转至内存中运行操作系统并进入系统,开机程序结束。 如上所述,本发明根据闪存的坏块检测情况,对开机启动文件的 地址增加坏块的地址空间的大小的方法,即使作为固件程序的第一、 第二开机启动文件在烧录到闪存块的过程中出现地址的改变,也可以 正确地从第一、第二开机启动文件的新的地址读取数据,从而避免开 机不能启动或开机画面不能正确显示的开机错误,确保电子产品的开 机启动的正确、稳定。


图1是本发明避免出现开机错误的闪存存储器的管理方法的原 理的流程图。
图2至图4是本发明避免出现开机错误的闪存存储器的管理方法 的第一实施例的流程图。
图5是本发明避免出现开机错误的闪存存储器的管理方法的第 一实施例的固件程序存储于闪存块中的结构示意图。
图6至图8是本发明避免出现开机错误的闪存存储器的管理方法 的第二实施例的流程图。
图9是本发明避免出现开机错误的闪存存储器的管理方法的第 一实施例的固件程序存储于闪存块中的结构示意图。
图10是现有技术出现坏块错误的开机画面位于操作系统文件之 后的情况的示意图。
图11是现有技术出现坏块错误的开机画面位于操作系统文件至前的情况的示意图。
具体实施方式
为进一步阐述本发明达成预定目的所采取的技术手段及功效,以 下结合附图及实施例,对本发明避免出现开机错误的闪存管理方法的具体实施方式
及其技术效果,详细说明如下。
在本发明中,电子产品是采用闪存作为开机启动文件的存储器。 在本发明的电子产品中,开机启动文件包括开机引导程序
(Bootloader)、开机画面(Log6)、操作系统内核(Kernel)和根文 件系统(Root file system),开机启动文件是作为固件程序(Firmware) 通过烧录的方式写入到闪存中,且完成烧录后,在用户使用电子产品 中,开机启动文伸不再被修改。在本发明中,用第一、第二开机启动 文件表示开机画面、操作系统内核等文件,本发明的闪存管理方法的 步骤原理概述如下
(1) 系统初始化,硬件导入开机引导程序,运行开机引导程序;
(2) 转至下一闪存块地址;
(3) 是否到达了根文件系统的起始地址,若是,则进入步骤(7), 若否,则进入步骤(4);
(4) 闪存块是否为坏块,若是,则坏块的计量数加1,同时返 回步骤(2),若否,则进入步骤(5);
(5) 闪存块的数据是否为第一、第二开机启动文件,若是,则(6) 复制闪存块的数据到内存,同时返回步骤(2);
(7) 转至内存中运行操作系统并进入系统,开机程序结束。
本发明在具体实施例中,对于开机启动文件所存储的闪存块的检 测和判断根据不同的开机启动文件以及不同的排列顺序而有不同,具 体地,详细的方法步骤如下文的本发明的第一、第二实施例的描述。
结合参阅图2至图5,是本发明避免出现开机错误的闪存管理方 法的第一实施例的流程图以及固件程序在闪存块中的存储结构示意 图。在本实施例中,本实施例中的电子产品的操作系统是采用Linux 内核的操作系统,但本发明的闪存管理方法不局限于使用Linux系统, 同样也可以适宜使用于其他采用闪存作为系统的固件程序存储器的 操作系统中。在本实施例中,本发明的闪存管理方法是嵌入到开机引 导程序中,以便在运行开机引导程序的(是否应该加这个字?)时候, 就可以运行本发明的闪存管理方法,以确保电子产品的启动。操作系 统内核和开机画面的数据分别烧录到闪存中,操作系统内核所要烧录 的闪存块的地址是在开机画面所烧录的闪存块的地址之后,在本实施 例的流程图1至图3中,用count表示记录坏块个数的变量,address 表示当前闪存块的地址变量,用a、 b、 c、 d分别代表加载程序 (bootloader)、开机画面(logo)、操作系统内核(kemel)、根文件系 统(root file system)应该烧录到闪存中的起始地址。在设置有本发 明闪存管理方法的程序的电子产品开机启动的时候,开机引导程序按 照程序中设定的地址,复制开机画面和操作系统内核的数据。闪存制 造商在闪存出厂时,会确保第一块闪存块为好的闪存块,因此我们一般会把开机引导程序或者开机引导程序的关键部分烧录闪存的第一 个存储块,以确保开机引导程序可以正确运行。在开机启动之后,本 发明的闪存管理方法包括如下步骤
(1) 硬件系统进行初始化,导入开机引导程序,并运行导入的 开机引导程序,在进行地址初始化时,将地址初始化为开机启动
的第一块闪存块的地址a,即,闪存块的地址变量address-a, 一 般地,a就是闪存的第一个存储块的地址,a=0,同时初始化表示 坏块个数的计量数,即count:0;
(2) 开机引导程序转至下一地址闪存块的地址,即地址 address=address +1;
(3) 判断当前闪存块的数据是否是开机画面的数据,即根据判 定条件addreSS=b+COunt是否成立,也就是通过判断当前闪存块 地址是否为开机画面的起始位置的地址,以此来判断当前读取的 地址所对应的闪存块的数据是否是开机画面的数据,在闪存块的 固件程序的烧录过程中,如果出现闪存块是坏块的情况,则烧录 程序会依序向后面的好的闪存块继续烧录,故,采用本判定条件, 若在烧录中存在的坏块导致开机画面的起始位置后移,则可以采 用原定本来应该烧录的开机画面的起始位置加上坏块的数量就 是实际烧录后,开机画面存在的正确起始位置,依据此判定条件, 即可判定开机引导程序在引导系统开机启动文件中的不同文件 的位置,以下步骤中的判定条件的计算方法及原理与此相同,以 下不再赘述,在本步骤中,此判定条件是判定开机画面的起始位置,若是,则执行步骤(6),若否,则进行下一步骤;
(4) 检测当前闪存块是否为坏块,即检测闪存地址为address 的闪存块是否是坏块,若是,则执行下一步骤,若否,则返回步 骤(2),在判断闪存块是否为坏块时,可以采用现有的闪存的检 测程序,例如,NAND型闪存的坏块检测中,配合EDC/ECC(错 误探测/错误更正)等软件措施来检测和保障数据的可靠性;
(5) 坏块的计量个数加l,即坏块的变量count+l,并返回步骤 (2)执行;
(6) 判断当前闪存块的地址是否是操作系统内核数据的起始地 址,即,通过判定条件address=c+count是否成立,也就是,通 过判断当前闪存块地址是否是操作系统的起始位置的地址,以此 来判断当前的闪存块的数据是否是操作系统内核的数据,若是, 则执行步骤(11),若否,则进入下一步骤;
(7) 检测当前闪存块是否为坏块,即检测当前闪存地址为 address的闪存块是否是坏块,若是,则转至步骤(9),若否, 则执行下一步骤;
(8) 将当前的数据复制到内存中,显示开机画面到显示屏,并 转至步骤(10)执行;
(9) 坏块的计量数加l,即count+l;
(10) 转至下一闪存块的地址,即地址address-address+l,并 返回步骤(6),即通过判断闪存块的数据是否是操作系统内核的 数据,以此来判断开机画面的数据是否读取完成;(11) 判断当前闪存块是否是根文件系统,即,通过判断当前
闪存块地址为address=d+count是否成立以此来判断地址为 address的闪存块是否是根文件系统的起始位置的地址,若是, 则转至步骤(16),若否,则进入下一步骤;
(12) 检测当前闪存块是否为坏块,g卩,在程序中是检测闪存 块地址为address的闪存块是否是坏块,若是,则转至步骤(14) 执行,若否,则进入下一步骤;
(13) 将当前闪存块中的操作系统的数据复制到内存中,艮P, 在程序中将地址为Address的闪存块的数据复制到内存中;
(14) 坏块的地址空间大小的计量个数加1,即,坏块计量数 count+l s
(15) 转至下一闪存块的地址,即地址address二address+l,并 返回步骤(11)执行,即通过判断闪存块的数据是否是根文件系 统的数据,以此来判断操作系统内核的数据是否读取完成;
(16) 转至内存中操作系统内核所存储的起始位置,开始运行 操作系统内核,并进入操作系统;
(17) 开机启动结束。 在上述的本发明的闪存管理方法中,根据闪存中坏块检测的坏块
计量数的统计,进行坏块的地址空间的大小的计量,将所需要读取的 开机启动文件的读取地址增加坏块所占用的地址空间块数的的大小, 当然,闪存的坏块可能是占用一个地址空间位的大小,也可能是占用 多个地址空间位的大小,例如,原开机画面的起始地址为b,操作系统内核的起始地址为C,若b和C之间有两个坏块占用的地址空间块
数的大小为2,则开机画面将占用操作系统内核的地址c、 c+l的闪 存空间,由此,操作系统内核原始的起始地址位置c则变为c+2,按 照本发明的闪存管理方法,将地址c+2作为操作系统内核的新的起始 地址,在导入操作系统内核时,本发明的闪存管理方法将按照操作系 统内核的新的地址读取操作系统内核的数据,正确进入操作系统,并 在显示屏上显示正确的开机画面。而不会错误地读取原来操作系统地 址的数据,以此确保不出现开机启动时的操作系统的错误。此外,本 发明的闪存管理方法中,还可以将操作系统内核的新的地址进行存 储,以作为设置有本发明的闪存管理方法的电子产品在下一次重新开 机启动时,可以直接按照操作系统内核的新的地址读取数据,而不必 重新执行本发明的闪存管理方法再次进行闪存块的检测。
按照上述的本发明的闪存管理方法,避免电子产品在开机后仍然 按照原来的错误的地址读取操作系统内核的数据,而是按照新的操作 系统内核的地址读取正确的操作系统内核的数据,避免了现有技术的 电子产品开机后出现的操作系统内核引导错误而不能进入系统或不 能开机的情况。
结合参阅图6至图9所示,本发明的第二实施例中,是当开机画 面的数据烧录的闪存地址是位于操作系统内核的闪存地址后面时的 情况,第二实施例的步骤中仍然采用与第一实施例相同的符号表示, 第二实施例与第一实施例的不同之处在于,在进行程序的判断中,先检测存储操作系统内核的数据的闪存块,之后,再检测存储开机画面 的数据的闪存块,与第一实施例相同的部份不再赘述,以下简单说明 第二实施例的步骤
(1) 硬件系统进行初始化,导入开机引导程序,并运行导入 的开机引导程序,在进行地址初始化时,将地址初始化为开机启
动的第一块闪存块的地址a, g卩,闪存块的地址变量address-a, 一般地,a就是闪存的第一个存储块的地址,a-0,同时初始化表 示坏块个数的计量数,即count=0;
(2) 开机引导程序转至下一地址闪存块的地址,即地址 address=address +1;
(3) 判断当前闪存块的数据是否是开机画面的数据,即根据 判定条件address=c+count是否成立,若是,则执行步骤(6), 若否,则进行下一步骤;
(4) 检测当前闪存块是否为坏块,若是,则执行下一步骤, 若否,则返回步骤(2);
(5) 坏块的计量个数加1,即坏块的变量count+l,并返回步 骤(2)执行;
(6) 判断当前闪存块的地址是否是开机画面的文件的起始 地址,即,通过判定条件address=b+count是否成立,若是,则 执行步骤(11),若否,则进入下一步骤;
(7) 检测当前闪存块是否为坏块,即检测当前闪存地址为 address的闪存块是否是坏块,若是,则转至步骤(9),若否,则执行下一步骤;
(8) 将当前的数据复制到内存中,并转至步骤(10)执行;
(9) 坏块的计量数加l,即count+l;
(10) 继续转至下 一 地址闪存块的地址,即地址 address=address+l,并返回步骤(6),即通过判断闪存块的数据 是否是开机画面的数据,以此来判断操作系统内核的数据是否读 取完成;
(11) 判断当前闪存块是否是根文件系统,即,通过判断当前 闪存块地址为address=d+count是否成立以此来判断当前闪存块 的数据是否是根文件系统的数据,若是,则转至步骤(16),若 否,则进入下一步骤;
(12) 检测当前闪存块是否为坏块,若是,则转至步骤(14) 执行,若否,则进入下一步骤;
(13) 将当前闪存块中的开机画面的数据复制到内存中并显 示到显示屏;
(14) 坏块的地址空间大小的计量个数加1, g卩,坏块计量数 count+l;
(15) 转至下一闪存块的地址,即地址address二address+l,并 返回步骤(11)执行,即通过判断闪存块的数据是否是根文件系 统的数据,以此来判断开机画面的数据是否读取完成;
(16) 转至内存中操作系统内核所存储的起始位置,开始运行 操作系统内核,并进入操作系统;(17) 开机启动结束。
由上述本发明的闪存管理方法,在本发明的第一、第二实施例中, 所不同的是,在第一实施例中,是按照顺序先判断开机画面的闪存块, 再判断操作系统内核的闪存块,第二实施例是中,是先判断操作系统 的闪存块,再判断地址空开机画面的闪存块。本发明的闪存的管理方 法中,还可以将检测到因为闪存块的坏块的存在而改变了的操作系统 内核或者开机画面的新的地址进行存储。在第一实施例中,第一步骤 存储检测存储开机画面的闪存块之前的坏块的计量数为countl,在第 二步骤中存储检测操作系统内核的闪存块之前的坏块的计量数为 count2,在第三步骤中存储根文件系统的闪存块之前的坏块的计量数 为count3,并且将countl,count2,count3存储在一个可靠的位置,例如, 闪存的第一个存储块,进而在下一次开机启动时,仅需分别读取坏块 的计量数countl、 count2、 count3,就可以分别直接地计算出开机画 面、操作系统内核以及根文件系统的起始位置,确保开机后的正常启 动。
本发明的开启文件的开机画面、操作系统内核以及根文件系统在 烧录到闪存块中时,可以任意排列,如,在第一实施例与第二实施例 中,开机画面和操作系统内核的位置调换了,贝U,将检测程序2和检 测程序3的检测步骤进行相应的调换,同时调整开机启动后的第一开 机启动文件的初始位置的判断参数即可。也可以将第一开机文件和第 二开机文件当作同一个文件看待,甚至可以在进入操作系统以后,再 由操作系统用相同的坏块检测方式,来导入开机画面,以及判断件系统数据的正确存储位置。同样,其他开机启动文件之间的顺序的 调整,本领域的普通技术人员也可以依据本发明显而易见地推导或加 以简单变换得出。
由上述可知,本发明是通过电子产品的闪存的坏块的检测,并根 据检测到的坏块位于操作系统内核之前还是位于开机画面之前的情 况,将操作系统内核或者开机画面的地址更新为新的地址,从而使得 电子产品在开机启动时,避免开机引导系统不能正确读取操作系统内 核而导致出现开机错误或者不能开机,或者避免开机画面在引导读取 时不能正确显示或者仅显示部分开机画面的情况。
本发明的具体的实施例非用以限定本发明,仅用以说明本发明的 技术方案和效果,本领域的技术人员在本发明的基础上所作的任何显 而易见的替换或改变,均为本发明的保护范围。
权利要求
1、一种避免电子产品开机错误的闪存管理方法,所述的电子产品的固件程序是被烧录到闪存中,电子产品开机启动后,其特征在于,包括如下步骤(1)系统初始化,硬件导入开机引导程序,运行开机引导程序;(2)转至下一闪存块地址;(3)是否到达了根文件系统的起始地址,若是,则进入步骤(7),若否,则进入步骤(4);(4)闪存块是否为坏块,若是,则坏块的计量数加1,同时返回步骤(2),若否,则进入步骤(5);(5)闪存块的数据是否为第一、第二开机启动文件,若是,则进入步骤(6),若否,则返回步骤(2);(6)复制闪存块的数据到内存,同时返回步骤(2);(7)转至内存中运行操作系统并进入系统,开机程序结束。
2、 根据权利要求1所述的避免电子产品开机错误的闪存管理方 法,其中,所述的闪存为NAND型闪存。
3、 根据权利要求1所述的避免电子产品开机错误的闪存管理方 法,其中,所述的第一开机启动文件是开机画面的文件,所述第二开 机启动文件是操作系统内核的文件。
4、 根据权利要求1或3所述的避免电子产品开机错误的闪存管 理方法,其中,所述的步骤(7)中运行的操作系统是操作系统内核。
5、 根据权利要求3所述的避免电子产品开机错误的闪存管理方 法,其中,所述的操作系统内核是Linux操作系统内核。
6、 根据权利要求3所述的避免电子产品开机错误的闪存管理方 法,其中,当步骤(5)判断是所述的开机画面的文件时,所述的步 骤(6)还包括将开机画面显示到显示屏。
7、 根据权利要求1或3所述的避免电子产品开机错误的闪存管 理方法,其中,所述的系统初始化是初始化闪存块的地址为0,初始 化坏块的计量个数为0。
8、 根据权利要求1所述的避免电子产品开机错误的闪存管理方 法,其中,所述的第一开机启动文件是操作系统内核的文件,所述第 二开机启动文件是开机画面的文件。
9、 根据权利要求1或8所述的避免电子产品开机错误的闪存管 理方法,其中,所述的步骤(7)中运行的操作系统是操作系统内核。
10、根据权利要求8所述的避免电子产品开机错误的闪存管理方法,其中,所述的系统初始化是初始化闪存块的地址为0,初始化坏 块的计量数为0。
全文摘要
本发明公开一种避免电子产品开机错误的闪存管理方法,电子产品的开机启动文件烧录到闪存中,所述的闪存管理方法是根据闪存的坏块检测情况,将监测到的坏块的地址空间的大小增加到开机启动文件的地址,形成开机启动文件的新的地址,电子产品在开机启动时,读取开机启动文件的新的地址,从而,避免读取开机启动文件的错误的地址而导致的开机错误,以确保电子产品的正常开机启动及使用。
文档编号G06F11/00GK101526907SQ20081010132
公开日2009年9月9日 申请日期2008年3月4日 优先权日2008年3月4日
发明者翔 刘, 王欣涛, 邓国源, 陈志龙 申请人:深圳市爱国者嵌入式系统科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1