公共闪存接口CFI在Flash Memory程序设计中的应用
摘 要: 介紹了閃速存儲器(Flash?? Memory)的公共閃存接口(CFI)結構,以及系統軟件如何利用CFI獲取Flash?? Memory的各種參數,實現對各種Flash? Memory的程序設計。
??? 關鍵詞: 閃速存儲器 公共閃存接口CFI 命令用戶接口CUI
??? 自從Intel公司于1988年推出了可快速擦寫的非易失性存儲器Flash?? Memory以來,快速擦寫存儲器Flash? Memory技術就得到了非常迅速的發展。這主要是由于Flash?? Memory具有不需要存儲電容器、集成度更高、制造成本低于DRAM、使用方便,讀寫靈活、訪問速度快、斷電后不丟失信息等特點。
??? 雖然Flash? Memory應用越來越廣泛,但由于生產Flash?? Memory的半導體制造商眾多,不同廠商Flash? Memory產品的操作命令集和電氣參數又千差萬別,這給Flash?? Memory的開發設計人員和OEM制造商帶來許多不便。為了對現有的Flash?? Memory的產品進行升級或使用其它公司的Flash? Memory產品替換,必須對原有的程序代碼和硬件結構進行修改。為解決上述原因所引發的問題,迫切需要Flash?? Memory制造商提出一個公共的標準解決方案,在這樣的背景下,公共閃存接口(Common Flash? Interface),簡稱CFI 誕生了,CFI是一個公開的標準的從Flash?? Memory器件中讀取數據的接口。它可以使系統軟件查詢已安裝的Flash?? Memory器件的各種參數,包括器件陣列結構參數、電氣和時間參數以及器件支持的功能等。利用CFI可以不用修改系統軟件就可以用新型的和改進的產品代替舊版本的產品。例如:如果新型的Flash?? Memory的擦除時間只有舊版本的一半,系統軟件只要通過CFI讀取新器件的擦除時間等參數,修改一下定時器的時間參數即可。為了充分有效地利用CFI所提供的功能,有必要了解一下以下幾個方面的問題。
1 Flash? Memory的工作方式
??? 對Flash? Memory芯片的所有操作都是通過芯片的命令用戶接口(CUI)來實現的,命令用戶接口是微處理器或微控制器與芯片內部操作之間的界面。當通過CUI寫入不同的控制命令時,Flash?? Memory從一個工作狀態轉移到另一個工作狀態,其常見的工作狀態分為以下幾種。
??? 1.1 讀存儲單元操作
??? 在Flash? Memory芯片上電以后,或者從深度低功耗狀態返回以后,芯片就處于讀存儲單元狀態??赏ㄟ^寫入復位命令進入讀存儲單元狀態。此時可以讀取Flash?? Memory芯片存儲單元的內容,讀存儲單元的操作與SRAM相同但不同公司的產品邏輯電源供電電壓(Vcc)是不同的。
??? 1.2 擦除操作
??? 對Flash? Memory芯片進行擦除操作時,由于Flash?? Memory采用模塊分區的陣列結構,使得各個存儲模塊可以被獨立地擦除,當給出的地址是在模塊地址范圍之內且向命令用戶接口寫入模塊擦除命令時,相應的模塊就被擦除。在執行擦除操作時有三個問題需要注意:(1)由于Flash?? Memory采用模塊分區的陣列結構,不同型號的Flash? Memory產品模塊分區的數量和每個分區的大小是不一樣的;(2)不同型號的Flash?? Memory產品在執行擦除操作時,擦除電壓是不一樣的;(3)不同型號的Flash?? Memory產品整片擦除時間和每個模塊分區的擦除時間參數是不同的。
??? 1.3 編程操作
??? Flash? Memory 的編程操作是自動字節編程,既可以是順序寫入,也可以是指定地址寫入。向用戶命令接口寫入字節編程命令時,芯片自動進行字節編程和編程校驗。在執行編程操作時有兩個問題需要注意:(1)對不同型號的Flash?? Memory產品進行編程操作時編程電壓是不一樣的;(2)不同型號的Flash?? Memory產品字節/字編程時間是不同的。所有這些問題都是在系統程序設計時必須要考慮的問題。
??? 除了以上所提到的常見的三種工作方式外,Flash?? Memory還有芯片復位、讀標識碼、擦除掛起和擦除恢復等工作方式,只不過這幾種工作方式在程序設計時幾乎不需要考慮什么問題,只要輸入正確的命令字即可,但是不同公司的Flash?? Memory命令控制字是不同的。前面所遇到的問題,都可以通過CFI來解決,但首先要保證待操作的Flash?? Memory是一個CFI使能的器件。
2 CFI使能器件的識別
??? 為了確定一個閃速存儲器是否是一個CFI使能的Flash?? Memory器件,系統軟件首先要通過CUI往閃速存儲器的地址55H寫入數據98H,然后從器件的地址10H處開始通過數據總線連續讀取3個存儲單元中的內容,如果數據總線返回的3個存儲單元的字符分別為‘Q’、‘R’和‘Y’,那么該器件是一個CFI使能的Flash?? Memory器件。
??? 由于Flash? Memory內部的陣列結構各不相同,從器件返回查詢字符‘Q’的地址和數量亦不同。目前常見的Flash?? Memory內部陣列結構主要有以下三種模式:
(1) 單片×16結構,該芯片有8位訪問能力,但只能操作在16位總線模式;
(2) 雙片×8/16結構,每片既有8位又有16位總線存儲模式,但每片僅能操作在8位總線模式,整個芯片陣列結構為16位總線;
(3) 雙片×16結構,每片僅有8位總線存儲模式,且每片僅能操作在8位總線模式,整個芯片陣列結構為16位總線。
??? 在判決一個Flash? Memory是CFI使能器件后,軟件程序要根據從器件返回的查詢字符'Q'的數量來確定Flash?? Memory的陣列結構,并以此來保證對器件正確的讀寫操作。
3 公共閃存接口的結構
??? 在識別器件為CFI使能器件后,通過查詢命令來讀取CFI查詢結構或數據庫,這些數據的地址和含義如表1,在表1中地址13H處為制造商命令集和控制接口識別碼ID信息,其數據代表的含義如表2所示。
表1 CFI數據結構(數據庫)的地址和含義表
表2 制造商命令集和控制接口識別碼ID定義表
4 CFI查詢操作軟件流程
??? 從表1中可以看到CFI提供了一種公開的標準的數據信息,系統軟件能夠利用這些信息使用不同制造商的命令集、調整擦除和編程定時時間、根據擦除塊區域信息調整存儲器體積大小等。系統軟件要在CFI查詢操作中讀取CFI提供的主要數據信息,利用這些信息很容易對各種Flash?? Memory進行程序設計。CFI的查詢操作的程序框圖如圖1所示。
總結
以上是生活随笔為你收集整理的公共闪存接口CFI在Flash Memory程序设计中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单地发布EJB程序的过程
- 下一篇: SpringBoot2.0 基础案例(0