專利名稱:閃存的存儲(chǔ)空間分配方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種存儲(chǔ)器技術(shù)領(lǐng)域,特別是涉及一種閃存的存儲(chǔ)空間分配方法及裝置。
背景技術(shù):
在嵌入式系統(tǒng)中,F(xiàn)lash存儲(chǔ)器(閃存)是存儲(chǔ)代碼和數(shù)據(jù)的重要資源,F(xiàn)lash存 儲(chǔ)器資源如何有效利用,關(guān)系到使用該系統(tǒng)產(chǎn)品的穩(wěn)定性和成本?,F(xiàn)有技術(shù)中對(duì)Flash存儲(chǔ)器的存儲(chǔ)空間進(jìn)行管理的方案通常采用靜態(tài)分區(qū)方案, 在Flash存儲(chǔ)器初始化的時(shí)候,為各個(gè)功能存儲(chǔ)區(qū)分配固定大小的存儲(chǔ)空間。具體可以參 見圖1所示,圖1中的Flash存儲(chǔ)器共包括如下存儲(chǔ)區(qū)BASE_B00T 系統(tǒng)正常啟動(dòng)基礎(chǔ)BOOT (引導(dǎo)代碼)區(qū);0EM_B00T 用戶定制的 BOOT 區(qū);FS(File System)文件系統(tǒng)存儲(chǔ)區(qū);AMSS 用戶開發(fā)的功能代碼存儲(chǔ)區(qū);DASHBOARD 用戶功能運(yùn)行的數(shù)據(jù)文件存儲(chǔ)區(qū)。上述分配的存儲(chǔ)區(qū)內(nèi)具有固定大小的存儲(chǔ)空間,各個(gè)存儲(chǔ)區(qū)的起始地址和結(jié)束地 址是固定的,且在各分區(qū)中均留有空閑空間,以便于規(guī)避存儲(chǔ)區(qū)中Flash存儲(chǔ)器壞塊帶來 的影響。圖1中除了按照上述功能存儲(chǔ)區(qū)進(jìn)行分配以外,其他未分配的存儲(chǔ)空間屬于空閑 的存儲(chǔ)空間,而且在每個(gè)功能存儲(chǔ)區(qū)內(nèi)也存在一定大小的空閑存儲(chǔ)空間,具體參見圖1中 標(biāo)識(shí)Spare (空閑)的位置。在實(shí)現(xiàn)上述Flash存儲(chǔ)器存儲(chǔ)空間分配方案的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至 少存在如下問題由于在現(xiàn)有技術(shù)中各存儲(chǔ)區(qū)中需要預(yù)留足夠的空閑存儲(chǔ)空間,但實(shí)際上這些預(yù)留 出來的存儲(chǔ)空間并不一定能夠被利用到,造成Flash存儲(chǔ)資源的利用率較低。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種閃存的存儲(chǔ)空間分配方法及裝置,以提高Flash存儲(chǔ)資 源的利用率。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案一種閃存的存儲(chǔ)空間分配方法,所述方法包括在進(jìn)行文件寫入時(shí),獲取待寫入文件的大小;根據(jù)所述待寫入文件的大小預(yù)確定所需要的存儲(chǔ)空間;為所述待寫入文件分配所預(yù)確定的存儲(chǔ)空間;將所述待寫入文件寫入所分配的存儲(chǔ)空間。一種閃存的存儲(chǔ)空間分配裝置,所述閃存中包括基礎(chǔ)引導(dǎo)代碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間;所述裝置包括獲取單元,用于在進(jìn)行文件寫入時(shí),獲取待寫入文件的大小;預(yù)確定單元,用于根據(jù)所述待寫入文件的大小預(yù)確定所需要的存儲(chǔ)空間;分配單元,用于為所述待寫入文件分配所預(yù)確定的存儲(chǔ)空間;寫入單元,用于將所述待寫入文件寫入所分配的存儲(chǔ)空間。本發(fā)明實(shí)施例提供的閃存的存儲(chǔ)空間分配方法及裝置,在進(jìn)行文件寫入時(shí),獲取 待寫入文件的大小,根據(jù)被寫入文件的大小臨時(shí)預(yù)確定當(dāng)前被升級(jí)文件需要的存儲(chǔ)空間, 然后分配剛好能夠滿足存儲(chǔ)需要的存儲(chǔ)空間,將待寫入文件順序?qū)懭肷鲜鏊峙涞拇鎯?chǔ)空 間,完成文件寫入?,F(xiàn)有技術(shù)中為各個(gè)功能區(qū)分配了固定的存儲(chǔ)空間,所以各個(gè)功能區(qū)的空 閑存儲(chǔ)空間不能被其他功能區(qū)所利用,造成資源的浪費(fèi);如圖2所示,圖中空閑存儲(chǔ)空間即 為本發(fā)明實(shí)施例完成文件寫入后的剩余存儲(chǔ)空間,可以作為一個(gè)整塊被使用,所有的功能 區(qū)都能夠共同使用本發(fā)明實(shí)施例中的空閑存儲(chǔ)空間;所以本發(fā)明實(shí)施例能夠充分利用閃存 的存儲(chǔ)資源,提高了存儲(chǔ)資源的利用率,避免存儲(chǔ)資源的浪費(fèi)。另外,由于本發(fā)明實(shí)施例中的空閑存儲(chǔ)空間可以被各個(gè)功能區(qū)利用,相對(duì)于現(xiàn)有 技術(shù)中各個(gè)功能區(qū)只能利用已劃分好的存儲(chǔ)空間而言,本發(fā)明實(shí)施例各個(gè)功能區(qū)所能夠利 用的空閑存儲(chǔ)空間較多,不容易出現(xiàn)由于F1 a sh壞塊過于集中導(dǎo)致的系統(tǒng)啟動(dòng)失敗的問題。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。圖1為現(xiàn)有技術(shù)中的固定Flash分區(qū)示意圖;圖2為本發(fā)明的動(dòng)態(tài)Flash分區(qū)示意圖;圖3為本發(fā)明實(shí)施例1中閃存的動(dòng)態(tài)分區(qū)方法的流程圖;圖4為本發(fā)明實(shí)施例1中閃存的動(dòng)態(tài)分區(qū)裝置的框圖;圖5為本發(fā)明實(shí)施例2中閃存的存儲(chǔ)空間分配方法的流程圖;圖6為本發(fā)明實(shí)施例2中閃存的存儲(chǔ)空間分配裝置的框圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。實(shí)施例1 本發(fā)明實(shí)施例中提供一種閃存的存儲(chǔ)空間分配方法,所述閃存中包括基礎(chǔ)引導(dǎo)代 碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間,并且本發(fā)明實(shí)施例中的閃存可以用在各 種系統(tǒng)或電路中,尤其常用在嵌入式系統(tǒng),如圖3所示,本發(fā)明實(shí)施例中的分配方法包括如下步驟101、在需要往所述閃存中寫入文件時(shí),首先獲取待寫入文件的全局信息,本發(fā)明 實(shí)施例中的全局信息是指待寫入文件的大小。102、根據(jù)所獲取的待寫入文件的大小,預(yù)確定出寫入文件所需要的存儲(chǔ)空間大 小,確定待寫入文件的起始地址和結(jié)束地址;103、由上述所預(yù)確定的寫入文件的起始地址和結(jié)束地址,為所述待寫入文件分配 剛好滿足存儲(chǔ)需要的存儲(chǔ)空間,提高待寫入文件寫入的效率。104、將待寫入文件順序地寫入上述所分配的存儲(chǔ)空間。剩余的存儲(chǔ)空間則可以作 為一個(gè)整體,相對(duì)于將空閑存儲(chǔ)空間分散在各個(gè)分區(qū),存儲(chǔ)資源利用率得到提高。本發(fā)明實(shí)施例還提供一種閃存的存儲(chǔ)空間分配裝置,所述閃存中包括基礎(chǔ)引導(dǎo)代 碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間,并且本發(fā)明實(shí)施例中的閃存可以用在各 種系統(tǒng)或電路中,尤其常用在嵌入式系統(tǒng),如圖4所示,所述裝置包括獲取單元21、預(yù)確定 單元22、分配單元23、寫入單元24。其中,在需要往所述閃存中寫入文件時(shí),所述獲取單元21用于獲取待寫入文件的 大?。凰鲱A(yù)確定單元22用于根據(jù)所述待寫入文件的大小預(yù)確定所需要的存儲(chǔ)空間,確定 待寫入文件寫入時(shí)的起始地址和結(jié)束地址;分配單元23用于為所述待寫入文件分配所預(yù) 確定的起始地址和結(jié)束地址之間的存儲(chǔ)空間;所述寫入單元24用于將所述待寫入文件寫 入所分配的存儲(chǔ)空間。首先,現(xiàn)有方案中的空閑存儲(chǔ)空間已經(jīng)被分配到各個(gè)功能區(qū),不能被其所述分到 的功能區(qū)以外的功能區(qū)所利用,相對(duì)而言,采用本發(fā)明實(shí)施例后,空閑存儲(chǔ)空間還可以作為 一個(gè)整塊被使用,所有的功能區(qū)都能夠共同使用本發(fā)明實(shí)施例中的空閑存儲(chǔ)空間;所以本 發(fā)明實(shí)施例能夠充分利用閃存的存儲(chǔ)資源,提高了存儲(chǔ)資源的利用率,避免存儲(chǔ)資源的浪費(fèi)。其次,由于本發(fā)明實(shí)施例中的空閑存儲(chǔ)空間可以被各個(gè)功能區(qū)利用,相對(duì)于現(xiàn)有 技術(shù)中各個(gè)功能區(qū)只能利用已劃分好的存儲(chǔ)空間而言,本發(fā)明實(shí)施例各個(gè)功能區(qū)所能夠 利用的空閑存儲(chǔ)空間較多,不容易出現(xiàn)由于Flash壞塊過于集中導(dǎo)致的系統(tǒng)啟動(dòng)失敗的問題。再次,即使現(xiàn)有技術(shù)中采用文件系統(tǒng)管理來提高存儲(chǔ)資源的利用率,但由于文件 系統(tǒng)管理實(shí)現(xiàn)比較復(fù)雜,并且啟動(dòng)文件系統(tǒng)管理需要消耗較多的資源,導(dǎo)致啟動(dòng)速度較慢; 所以,采用本發(fā)明實(shí)施例后,比文件系統(tǒng)管理的實(shí)現(xiàn)簡(jiǎn)單一些,而且不會(huì)在啟動(dòng)時(shí)消耗過多 資源,提高了啟動(dòng)速度。實(shí)施例2 本發(fā)明提供一種閃存的存儲(chǔ)空間分配方法,所述閃存中包括基礎(chǔ)引導(dǎo)代碼區(qū)、功 能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間,并且本發(fā)明實(shí)施例中的閃存可以用在各種系統(tǒng)或 電路中,尤其常用在嵌入式系統(tǒng)。本發(fā)明實(shí)施例可以用在對(duì)閃存進(jìn)行初始化的過程中、或者 用在對(duì)閃存中的文件進(jìn)行升級(jí)的過程中;下面以對(duì)閃存中的文件進(jìn)行升級(jí)進(jìn)行說明,如圖 5所示,本發(fā)明實(shí)施例中的具體實(shí)現(xiàn)方法包括如下步驟301、在需要對(duì)閃存中的文件升級(jí)時(shí),一般需要用戶發(fā)送相應(yīng)的升級(jí)指示;本發(fā)明 實(shí)施例中執(zhí)行所述分配方法的設(shè)備接收到升級(jí)指示之后,切換到升級(jí)模式。
302、切換到升級(jí)模式之后,需要將待升級(jí)文件寫入到閃存中,本過程中首先獲取 待升級(jí)文件(相當(dāng)于待寫入文件)的全局信息,本發(fā)明實(shí)施例中的全局信息包括但不限于 待升級(jí)文件的大小和類型。當(dāng)然,如果本發(fā)明實(shí)施例運(yùn)用在對(duì)閃存進(jìn)行初始化的過程中,則需要獲取對(duì)閃存 進(jìn)行初始化時(shí)初始化文件(相當(dāng)于待寫入文件)的全局信息,并且全局信息也可以包括但 不限于初始化文件的大小和類型。本發(fā)明實(shí)施例中待寫入文件的類型主要是指具備自管理能力的文件,和不具備 自管理能力的文件。其中,具備自管理能力的文件,是指對(duì)應(yīng)的文件系統(tǒng)存儲(chǔ)區(qū)的文件,此 類文件在寫入閃存的過程中,能自動(dòng)識(shí)別Flash壞塊,從而不會(huì)丟失數(shù)據(jù),確保寫入數(shù)據(jù)的 完整性。303、為了能夠獲得需要的存儲(chǔ)空間大小,本發(fā)明實(shí)施例從寫入文件起始地址開始 擦除與待寫入文件大小相當(dāng)?shù)拇鎯?chǔ)空間中的數(shù)據(jù),將存儲(chǔ)空間釋放出來,以便于將待寫入 文件寫入上述擦除數(shù)據(jù)的存儲(chǔ)空間。304、獲取擦除存儲(chǔ)空間中已損壞存儲(chǔ)塊的數(shù)量,具體實(shí)現(xiàn)時(shí)可以在上述擦除數(shù)據(jù) 的過程中標(biāo)記出已損壞存儲(chǔ)塊,最后將進(jìn)行已損壞存儲(chǔ)塊的統(tǒng)計(jì)。305、如果上述擦除數(shù)據(jù)的存儲(chǔ)空間中存在已損壞存儲(chǔ)塊,則剛剛擦除數(shù)據(jù)的有效 存儲(chǔ)空間不能將待寫入文件完整保存,為了避免數(shù)據(jù)丟失,本發(fā)明實(shí)例還需要繼續(xù)擦除存 儲(chǔ)空間中的數(shù)據(jù)直到得到與待寫入文件大小相當(dāng)?shù)目捎么鎯?chǔ)空間,并最后得到寫入文件的 結(jié)束地址。通過上述303至305的過程,本發(fā)明實(shí)施例可以得出寫入文件的起始地址和結(jié)束 地址,所述起始地址和結(jié)束地址之間的存儲(chǔ)空間就是本實(shí)施例最終預(yù)確定的所需要存儲(chǔ)空 間。306、將寫入文件的起始地址至寫入文件的結(jié)束地址之間的存儲(chǔ)空間分配給所述 待寫入文件。307、在完成存儲(chǔ)空間的分配以后,可以將待寫入文件寫入所分配的存儲(chǔ)空間,完 成對(duì)待寫入文件的升級(jí)。由于待寫入文件類型主要分為具有自管理能力的文件和不具有自管理能力的文 件,在具體寫入文件時(shí),可以根據(jù)待寫入文件的類型將具有自管理能力的文件寫入文件系 統(tǒng)存儲(chǔ)區(qū),不具有自管理能力的文件寫入用戶引導(dǎo)代碼區(qū)或用戶開發(fā)的功能代碼存儲(chǔ)區(qū)。其中文件系統(tǒng)存儲(chǔ)區(qū)、用戶引導(dǎo)代碼區(qū)、以及用戶開發(fā)的功能代碼存儲(chǔ)區(qū)均屬于 閃存的功能存儲(chǔ)區(qū)。由于在寫入文件的過程中可能出現(xiàn)存儲(chǔ)空間壞塊,所分配的存儲(chǔ)空間不夠所述待 寫入文件使用,為了不丟失數(shù)據(jù),本發(fā)明實(shí)施例還可以執(zhí)行如下308過程308、如果在寫入文件的過程中出現(xiàn)存儲(chǔ)空間壞塊,那么寫到所述的待寫入文件的 結(jié)束地址時(shí),則繼續(xù)擦除新的存儲(chǔ)塊并寫入所述待寫入文件剩余的數(shù)據(jù),直到將完整的待 寫入文件寫入閃存中,獲取最終的結(jié)束地址。309、由于功能存儲(chǔ)區(qū)主要包括如下三個(gè)分區(qū)用戶引導(dǎo)代碼區(qū)、文件系統(tǒng)存儲(chǔ)區(qū)、 以及用戶開發(fā)的功能代碼存儲(chǔ)區(qū),在升級(jí)的時(shí)候需要對(duì)各個(gè)分區(qū)分別進(jìn)行升級(jí);所以本發(fā) 明實(shí)施例中需要檢查所述功能存儲(chǔ)區(qū)中各個(gè)分區(qū)是否均已完成升級(jí),若還有分區(qū)沒有完成升級(jí),則返回執(zhí)行302對(duì)剩余分區(qū)進(jìn)行升級(jí);若所有分區(qū)已經(jīng)完成升級(jí),則執(zhí)行310。310、退出升級(jí)模式,并結(jié)束整個(gè)升級(jí)過程。在執(zhí)行上述升級(jí)過程時(shí),本發(fā)明實(shí)施例中各個(gè)分區(qū)升級(jí)對(duì)應(yīng)的寫入文件起始地址 按如下方式確定第一、用戶引導(dǎo)代碼區(qū)對(duì)應(yīng)的待寫入文件的起始地址為所述功能存儲(chǔ)區(qū)的低地 址,完成升級(jí)文件的寫入后,得到對(duì)應(yīng)的結(jié)束地址。第二、所述文件系統(tǒng)存儲(chǔ)區(qū)對(duì)應(yīng)的待寫入文件的起始地址為用戶引導(dǎo)代碼區(qū)的結(jié) 束地址之后相鄰的存儲(chǔ)地址,完成本存儲(chǔ)區(qū)的升級(jí)文件的寫入后,得到對(duì)應(yīng)的結(jié)束地址。第三、所述用戶開發(fā)的功能代碼存儲(chǔ)區(qū)對(duì)應(yīng)的待寫入文件的起始地址為文件系統(tǒng) 存儲(chǔ)區(qū)的結(jié)束地址之后相鄰的存儲(chǔ)地址,完成本存儲(chǔ)區(qū)的升級(jí)文件的寫入后,得到對(duì)應(yīng)的 結(jié)束地址。本發(fā)明實(shí)施例還提供一種閃存的存儲(chǔ)空間分配裝置,所述閃存中包括基礎(chǔ)引導(dǎo)代 碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間,并且本發(fā)明實(shí)施例中的閃存可以用在各 種系統(tǒng)或電路中,尤其常用在嵌入式系統(tǒng),如圖6所示,所述裝置包括獲取單元41、預(yù)確定 單元42、分配單元43、寫入單元44、地址獲取單元45。其中,在需要往所述閃存中寫入文件時(shí),所述獲取單元41用于獲取待寫入文件的 全局信息,其中所述全局信息包括待寫入文件的大小和類型,其中類型包括具有自管理能 力的文件和不具有自管理能力的文件;所述預(yù)確定單元42用于根據(jù)所述待寫入文件的大 小預(yù)確定所需要的存儲(chǔ)空間,初步確定待寫入文件寫入時(shí)的起始地址和結(jié)束地址;所述分 配單元43將寫入文件的起始地址至寫入文件的結(jié)束地址之間的存儲(chǔ)空間分配給所述待寫 入文件;所述寫入單元44用于將所述待寫入文件寫入所分配的存儲(chǔ)空間,由于功能存儲(chǔ)區(qū) 包括用戶引導(dǎo)代碼區(qū)、文件系統(tǒng)存儲(chǔ)區(qū)、用戶開發(fā)的功能代碼存儲(chǔ)區(qū);為了方便對(duì)各種類 型的文件進(jìn)行分別管理,本發(fā)明實(shí)施例中所述寫入單元44將具有自管理能力的文件寫入 文件系統(tǒng)存儲(chǔ)區(qū),并將不具有自管理能力的文件寫入用戶引導(dǎo)代碼區(qū)或用戶開發(fā)的功能代 碼存儲(chǔ)區(qū)。本發(fā)明實(shí)施例主要用于如下場(chǎng)景第一、如果本發(fā)明實(shí)施例運(yùn)用在對(duì)閃存進(jìn)行升級(jí)的過程中,所述獲取單元41獲取 待升級(jí)文件(相當(dāng)于待寫入文件)的大小和類型。第二、如果本發(fā)明實(shí)施例運(yùn)用在對(duì)閃存進(jìn)行初始化的過程中,則所述獲取單元41 獲取對(duì)閃存進(jìn)行初始化時(shí)初始化文件(相當(dāng)于待寫入文件)的大小和類型。本發(fā)明實(shí)施例中的預(yù)確定單元42具體實(shí)現(xiàn)可以采用擦除模塊421和獲取模塊 422。其中擦除模塊421用于從寫入文件起始地址開始擦除與待寫入文件大小相當(dāng)?shù)?存儲(chǔ)空間中的數(shù)據(jù);獲取模塊422用于獲取擦除存儲(chǔ)空間中已損壞存儲(chǔ)塊的數(shù)量,具體實(shí) 現(xiàn)時(shí)可以在上述擦除數(shù)據(jù)的過程中標(biāo)記出已損壞存儲(chǔ)塊,最后將進(jìn)行已損壞存儲(chǔ)塊的統(tǒng) 計(jì);所述擦除模塊421還用于繼續(xù)擦除存儲(chǔ)空間中的數(shù)據(jù)直到得到與待寫入文件大小相當(dāng) 的可用存儲(chǔ)空間,得到寫入文件的結(jié)束地址。在將所述待寫入文件寫入所分配的存儲(chǔ)空間過程中,若所分配的存儲(chǔ)空間不夠所 述待寫入文件使用,本發(fā)明實(shí)施例中的擦除模塊421還用于繼續(xù)擦除新的存儲(chǔ)塊,并通過
8寫入單元44在擦除新的存儲(chǔ)塊后繼續(xù)寫入所述待寫入文件。為了便于后續(xù)其他分區(qū)繼續(xù)寫入文件,如圖6所示,本發(fā)明實(shí)施例提供的閃存的 存儲(chǔ)空間分配裝置還包括地址獲取單元45,用于在待寫入文件全部寫入完成后,獲取寫 入文件的結(jié)束地址。本發(fā)明實(shí)施例中各個(gè)分區(qū)升級(jí)對(duì)應(yīng)的寫入文件起始地址按如下方式確定第一、用戶引導(dǎo)代碼區(qū)對(duì)應(yīng)的待寫入文件的起始地址為所述功能存儲(chǔ)區(qū)的低地 址,完成升級(jí)文件的寫入后,得到對(duì)應(yīng)的結(jié)束地址。第二、所述文件系統(tǒng)存儲(chǔ)區(qū)對(duì)應(yīng)的待寫入文件的起始地址為用戶引導(dǎo)代碼區(qū)的結(jié) 束地址之后相鄰的存儲(chǔ)地址,完成本存儲(chǔ)區(qū)的升級(jí)文件的寫入后,得到對(duì)應(yīng)的結(jié)束地址。第三、所述用戶開發(fā)的功能代碼存儲(chǔ)區(qū)對(duì)應(yīng)的待寫入文件的起始地址為文件系統(tǒng) 存儲(chǔ)區(qū)的結(jié)束地址之后相鄰的存儲(chǔ)地址,完成本存儲(chǔ)區(qū)的升級(jí)文件的寫入后,得到對(duì)應(yīng)的 結(jié)束地址。采用本發(fā)明實(shí)施例提供的閃存的存儲(chǔ)空間分配方法及裝置后,至少可以產(chǎn)生如下 有益效果首先,現(xiàn)有方案中的空閑存儲(chǔ)空間已經(jīng)被分配到各個(gè)功能區(qū),不能被其所述分到 的功能區(qū)以外的功能區(qū)所利用,相對(duì)而言,采用本發(fā)明實(shí)施例后,空閑存儲(chǔ)空間還可以作為 一個(gè)整塊被使用,所有的功能區(qū)都能夠共同使用本發(fā)明實(shí)施例中的空閑存儲(chǔ)空間;所以本 發(fā)明實(shí)施例能夠充分利用閃存的存儲(chǔ)資源,提高了存儲(chǔ)資源的利用率,避免存儲(chǔ)資源的浪費(fèi)。其次,由于本發(fā)明實(shí)施例中的空閑存儲(chǔ)空間可以被各個(gè)功能區(qū)利用,相對(duì)于現(xiàn)有 技術(shù)中各個(gè)功能區(qū)只能利用已劃分好的存儲(chǔ)空間而言,本發(fā)明實(shí)施例各個(gè)功能區(qū)所能夠 利用的空閑存儲(chǔ)空間較多,不容易出現(xiàn)由于Flash壞塊過于集中導(dǎo)致的系統(tǒng)啟動(dòng)失敗的問題。再次,即使現(xiàn)有技術(shù)中采用文件系統(tǒng)管理來提高存儲(chǔ)資源的利用率,但由于文件 系統(tǒng)管理實(shí)現(xiàn)比較復(fù)雜,并且啟動(dòng)文件系統(tǒng)管理需要消耗較多的資源,導(dǎo)致啟動(dòng)速度較慢; 所以,采用本發(fā)明實(shí)施例后,比文件系統(tǒng)管理的實(shí)現(xiàn)簡(jiǎn)單一些,而且不會(huì)再啟動(dòng)時(shí)消耗過多 資源,提高了啟動(dòng)速度。本發(fā)明實(shí)施例主要運(yùn)用于閃存中文件的升級(jí)和初始化過程,一般是運(yùn)用在嵌入式 系統(tǒng)中的閃存,目前大多數(shù)的數(shù)碼產(chǎn)品均可以使用本發(fā)明實(shí)施例,如個(gè)人數(shù)字助理、數(shù)碼 相機(jī)、手機(jī)、mp3、U盤等其他能夠進(jìn)行升級(jí)的數(shù)碼產(chǎn)品。通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借 助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳 的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部 分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì) 算機(jī)的軟盤,硬盤或光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī), 服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種閃存的存儲(chǔ)空間分配方法,其特征在于,所述方法包括 在進(jìn)行文件寫入時(shí),獲取待寫入文件的大小;根據(jù)所述待寫入文件的大小預(yù)確定所需要的存儲(chǔ)空間; 為所述待寫入文件分配所預(yù)確定的存儲(chǔ)空間; 將所述待寫入文件寫入所分配的存儲(chǔ)空間。
2.根據(jù)權(quán)利要求1所述的閃存的存儲(chǔ)空間分配方法,其特征在于所述進(jìn)行文件寫入包括對(duì)閃存進(jìn)行初始化,所述待寫入文件為對(duì)閃存進(jìn)行初始化時(shí) 初始化文件;或者對(duì)閃存中的文件進(jìn)行升級(jí),所述待寫入文件為升級(jí)文件。
3.根據(jù)權(quán)利要求1所述的閃存的存儲(chǔ)空間分配方法,其特征在于,所述根據(jù)所述待寫 入文件的大小預(yù)確定所需要的存儲(chǔ)空間包括從寫入文件起始地址開始擦除與待寫入文件大小相當(dāng)?shù)拇鎯?chǔ)空間中的數(shù)據(jù); 獲取已擦除的存儲(chǔ)空間中已損壞存儲(chǔ)塊的數(shù)量;繼續(xù)擦除存儲(chǔ)空間中的數(shù)據(jù)直到得到與待寫入文件大小相當(dāng)?shù)目捎么鎯?chǔ)空間,得到寫 入文件的結(jié)束地址。
4.根據(jù)權(quán)利要求3所述的閃存的存儲(chǔ)空間分配方法,其特征在于,為所述待寫入文件 分配所預(yù)確定的存儲(chǔ)空間包括將寫入文件的起始地址至寫入文件的結(jié)束地址之間的存儲(chǔ) 空間分配給所述待寫入文件。
5.根據(jù)權(quán)利要求3所述的閃存的存儲(chǔ)空間分配方法,其特征在于,所述方法還包括 將所述待寫入文件寫入所分配的存儲(chǔ)空間過程中,若所分配的存儲(chǔ)空間不夠所述待寫入文件使用,則繼續(xù)擦除新的存儲(chǔ)塊并寫入所述待寫入文件; 在待寫入文件全部寫入完成后,獲取寫入文件的結(jié)束地址。
6.根據(jù)權(quán)利要求3、4或5所述的閃存的存儲(chǔ)空間分配方法,其特征在于,所述閃存中包 括基礎(chǔ)引導(dǎo)代碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間;所述功能存儲(chǔ)區(qū)包括用 戶引導(dǎo)代碼區(qū)、文件系統(tǒng)存儲(chǔ)區(qū)、用戶開發(fā)的功能代碼存儲(chǔ)區(qū);所述用戶引導(dǎo)代碼區(qū)對(duì)應(yīng)的待寫入文件起始地址為所述功能存儲(chǔ)區(qū)的低地址; 所述文件系統(tǒng)存儲(chǔ)區(qū)對(duì)應(yīng)的待寫入文件起始地址為用戶引導(dǎo)代碼區(qū)結(jié)束地址之后相 鄰的存儲(chǔ)地址;所述用戶開發(fā)的功能代碼存儲(chǔ)區(qū)對(duì)應(yīng)的待寫入文件起始地址為文件系統(tǒng)存儲(chǔ)區(qū)的結(jié) 束地址之后相鄰的存儲(chǔ)地址。
7.根據(jù)權(quán)利要求6所述的閃存的存儲(chǔ)空間分配方法,其特征在于,所述方法還包括 獲取待寫入文件的類型,所述類型包括具有自管理能力的文件或不具有自管理能力的文件;將所述具有自管理能力的文件寫入文件系統(tǒng)存儲(chǔ)區(qū),或者,將所述不具有自管理能力 的文件寫入用戶引導(dǎo)代碼區(qū)或用戶開發(fā)的功能代碼存儲(chǔ)區(qū)。
8. —種閃存的存儲(chǔ)空間分配裝置,其特征在于,所述裝置包括 獲取單元,用于在進(jìn)行文件寫入時(shí),獲取待寫入文件的大?。活A(yù)確定單元,用于根據(jù)所述待寫入文件的大小預(yù)確定所需要的存儲(chǔ)空間; 分配單元,用于為所述待寫入文件分配所預(yù)確定的存儲(chǔ)空間;寫入單元,用于將所述待寫入文件寫入所分配的存儲(chǔ)空間。
9.根據(jù)權(quán)利要求8所述的閃存的存儲(chǔ)空間分配裝置,其特征在于,所述預(yù)確定單元包括擦除模塊,用于從寫入文件起始地址開始擦除與待寫入文件大小相當(dāng)?shù)拇鎯?chǔ)空間中的 數(shù)據(jù);獲取模塊,用于獲取已擦除的存儲(chǔ)空間中已損壞存儲(chǔ)塊的數(shù)量; 所述擦除模塊還用于繼續(xù)擦除存儲(chǔ)空間中的數(shù)據(jù)直到得到與待寫入文件大小相當(dāng)?shù)?可用存儲(chǔ)空間,得到寫入文件的結(jié)束地址。
10.根據(jù)權(quán)利要求9所述的閃存的存儲(chǔ)空間分配裝置,其特征在于,所述分配單元將寫 入文件的起始地址至寫入文件的結(jié)束地址之間的存儲(chǔ)空間分配給所述待寫入文件。
11.根據(jù)權(quán)利要求10所述的閃存的存儲(chǔ)空間分配裝置,其特征在于,所述擦除模塊還用于在將所述待寫入文件寫入所分配的存儲(chǔ)空間過程中,若所分配的 存儲(chǔ)空間不夠所述待寫入文件使用,則繼續(xù)擦除新的存儲(chǔ)塊;所述寫入單元還用于在擦除新的存儲(chǔ)塊后繼續(xù)寫入所述待寫入文件; 所述裝置還包括地址獲取單元,用于在待寫入文件全部寫入完成后,獲取寫入文件的 結(jié)束地址。
12.根據(jù)權(quán)利要求8至11中任意一項(xiàng)所述的閃存的存儲(chǔ)空間分配裝置,所述閃存中包 括基礎(chǔ)引導(dǎo)代碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間;所述功能存儲(chǔ)區(qū)包括用 戶引導(dǎo)代碼區(qū)、文件系統(tǒng)存儲(chǔ)區(qū)、用戶開發(fā)的功能代碼存儲(chǔ)區(qū);其特征在于所述獲取單元還用于獲取待寫入文件的類型,所述類型包括具有自管理能力的文件 和不具有自管理能力的文件;所述寫入單元將具有自管理能力的文件寫入文件系統(tǒng)存儲(chǔ)區(qū),將不具有自管理能力的 文件寫入用戶引導(dǎo)代碼區(qū)或用戶開發(fā)的功能代碼存儲(chǔ)區(qū)。
全文摘要
本發(fā)明公開了一種閃存的存儲(chǔ)空間分配方法及裝置,涉及存儲(chǔ)器技術(shù)領(lǐng)域,用于解決閃存中存儲(chǔ)資源利用率過低的問題。本發(fā)明實(shí)施例中的閃存包括基礎(chǔ)引導(dǎo)代碼區(qū)、功能存儲(chǔ)區(qū)、空閑存儲(chǔ)空間、用戶數(shù)據(jù)空間;具體方法包括在進(jìn)行文件寫入時(shí),獲取待寫入文件的大?。桓鶕?jù)所述待寫入文件的大小預(yù)確定所需要的存儲(chǔ)空間;為所述待寫入文件分配所確定大小的存儲(chǔ)空間;將所述待寫入文件寫入所分配的存儲(chǔ)空間。本發(fā)明實(shí)施例主要運(yùn)用于閃存中文件的升級(jí)和初始化過程,一般是運(yùn)用在嵌入式系統(tǒng)中的閃存。
文檔編號(hào)G06F12/02GK102004700SQ201010561219
公開日2011年4月6日 申請(qǐng)日期2010年11月26日 優(yōu)先權(quán)日2010年11月26日
發(fā)明者陶志東 申請(qǐng)人:華為終端有限公司