專利名稱:基于地址映射的nor flash均衡方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種片上系統(tǒng)技術(shù)領(lǐng)域的方法,具體是一種基于地址映射的 NOR FLASH (或非式閃存)均衡方法。
技術(shù)背景嵌入式系統(tǒng)在電子產(chǎn)品中得到了廣泛的應(yīng)用,而其中用于存儲程序代碼的設(shè) 備通常是NOR FLASH。由于NOR FLASH的電氣特性,其每一個區(qū)塊的擦寫次數(shù)有 限,當超過這一限度時,很可能損壞。由于在加載程序時,都是從NOR FLASH 的頭部開始寫入,從而導(dǎo)致NOR FLASH的尾部基本不會用到,浪費了空間。經(jīng)對現(xiàn)有技術(shù)的文獻檢索發(fā)現(xiàn),張原豪等在Annual ACM IEEE Design Automat ion Conference (ACM IEEE設(shè)計自動化年度會議)上發(fā)表的"Endurance Enhancement of Flash-Memory Storage Systems: An Efficient Static Wear Leveling Design"(閃存存儲系統(tǒng)的壽命增強 一種有效的靜態(tài)磨損均衡)中 提出,通過采用"靜態(tài)磨損均衡"的機制,可以大幅度的提高基于NAND FLASH 的文件存儲系統(tǒng)的使用壽命。該發(fā)明的不足在于只針對了 NAND FLASH,并沒 有NOR FLASH的均衡方法,而且用于程序代碼的存儲結(jié)構(gòu),沒有文件系統(tǒng)的存儲 結(jié)構(gòu)復(fù)雜,可以減小開銷,并且文章中的方法采用軟件實現(xiàn),不是硬件實現(xiàn)。發(fā)明內(nèi)容本發(fā)明針對上述現(xiàn)有技術(shù)中的不足,提出了一種基于地址映射的NOR FLASH 均衡方法,使其在應(yīng)用于嵌入式系統(tǒng)中NOR FLASH程序存儲時,避免每次加載程 序時都是從NOR FLASH首地址處順序加載而帶來的其后部存儲空間的空閑,利用 均衡技術(shù),即在后一次加載程序時,先占用前一次加載時沒有用到的空間,并利 用地址映射技術(shù)使得對外的地址空間仍是從首地址開始順序的,只在NOR FLASH 內(nèi)部實現(xiàn)均衡,增加了利用率,延長了使用壽命。本發(fā)明是通過以下技術(shù)方案實現(xiàn)的,本發(fā)明包括如下步驟首先,將控制器內(nèi)部的用于程序代碼存儲的NOR FLASH分為兩部分,第一部 分存儲程序代碼,第二部分保存NOR FLASH的狀態(tài),狀態(tài)包括NOR FLASH當前存 儲程序的起始地址、結(jié)束地址、運行方式等,未使用時為初始狀態(tài);然后,在每次從外部向NOR FLASH中加載程序代碼時,控制器都要分析NOR FLASH的當前狀態(tài),并根據(jù)均衡方法確定程序代碼寫入NOR FLASH中的地址范圍, 按照NOR FLASH自身提供的寫入方式將代碼寫入其中,同時以査詢方式更新狀態(tài) f曰息;最后,在片上系統(tǒng)運行過程中,控制器每次檢測到外部讀取代碼的操作時,并根據(jù)狀態(tài)信息,利用地址映射的方法從內(nèi)部的NOR FLASH中讀取正確的數(shù)據(jù)并 輸出。所述控制器,是指具有地址映射技術(shù)與均衡功能的NOR FLASH控制電路, 內(nèi)部包含一個NOR FLASH,對外接口也與NOR FLASH的對外接口一致,用于增強 嵌入式系統(tǒng)中用于程序代碼存儲的NOR FLASH的使用壽命。所述NOR FLASH,是指嵌入式系統(tǒng)中用于裝載程序代碼的以NOR FLASH為 媒介的存儲設(shè)備。與一般嵌入式系統(tǒng)的外接低速FLASH存儲設(shè)備不同,NOR FLASH 是集成在芯片之內(nèi)的高速存儲設(shè)備。所述程序代碼,是指在嵌入式系統(tǒng)上電啟動時,用于指定其啟動行為的指令。所述起始地址,是指程序的第一條代碼存儲在NOR FLASH中的物理地址。 為了均衡,NOR FLASH中存儲代碼的連續(xù)空間并不是從零地址開始的,而是接著 前一次代碼存放的空間。但是為了讓外部使用者看起來仍然是從零地址開始的, 必須保留第一條代碼存儲的物理地址,以便于做地址映射。所述結(jié)束地址,是指程序的最后一條代碼存儲在NOR FLASH中的物理地址, 用于下一次加載程序代碼時確定起始地址。所述運行方式,其由用戶設(shè)定,包括設(shè)定使能位、對齊方式、査詢的時間間 隔,具體為將使能位置為O表示采用均衡方法與地址映射技術(shù),置為l則表示不采用,即每次都從零地址處加載程序;將對齊方式設(shè)為00,表示字節(jié)對齊,設(shè)為01表示半字對齊,10表示字對齊,11表示雙字對齊等,分別可適應(yīng)8位機、 16位機、32位機、64位機;査詢的時間間隔,即多少個時鐘周期查詢一次。所述根據(jù)均衡方法確定程序代碼寫入NOR FLASH中的地址范圍,具體為第 一次加載程序代碼從NOR FLASH的零地址開始順序存儲,其余加載程序代碼每次 都接著前一次代碼的結(jié)束地址之后開始順序存儲,并且與對齊方式有關(guān),如果是 字節(jié)對齊,則從前一次的結(jié)束地址之后的第一個地址開始存儲;如果是半字對齊, 則從前一次的結(jié)束地址之后的第一個2的倍數(shù)的地址開始存儲;如果是字對齊, 則從之后的第一個4的倍數(shù)地址開始;如果是雙字對齊,則從第一個8的倍數(shù)地 址開始。所述以査詢方式更新狀態(tài)信息,具體為由于程序代碼的加載有突發(fā)性,即開始加載到加載完畢會在連續(xù)的一段較短的時間內(nèi)完成,這段時間內(nèi)會不斷的向NOR FLASH發(fā)出寫入命令,加載完畢后相當長一段時間內(nèi)均不會寫入,根據(jù)這個 特性,如果在某寫入之后的一段設(shè)定的時間內(nèi)沒有寫入動作,則判斷為一次寫入 完畢,此后,將上一次的結(jié)束地址加若千長度單位作為本次的起始地址,長度單 位由具體對齊方式?jīng)Q定,將判斷一次寫入完畢時的寫入地址作為本次的結(jié)束地址,再用這些新的狀態(tài)信息覆蓋原有的狀態(tài)信息。所述利用地址映射的方法從內(nèi)部的NOR FLASH中讀取正確的數(shù)據(jù)并輸出,具 體為將CPU給出的地址與起始地址相加,所得到的值即為NOR FLASH中對應(yīng)的 物理地址,如果相加所得到的值超過了用于存儲代碼的第一部分的大小,則將此 值減去第一部分的大小。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果本發(fā)明利用很少的時間與空間 代價,減少嵌入式系統(tǒng)中NOR FLASH空間的浪費,延長了使用壽命。本發(fā)明可以 應(yīng)用于任何大小不超過4GB的NOR FLASH中,并且如果將預(yù)留的控制位加以利用, 可以衍生出更加豐富的功能。
具體實施方式
下面對本發(fā)明的實施例作詳細說明本實施例在以本發(fā)明技術(shù)方案為前提下 進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限 于下述的實施例。本實施例中以大小為64K字節(jié)(地址范圍為0x0000 0xffff)的NOR FLASH 為例,數(shù)據(jù)寬度為4字節(jié)(即l個字),本實施例包括如下步驟1.首先將NOR FLASH的地址空間分為兩部分,第一部分的地址范圍是0x0000 0xffef,第二部分是最后16個字節(jié),即最后4個字,地址范圍是 0xfff0 0xffff。第一部分用于存儲程序代碼,第二部分的4個字用于存儲與均 衡和地址映射有關(guān)的信息。在未使用過的情況下,所有空間里存儲的數(shù)據(jù)都是0, 包括起始地址、結(jié)束地址、控制信息等,其中起始地址存儲在0xffe0,結(jié)束地 址存儲在0xffe4,余下兩個地址0xffe8和0xffec用于存儲控制信息。2. 在第一次加載程序代碼之前,先向控制信息位寫入對齊方式、是否為第 一次使用、查詢計數(shù)周期等信息。當開始向NOR FLASH中加載代碼時,控制器判 斷出為第一次使用,開始向零地址寫入代碼,此時用于査詢的計數(shù)器被觸發(fā)。此 后每寫入一條代碼,都刷新查詢計數(shù)器,并將結(jié)束地址加l。當某次寫入后,查 詢計數(shù)器的計數(shù)器達到了預(yù)設(shè)值,則判斷加載代碼完成,將更新的起始地址與結(jié) 束地址寫回NOR FLASH中,并將控制信息的是否為首次使用位置為否。之后的每 一次寫入,都根據(jù)對齊方式,從結(jié)束地址之后的正確地址開始寫入。3. 每次外部讀取一條代碼時,采用地址映射方法,將外部讀取的地址與起 始地址相加,所得到的值即為NOR FLASH中對應(yīng)的物理地址。如果相加所得到的 值超過了用于存儲代碼的第一部分的大小,則將此值減去第一部分的大小,之后 根據(jù)得出的這個地址在N0R FLASH中讀取對應(yīng)的數(shù)據(jù),并將其輸出。本實施例方法利用很少的時間與空間代價,減少嵌入式系統(tǒng)中NOR FLASH 空間的浪費,可以將N0R FLASH的使用壽命延長87%左右。
權(quán)利要求
1、一種基于地址映射的NOR FLASH均衡方法,其特征在于,首先,將控制器內(nèi)部的用于程序代碼存儲的NOR FLASH分為兩部分,第一部分存儲程序代碼,第二部分保存NOR FLASH的狀態(tài),狀態(tài)包括NOR FLASH當前存儲程序的起始地址、結(jié)束地址、運行方式,未使用時為初始狀態(tài);然后,在每次從外部向NOR FLASH中加載程序代碼時,控制器都要分析NORFLASH的當前狀態(tài),并根據(jù)均衡方法確定程序代碼寫入NOR FLASH中的地址范圍,按照NOR FLASH自身提供的寫入方式將代碼寫入其中,同時以查詢方式更新狀態(tài)信息;最后,在片上系統(tǒng)運行過程中,控制器每次檢測到外部讀取代碼的操作時,并根據(jù)狀態(tài)信息,利用地址映射的方法從內(nèi)部的NOR FLASH中讀取正確的數(shù)據(jù)并輸出。
2、 根據(jù)權(quán)利要求1所述的基于地址映射的NOR FLASH均衡方法,其特征是, 所述運行方式,其由用戶設(shè)定,包括設(shè)定使能位、對齊方式、查詢的時間間隔, 具體為將使能位置為O表示采用均衡方法與地址映射技術(shù),置為1則表示不采 用,即每次都從零地址處加載程序;將對齊方式設(shè)為00,表示字節(jié)對齊,設(shè)為 01表示半字對齊,設(shè)為10表示字對齊,設(shè)為11表示雙字對齊,分別適用于8 位機、16位機、32位機、64位機;査詢的時間間隔表示查詢一次的時鐘周期。
3、 根據(jù)權(quán)利要求l所述的基于地址映射的NOR FLASH均衡方法,其特征是, 所述根據(jù)均衡方法確定程序代碼寫入NOR FLASH中的地址范圍,具體為第一次 加載程序代碼從NOR FLASH的零地址開始順序存儲,其余加載程序代碼每次都接 著前一次代碼的結(jié)束地址之后開始順序存儲,并且與對齊方式有關(guān),如果是字節(jié) 對齊,則從前一次的結(jié)束地址之后的第一個地址開始存儲;如果是半字對齊,則 從前一次的結(jié)束地址之后的第一個2的倍數(shù)的地址開始存儲;如果是字對齊,則 從之后的第一個4的倍數(shù)地址開始;如果是雙字對齊,則從第一個8的倍數(shù)地址 開始。
4、 根據(jù)權(quán)利要求l所述的基于地址映射的NOR FLASH均衡方法,其特征是, 所述以査詢方式更新狀態(tài)信息,具體為如果在某寫入之后的一段設(shè)定的時間內(nèi)沒有寫入動作,則判斷為一次寫入完畢,此后將上一次的結(jié)束地址加若干長度單 位作為本次的起始地址,長度單位由具體對齊方式?jīng)Q定,將判斷一次寫入完畢時 的寫入地址作為本次的結(jié)束地址,再用這些新的狀態(tài)信息覆蓋原有的狀態(tài)信息。 5、根據(jù)權(quán)利要求l所述的基于地址映射的NOR FLASH均衡方法,其特征是, 所述利用地址映射的方法從內(nèi)部的NOR FLASH中讀取正確的數(shù)據(jù)并輸出,具體為 將CPU給出的地址與起始地址相加,所得到的值為NOR FLASH中對應(yīng)的物理地址, 如果相加所得到的值超過了用于存儲代碼的第一部分的大小,則將此值減去第一 部分的大小。
全文摘要
一種片上系統(tǒng)技術(shù)領(lǐng)域的基于地址映射的NOR FLASH均衡方法,首先,將控制器內(nèi)部的用于程序代碼存儲的NOR FLASH分為兩部分,第一部分存儲程序代碼,第二部分保存NOR FLASH的狀態(tài);然后,在每次從外部向NOR FLASH中加載程序代碼時,控制器根據(jù)均衡方法確定程序代碼寫入NOR FLASH中的地址范圍,并按照自身的寫入方式將代碼寫入其中,同時以查詢方式更新狀態(tài)信息;最后,在片上系統(tǒng)運行過程中,控制器每次檢測到外部讀取代碼的操作時,并根據(jù)狀態(tài)信息,利用地址映射的方法從內(nèi)部的NOR FLASH中讀取正確的數(shù)據(jù)并輸出。本發(fā)明減少了嵌入式系統(tǒng)中NOR FLASH空間的浪費,延長了使用壽命。
文檔編號G06F12/06GK101261606SQ20081003555
公開日2008年9月10日 申請日期2008年4月3日 優(yōu)先權(quán)日2008年4月3日
發(fā)明者欣 于, 劉文江, 戎蒙恬, 彬 潘, 強 韓 申請人:上海交通大學(xué)