基于Flash的程序分层存储、运行以及升级的方法和装置的制造方法

文档序号:9396703阅读:538来源:国知局
基于Flash的程序分层存储、运行以及升级的方法和装置的制造方法
【技术领域】
[0001] 本发明涉及嵌入式系统领域,特别是指一种基于Flash的程序分层存储、运行以 及升级的方法和装置。
【背景技术】
[0002] 对于现有的嵌入式系统,由于其程序都比较大,少则几十兆,多则几百兆,其已经 远远超过了 CPU内部的存储空间,所以无论是程序的存储和运行都无法在CPU内部的ROM 和RAM中完成。
[0003] 现有技术是将程序存储到CPU外部的Flash (闪存)中,运行时将程序读到CPU外 部的RAM中。Flash主要有Nor Flash和Nand Flash两种,而Nor Flash由于价格比较昂 贵,考虑到产品的成本,所以被很少使用,在绝大部分的应用中都使用Nand Flash存储程 序。Nand Flash由于其存储空间大、价格低廉等优势被广泛的应用在各种嵌入式系统中,以 Nand Flash为例,其框图如图1所示,其中CPU内部的ROM和RAM未示出。
[0004] 对于程序的存储,现有技术是将程序作为一个整体,存储到Nand Flash中,如图2 所示,左边的阴影部分表示程序的存储区域。一般将Nand Flash的从第0块开始的一块区 域分配用来存储这个程序,这个区域的大小一般是程序大小的2至3倍;程序在被写入到 Nand Flash中的时候,从第0块开始顺序写入,如果检测到坏块的话,就跳过坏块,找到下 一个好块接着写入,直至程序写入完成,如图3所示,其中第1、5、6块为坏块。
[0005] 当程序被存储在Nand Flash中后,系统上电后,CPU内部ROM中固化的启动程序, 会将Nand Flash前几 K或十几 K的代码拷贝到CPU内部的RAM中执行,通过这几 K或十几 K的代码将Nand Flash中完整的代码拷贝到CPU外部的RAM中执行。
[0006] 对于这种程序的存储方法,存在以下问题:
[0007] 第一、可靠性差:由于现有Nand Flash制作工艺的问题,Nand Flash在出厂的时 候,就伴随有一定的坏块,并且在使用过程中也会出现新的坏块,如果分配用来存储程序的 区域内的好块的总存储大小小于程序的大小的时候,那写入的程序就是有问题的,从而不 能正常启动。
[0008] 第二、程序难于维护:当程序被存储到Nand Flash中后,需要对程序进行维护(如 修复、升级、打补丁等),由于程序是作为一个整体存在,Nand Flash的特性决定了在向其写 入数据的时候必须先要对其进行擦除操作,所以一旦旧程序被擦除,而新程序又写入失败 的话,那整个程序也就遭到了破坏,无法再启动。

【发明内容】

