非易失性可編程Flash ROM 擁有比一次性編程存儲器(例如EPROM)更多的優勢。明顯的是不用物理上更換芯片就能夠在已售出的嵌入式設備上實現軟件升級。Flash ROM 還能夠為參數數據提供非易失性存儲,例如定制產品設置和配置信息。
更多的Flash ROM在讀操作的時候更像一個一般的只讀存儲器。但寫操作你要注意到它的根本體系結構。請注意不同的產品存在差異,所以在使用Flash ROM時一定要精讀數據表格得到精確的信息。
塊結構
一個Flash ROM通常被分為很多塊或扇區(例如64KB塊)每個塊可以被單獨的擦除,在寫入,以及保護不被意外的擦除或重編程。你不能對塊中的單個字節編程除非先擦除整個塊。Flash ROM需要特殊的軟件次序來控制擦寫和塊保護。
理解塊的體系結構可以讓你知道代碼在Flash ROM中的位置。Flash ROM小被分為3個獨立的區域,每個區包括一個或多個塊,能夠被獨立的保護或再編程。
啟動塊包括一個小的啟動裝載程序來初始化CPU;
參數塊存儲非易失性定制數據,例如用戶設置 ;
主塊存儲應用的代碼和數據段。
塊保護
Flash ROM 提供塊保護來防止對單獨存儲塊的意外擦除和寫入。保護形式由軟件鎖定,硬件鎖定以及二者的結合。
軟件鎖定和解鎖是通過Flash ROM 中的寄存器寫入實現的。它允許單獨塊的擦除和寫入。
硬件鎖定和解鎖需要外部設備的交互,例如通過硬件跳線為一個外部管腳提供一個電壓。硬件鎖通常只用于重要的啟動塊。
啟動塊
啟動塊中的啟動裝載代碼的角色非常關鍵。除了啟動CPU,它還能擦除和再編程整個Flash ROM,不論其余的Flash ROM是空的還是被破壞的。
這樣的破壞一邊由于升級主塊失敗,或者在升級的時候掉電。主塊的破壞還是能夠處理的事件,而啟動塊的破壞將導致嵌入式設備不能啟動或恢復。因此啟動塊需要特殊對待,包括硬鎖保護,大多數的Flash ROM能夠保護該區域的意外破壞。
一旦設備產品被初始化,就將啟動代碼限制為只讀是一種非常好的方法。客戶端對啟動塊的任何解鎖和再編程嘗試都可能意外地導致嵌入式產品的不可用。
頂部和底部啟動設備
啟動代碼和定制數據的大小一般比標準塊小很多,為了避免浪費寶貴的空間,很多Flash ROM把塊或一塊分割為更小的子塊,例如8KB。這是你更好的控制這些塊的內容。
依賴于啟動代碼在ROM中的所在位置,這些設備有兩種風格:頂部啟動和底部啟動設備。這取決于CPU在重啟動/加電后從哪里獲取指令:不論是存儲空間頂部(例如Intel)或者存儲空間底部(例如Motorola)。一些Flash ROM 可通過外部端腳來配置頂部或底部啟動。
邊寫邊讀
很多Flash ROM不能邊寫邊讀。這意味著當你再編程的時候不能從Flash ROM中執行任何代碼。這包括擦寫的同時可能調用中斷程序,再編程期間采用系統內存和/或CPU緩存。然而,一些設備提供了邊寫邊讀的特性,允許度一個塊的同時擦寫另一個不同的塊。
在你的嵌入式設備中使用閃存(flash ROM)
更新時間: 2005-08-26 00:00:00來源: 粵嵌教育瀏覽量:5594