国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于Flash的程序分層存儲(chǔ)、運(yùn)行以及升級(jí)的方法和裝置的制造方法

      文檔序號(hào):9396703閱讀:635來源:國(guó)知局
      基于Flash的程序分層存儲(chǔ)、運(yùn)行以及升級(jí)的方法和裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,特別是指一種基于Flash的程序分層存儲(chǔ)、運(yùn)行以 及升級(jí)的方法和裝置。
      【背景技術(shù)】
      [0002] 對(duì)于現(xiàn)有的嵌入式系統(tǒng),由于其程序都比較大,少則幾十兆,多則幾百兆,其已經(jīng) 遠(yuǎn)遠(yuǎn)超過了 CPU內(nèi)部的存儲(chǔ)空間,所以無論是程序的存儲(chǔ)和運(yùn)行都無法在CPU內(nèi)部的ROM 和RAM中完成。
      [0003] 現(xiàn)有技術(shù)是將程序存儲(chǔ)到CPU外部的Flash (閃存)中,運(yùn)行時(shí)將程序讀到CPU外 部的RAM中。Flash主要有Nor Flash和Nand Flash兩種,而Nor Flash由于價(jià)格比較昂 貴,考慮到產(chǎn)品的成本,所以被很少使用,在絕大部分的應(yīng)用中都使用Nand Flash存儲(chǔ)程 序。Nand Flash由于其存儲(chǔ)空間大、價(jià)格低廉等優(yōu)勢(shì)被廣泛的應(yīng)用在各種嵌入式系統(tǒng)中,以 Nand Flash為例,其框圖如圖1所示,其中CPU內(nèi)部的ROM和RAM未示出。
      [0004] 對(duì)于程序的存儲(chǔ),現(xiàn)有技術(shù)是將程序作為一個(gè)整體,存儲(chǔ)到Nand Flash中,如圖2 所示,左邊的陰影部分表示程序的存儲(chǔ)區(qū)域。一般將Nand Flash的從第0塊開始的一塊區(qū) 域分配用來存儲(chǔ)這個(gè)程序,這個(gè)區(qū)域的大小一般是程序大小的2至3倍;程序在被寫入到 Nand Flash中的時(shí)候,從第0塊開始順序?qū)懭耄绻麢z測(cè)到壞塊的話,就跳過壞塊,找到下 一個(gè)好塊接著寫入,直至程序?qū)懭胪瓿桑鐖D3所示,其中第1、5、6塊為壞塊。
      [0005] 當(dāng)程序被存儲(chǔ)在Nand Flash中后,系統(tǒng)上電后,CPU內(nèi)部ROM中固化的啟動(dòng)程序, 會(huì)將Nand Flash前幾 K或十幾 K的代碼拷貝到CPU內(nèi)部的RAM中執(zhí)行,通過這幾 K或十幾 K的代碼將Nand Flash中完整的代碼拷貝到CPU外部的RAM中執(zhí)行。
      [0006] 對(duì)于這種程序的存儲(chǔ)方法,存在以下問題:
      [0007] 第一、可靠性差:由于現(xiàn)有Nand Flash制作工藝的問題,Nand Flash在出廠的時(shí) 候,就伴隨有一定的壞塊,并且在使用過程中也會(huì)出現(xiàn)新的壞塊,如果分配用來存儲(chǔ)程序的 區(qū)域內(nèi)的好塊的總存儲(chǔ)大小小于程序的大小的時(shí)候,那寫入的程序就是有問題的,從而不 能正常啟動(dòng)。
      [0008] 第二、程序難于維護(hù):當(dāng)程序被存儲(chǔ)到Nand Flash中后,需要對(duì)程序進(jìn)行維護(hù)(如 修復(fù)、升級(jí)、打補(bǔ)丁等),由于程序是作為一個(gè)整體存在,Nand Flash的特性決定了在向其寫 入數(shù)據(jù)的時(shí)候必須先要對(duì)其進(jìn)行擦除操作,所以一旦舊程序被擦除,而新程序又寫入失敗 的話,那整個(gè)程序也就遭到了破壞,無法再啟動(dòng)。

      【發(fā)明內(nèi)容】

      [0009] 本發(fā)明提供一種可靠性高,便于維護(hù)的基于Flash的程序分層存儲(chǔ)、運(yùn)行以及升 級(jí)的方法和裝置。
      [0010] 為解決上述技術(shù)問題,本發(fā)明提供技術(shù)方案如下:
      [0011] -種基于Flash的程序分層存儲(chǔ)的方法,所述程序由引導(dǎo)程序和應(yīng)用程序組成, 所述引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,所述應(yīng)用程序用于實(shí)現(xiàn)程序的功能,所述方法 包括:
      [0012] 將所述引導(dǎo)程序?qū)懭隖lash的已知的好塊中;
      [0013] 將所述應(yīng)用程序?qū)懭隖lash中;其中,若遇到壞塊,則根據(jù)預(yù)先建立的壞塊列表, 寫入與該壞塊映射的好塊中,所述壞塊列表中存儲(chǔ)有壞塊和好塊的映射關(guān)系。
      [0014] 一種基于Flash的程序分層運(yùn)行的方法,所述程序由引導(dǎo)程序和應(yīng)用程序組成, 所述引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,所述應(yīng)用程序用于實(shí)現(xiàn)程序的功能,所述引導(dǎo) 程序和應(yīng)用程序都存儲(chǔ)在Flash中,所述方法包括:
      [0015] 從Flash中已知的好塊中讀出所述引導(dǎo)程序至RAM ;
      [0016] 運(yùn)行所述引導(dǎo)程序,初始化程序的運(yùn)行環(huán)境;
      [0017] 從Flash中讀出預(yù)先存儲(chǔ)的應(yīng)用程序至RAM ;其中,若遇到壞塊,則根據(jù)預(yù)先存儲(chǔ) 的壞塊列表,讀出與該壞塊映射的好塊中的數(shù)據(jù),所述壞塊列表中存儲(chǔ)有壞塊和好塊的映 射關(guān)系;
      [0018] 運(yùn)行所述應(yīng)用程序,實(shí)現(xiàn)程序的功能。
      [0019] -種基于Flash的程序分層升級(jí)的方法,所述程序由引導(dǎo)程序和應(yīng)用程序組成, 所述引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,所述應(yīng)用程序用于實(shí)現(xiàn)程序的功能,所述引導(dǎo) 程序和應(yīng)用程序都存儲(chǔ)在Flash中,所述方法包括:
      [0020] 從Flash已知的好塊中讀出所述引導(dǎo)程序至RAM ;
      [0021] 運(yùn)行所述引導(dǎo)程序,初始化程序的運(yùn)行環(huán)境;
      [0022] 接收升級(jí)后的應(yīng)用程序至RAM ;
      [0023] 從Flash中擦除原有的應(yīng)用程序;其中,若遇到壞塊,則根據(jù)預(yù)先存儲(chǔ)的壞塊列 表,擦除與該壞塊映射的好塊中的數(shù)據(jù),所述壞塊列表中存儲(chǔ)有壞塊和好塊的映射關(guān)系;
      [0024] 將升級(jí)后的應(yīng)用程序從RAM寫入Flash;其中,若遇到壞塊,則根據(jù)預(yù)先存儲(chǔ)的壞 塊列表,寫入與該壞塊映射的好塊中。
      [0025] -種基于Flash的程序分層存儲(chǔ)的裝置,所述程序由引導(dǎo)程序和應(yīng)用程序組成, 所述引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,所述應(yīng)用程序用于實(shí)現(xiàn)程序的功能,所述裝置 包括:
      [0026] 第一寫入模塊,用于將所述引導(dǎo)程序?qū)懭隖lash的已知的好塊中;
      [0027] 第二寫入模塊,用于將所述應(yīng)用程序?qū)懭隖lash中;其中,若遇到壞塊,則根據(jù)預(yù) 先建立的壞塊列表,寫入與該壞塊映射的好塊中,所述壞塊列表中存儲(chǔ)有壞塊和好塊的映 射關(guān)系。
      [0028] 一種基于Flash的程序分層運(yùn)行的裝置,所述程序由引導(dǎo)程序和應(yīng)用程序組成, 所述引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,所述應(yīng)用程序用于實(shí)現(xiàn)程序的功能,所述引導(dǎo) 程序和應(yīng)用程序都存儲(chǔ)在Flash中,所述裝置包括:
      [0029] 第一讀取模塊,用于從Flash中已知的好塊中讀出所述引導(dǎo)程序至RAM ;
      [0030] 第一運(yùn)行模塊,用于運(yùn)行所述引導(dǎo)程序,初始化程序的運(yùn)行環(huán)境;
      [0031] 第二讀取模塊,用于從Flash中讀出預(yù)先存儲(chǔ)的應(yīng)用程序至RAM;其中,若遇到壞 塊,則根據(jù)預(yù)先存儲(chǔ)的壞塊列表,讀出與該壞塊映射的好塊中的數(shù)據(jù),所述壞塊列表中存儲(chǔ) 有壞塊和好塊的映射關(guān)系;
      [0032] 第二運(yùn)行模塊,用于運(yùn)行所述應(yīng)用程序,實(shí)現(xiàn)程序的功能。
      [0033] -種基于Flash的程序分層升級(jí)的裝置,所述程序由引導(dǎo)程序和應(yīng)用程序組成, 所述引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,所述應(yīng)用程序用于實(shí)現(xiàn)程序的功能,所述引導(dǎo) 程序和應(yīng)用程序都存儲(chǔ)在Flash中,所述裝置包括:
      [0034] 第三讀取模塊,用于從Flash已知的好塊中讀出所述引導(dǎo)程序至RAM ;
      [0035] 第三運(yùn)行模塊,用于運(yùn)行所述引導(dǎo)程序,初始化程序的運(yùn)行環(huán)境;
      [0036] 第一接收模塊,用于接收升級(jí)后的應(yīng)用程序至RAM ;
      [0037] 第一擦除模塊,從Flash中擦除原有的應(yīng)用程序;其中,若遇到壞塊,則根據(jù)預(yù)先 存儲(chǔ)的壞塊列表,擦除與該壞塊映射的好塊中的數(shù)據(jù),所述壞塊列表中存儲(chǔ)有壞塊和好塊 的映射關(guān)系;
      [0038] 第四寫入模塊,用于將升級(jí)后的應(yīng)用程序從RAM寫入Flash ;其中,若遇到壞塊,則 根據(jù)預(yù)先存儲(chǔ)的壞塊列表,寫入與該壞塊映射的好塊中。
      [0039] 本發(fā)明具有以下有益效果:
      [0040] 本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法中,將程序拆分為引導(dǎo)程序和應(yīng)用程 序,引導(dǎo)程序用于初始化程序的運(yùn)行環(huán)境,應(yīng)用程序用于實(shí)現(xiàn)程序的功能;在存儲(chǔ)時(shí),首先 將引導(dǎo)程序?qū)懭隖lash的已知的好塊中;然后將應(yīng)用程序?qū)懭隖lash中,此時(shí),需要用到壞 塊列表,壞塊列表中存儲(chǔ)有壞塊和好塊的映射關(guān)系,在存儲(chǔ)應(yīng)用程序時(shí),從某一塊開始順序 存儲(chǔ),若遇到壞塊,則通過壞塊列表映射到好塊,將數(shù)據(jù)存儲(chǔ)到好塊中。
      [0041] 本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法對(duì)程序進(jìn)行分層存儲(chǔ),保證了在 Flash中程序存儲(chǔ)的可靠性。首先,將引導(dǎo)程序?qū)懭隖lash的已知的好塊中,保證了引導(dǎo)程 序被可靠的存儲(chǔ)到了 Flash中;然后再將應(yīng)用程序?qū)懭氲紽lash中,由于壞塊列表的映射關(guān) 系,保證了寫入到Flash中的應(yīng)用程序可靠性。
      [0042] 而且,在存儲(chǔ)時(shí),分配用來存儲(chǔ)程序的區(qū)域內(nèi)的壞塊均已通過壞塊列表映射到了 好塊,實(shí)際上可以看作該區(qū)域內(nèi)每個(gè)塊均為好塊,即該區(qū)域的存儲(chǔ)空間是連續(xù)可靠的,只要 分配用來存儲(chǔ)程序的區(qū)域大于程序的大小,則寫入的程序是可靠的,可靠性高。
      [0043] 最后,在對(duì)程序進(jìn)行維護(hù)時(shí),只需要維護(hù)應(yīng)用程序即可,可以不對(duì)引導(dǎo)程序進(jìn)行操 作,這樣即使維護(hù)應(yīng)用程序時(shí)出現(xiàn)了問題,那么引導(dǎo)程序不會(huì)遭到破壞,可以通過引導(dǎo)程序 找出問題原因,并且可以方便的將應(yīng)用程序通過上面的方法重新寫入,便于維護(hù)。
      [0044] 故本發(fā)明的基于Flash的程序分層存儲(chǔ)方法可靠性高,便于維護(hù)。
      【附圖說明】
      [0045] 圖1為嵌入式系統(tǒng)的結(jié)構(gòu)示意圖;
      [0046] 圖2為現(xiàn)有的技術(shù)中程序存儲(chǔ)的不意圖一;
      [0047] 圖3為現(xiàn)有的技術(shù)中程序存儲(chǔ)的不意圖_.;
      [0048] 圖4為Nand Flash的一個(gè)頁的結(jié)構(gòu)示意圖;
      [0049] 圖5為本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法對(duì)Flash進(jìn)行操作的示意圖;
      [0050] 圖6為本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法中映射后的效果圖;
      [0051] 圖7為本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法中的程序存儲(chǔ)位置示意圖;
      [0052] 圖8為本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法流程圖一;
      [0053] 圖9為本發(fā)明的基于Flash的程序分層存儲(chǔ)的方法流程圖二;
      [0054] 圖10為本發(fā)明的基于Flash的程序分層運(yùn)行的方法流程圖;
      [0055] 圖11為本發(fā)明的基于Flash的程序分層升級(jí)的方法流程圖;
      [0056] 圖12為本發(fā)明的基于Flash的程序分層存儲(chǔ)的裝置結(jié)構(gòu)圖;
      [0057] 圖13為本發(fā)明的基于Flash的程序分層存儲(chǔ)的裝置結(jié)構(gòu)圖二;
      [0058
      當(dāng)前第1頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1