[0009] 本发明提供一种可靠性高,便于维护的基于Flash的程序分层存储、运行以及升 级的方法和装置。
[0010] 为解决上述技术问题,本发明提供技术方案如下:
[0011] -种基于Flash的程序分层存储的方法,所述程序由引导程序和应用程序组成, 所述引导程序用于初始化程序的运行环境,所述应用程序用于实现程序的功能,所述方法 包括:
[0012] 将所述引导程序写入Flash的已知的好块中;
[0013] 将所述应用程序写入Flash中;其中,若遇到坏块,则根据预先建立的坏块列表, 写入与该坏块映射的好块中,所述坏块列表中存储有坏块和好块的映射关系。
[0014] 一种基于Flash的程序分层运行的方法,所述程序由引导程序和应用程序组成, 所述引导程序用于初始化程序的运行环境,所述应用程序用于实现程序的功能,所述引导 程序和应用程序都存储在Flash中,所述方法包括:
[0015] 从Flash中已知的好块中读出所述引导程序至RAM ;
[0016] 运行所述引导程序,初始化程序的运行环境;
[0017] 从Flash中读出预先存储的应用程序至RAM ;其中,若遇到坏块,则根据预先存储 的坏块列表,读出与该坏块映射的好块中的数据,所述坏块列表中存储有坏块和好块的映 射关系;
[0018] 运行所述应用程序,实现程序的功能。
[0019] -种基于Flash的程序分层升级的方法,所述程序由引导程序和应用程序组成, 所述引导程序用于初始化程序的运行环境,所述应用程序用于实现程序的功能,所述引导 程序和应用程序都存储在Flash中,所述方法包括:
[0020] 从Flash已知的好块中读出所述引导程序至RAM ;
[0021] 运行所述引导程序,初始化程序的运行环境;
[0022] 接收升级后的应用程序至RAM ;
[0023] 从Flash中擦除原有的应用程序;其中,若遇到坏块,则根据预先存储的坏块列 表,擦除与该坏块映射的好块中的数据,所述坏块列表中存储有坏块和好块的映射关系;
[0024] 将升级后的应用程序从RAM写入Flash;其中,若遇到坏块,则根据预先存储的坏 块列表,写入与该坏块映射的好块中。
[0025] -种基于Flash的程序分层存储的装置,所述程序由引导程序和应用程序组成, 所述引导程序用于初始化程序的运行环境,所述应用程序用于实现程序的功能,所述装置 包括:
[0026] 第一写入模块,用于将所述引导程序写入Flash的已知的好块中;
[0027] 第二写入模块,用于将所述应用程序写入Flash中;其中,若遇到坏块,则根据预 先建立的坏块列表,写入与该坏块映射的好块中,所述坏块列表中存储有坏块和好块的映 射关系。
[0028] 一种基于Flash的程序分层运行的装置,所述程序由引导程序和应用程序组成, 所述引导程序用于初始化程序的运行环境,所述应用程序用于实现程序的功能,所述引导 程序和应用程序都存储在Flash中,所述装置包括:
[0029] 第一读取模块,用于从Flash中已知的好块中读出所述引导程序至RAM ;
[0030] 第一运行模块,用于运行所述引导程序,初始化程序的运行环境;
[0031] 第二读取模块,用于从Flash中读出预先存储的应用程序至RAM;其中,若遇到坏 块,则根据预先存储的坏块列表,读出与该坏块映射的好块中的数据,所述坏块列表中存储 有坏块和好块的映射关系;
[0032] 第二运行模块,用于运行所述应用程序,实现程序的功能。
[0033] -种基于Flash的程序分层升级的装置,所述程序由引导程序和应用程序组成, 所述引导程序用于初始化程序的运行环境,所述应用程序用于实现程序的功能,所述引导 程序和应用程序都存储在Flash中,所述装置包括:
[0034] 第三读取模块,用于从Flash已知的好块中读出所述引导程序至RAM ;
[0035] 第三运行模块,用于运行所述引导程序,初始化程序的运行环境;
[0036] 第一接收模块,用于接收升级后的应用程序至RAM ;
[0037] 第一擦除模块,从Flash中擦除原有的应用程序;其中,若遇到坏块,则根据预先 存储的坏块列表,擦除与该坏块映射的好块中的数据,所述坏块列表中存储有坏块和好块 的映射关系;
[0038] 第四写入模块,用于将升级后的应用程序从RAM写入Flash ;其中,若遇到坏块,则 根据预先存储的坏块列表,写入与该坏块映射的好块中。
[0039] 本发明具有以下有益效果:
[0040] 本发明的基于Flash的程序分层存储的方法中,将程序拆分为引导程序和应用程 序,引导程序用于初始化程序的运行环境,应用程序用于实现程序的功能;在存储时,首先 将引导程序写入Flash的已知的好块中;然后将应用程序写入Flash中,此时,需要用到坏 块列表,坏块列表中存储有坏块和好块的映射关系,在存储应用程序时,从某一块开始顺序 存储,若遇到坏块,则通过坏块列表映射到好块,将数据存储到好块中。
[0041] 本发明的基于Flash的程序分层存储的方法对程序进行分层存储,保证了在 Flash中程序存储的可靠性。首先,将引导程序写入Flash的已知的好块中,保证了引导程 序被可靠的存储到了 Flash中;然后再将应用程序写入到Flash中,由于坏块列表的映射关 系,保证了写入到Flash中的应用程序可靠性。
[0042] 而且,在存储时,分配用来存储程序的区域内的坏块均已通过坏块列表映射到了 好块,实际上可以看作该区域内每个块均为好块,即该区域的存储空间是连续可靠的,只要 分配用来存储程序的区域大于程序的大小,则写入的程序是可靠的,可靠性高。
[0043] 最后,在对程序进行维护时,只需要维护应用程序即可,可以不对引导程序进行操 作,这样即使维护应用程序时出现了问题,那么引导程序不会遭到破坏,可以通过引导程序 找出问题原因,并且可以方便的将应用程序通过上面的方法重新写入,便于维护。
[0044] 故本发明的基于Flash的程序分层存储方法可靠性高,便于维护。
【附图说明】
[0045] 图1为嵌入式系统的结构示意图;
[0046] 图2为现有的技术中程序存储的不意图一;
[0047] 图3为现有的技术中程序存储的不意图_.;
[0048] 图4为Nand Flash的一个页的结构示意图;
[0049] 图5为本发明的基于Flash的程序分层存储的方法对Flash进行操作的示意图;
[0050] 图6为本发明的基于Flash的程序分层存储的方法中映射后的效果图;
[0051] 图7为本发明的基于Flash的程序分层存储的方法中的程序存储位置示意图;
[0052] 图8为本发明的基于Flash的程序分层存储的方法流程图一;
[0053] 图9为本发明的基于Flash的程序分层存储的方法流程图二;
[0054] 图10为本发明的基于Flash的程序分层运行的方法流程图;
[0055] 图11为本发明的基于Flash的程序分层升级的方法流程图;
[0056] 图12为本发明的基于Flash的程序分层存储的装置结构图;
[0057] 图13为本发明的基于Flash的程序分层存储的装置结构图二;
[0058
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1