摘 要: 介紹了閃速存儲器(Flash Memory)的公共閃存接口(CFI)結(jié)構(gòu),,以及系統(tǒng)軟件如何利用CFI獲取Flash Memory的各種參數(shù),,實現(xiàn)對各種Flash Memory的程序設(shè)計,。
關(guān)鍵詞: 閃速存儲器 公共閃存接口CFI 命令用戶接口CUI
自從Intel公司于1988年推出了可快速擦寫的非易失性存儲器Flash Memory以來,快速擦寫存儲器Flash Memory技術(shù)就得到了非常迅速的發(fā)展,。這主要是由于Flash Memory具有不需要存儲電容器、集成度更高,、制造成本低于DRAM,、使用方便,讀寫靈活,、訪問速度快,、斷電后不丟失信息等特點。
雖然Flash Memory應(yīng)用越來越廣泛,,但由于生產(chǎn)Flash Memory的半導(dǎo)體制造商眾多,,不同廠商Flash Memory產(chǎn)品的操作命令集和電氣參數(shù)又千差萬別,,這給Flash Memory的開發(fā)設(shè)計人員和OEM制造商帶來許多不便。為了對現(xiàn)有的Flash Memory的產(chǎn)品進行升級或使用其它公司的Flash Memory產(chǎn)品替換,,必須對原有的程序代碼和硬件結(jié)構(gòu)進行修改,。為解決上述原因所引發(fā)的問題,迫切需要Flash Memory制造商提出一個公共的標(biāo)準解決方案,,在這樣的背景下,,公共閃存接口(Common Flash Interface,簡稱CFI)誕生了,,CFI是一個公開的標(biāo)準的從Flash Memory器件中讀取數(shù)據(jù)的接口,。它可以使系統(tǒng)軟件查詢已安裝的Flash Memory器件的各種參數(shù),包括器件陣列結(jié)構(gòu)參數(shù),、電氣和時間參數(shù)以及器件支持的功能等,。利用CFI可以不用修改系統(tǒng)軟件就可以用新型的和改進的產(chǎn)品代替舊版本的產(chǎn)品。例如:如果新型的Flash Memory的擦除時間只有舊版本的一半,,系統(tǒng)軟件只要通過CFI讀取新器件的擦除時間等參數(shù),,修改一下定時器的時間參數(shù)即可。為了充分有效地利用CFI所提供的功能,,有必要了解一下以下幾個方面的問題,。
1 Flash Memory的工作方式
對Flash Memory芯片的所有操作都是通過芯片的命令用戶接口(CUI)來實現(xiàn)的,命令用戶接口是微處理器或微控制器與芯片內(nèi)部操作之間的界面,。當(dāng)通過CUI寫入不同的控制命令時,,F(xiàn)lash Memory從一個工作狀態(tài)轉(zhuǎn)移到另一個工作狀態(tài),其常見的工作狀態(tài)分為以下幾種,。
1.1 讀存儲單元操作
在Flash Memory芯片上電以后,,或者從深度低功耗狀態(tài)返回以后,芯片就處于讀存儲單元狀態(tài),??赏ㄟ^寫入復(fù)位命令進入讀存儲單元狀態(tài)。此時可以讀取Flash Memory芯片存儲單元的內(nèi)容,,讀存儲單元的操作與SRAM相同,但不同公司的產(chǎn)品邏輯電源供電電壓(Vcc)是不同的,。
1.2 擦除操作
對Flash Memory芯片進行擦除操作時,由于Flash Memory采用模塊分區(qū)的陣列結(jié)構(gòu),,使得各個存儲模塊可以被獨立地擦除,,當(dāng)給出的地址是在模塊地址范圍之內(nèi)且向命令用戶接口寫入模塊擦除命令時,相應(yīng)的模塊就被擦除,。在執(zhí)行擦除操作時有三個問題需要注意:(1)由于Flash Memory采用模塊分區(qū)的陣列結(jié)構(gòu),,不同型號的Flash Memory產(chǎn)品模塊分區(qū)的數(shù)量和每個分區(qū)的大小是不一樣的;(2)不同型號的Flash Memory產(chǎn)品在執(zhí)行擦除操作時,,擦除電壓是不一樣的,;(3)不同型號的Flash Memory產(chǎn)品整片擦除時間和每個模塊分區(qū)的擦除時間參數(shù)是不同的,。
1.3 編程操作
Flash Memory 的編程操作是自動字節(jié)編程,既可以是順序?qū)懭?,也可以是指定地址寫入,。向用戶命令接口寫入字?jié)編程命令時,芯片自動進行字節(jié)編程和編程校驗,。在執(zhí)行編程操作時有兩個問題需要注意:(1)對不同型號的Flash Memory產(chǎn)品進行編程操作時編程電壓是不一樣的,;(2)不同型號的Flash Memory產(chǎn)品字節(jié)/字編程時間是不同的。所有這些問題都是在系統(tǒng)程序設(shè)計時必須要考慮的問題,。
除了以上所提到的常見的三種工作方式外,,F(xiàn)lash Memory還有芯片復(fù)位、讀標(biāo)識碼,、擦除掛起和擦除恢復(fù)等工作方式,只不過這幾種工作方式在程序設(shè)計時幾乎不需要考慮什么問題,,只要輸入正確的命令字即可,,但是不同公司的Flash Memory命令控制字是不同的。前面所遇到的問題,,都可以通過CFI來解決,,但首先要保證待操作的Flash Memory是一個CFI使能的器件。
2 CFI使能器件的識別
為了確定一個閃速存儲器是否是一個CFI使能的Flash Memory器件,,系統(tǒng)軟件首先要通過CUI往閃速存儲器的地址55H寫入數(shù)據(jù)98H,,然后從器件的地址10H處開始通過數(shù)據(jù)總線連續(xù)讀取3個存儲單元中的內(nèi)容,如果數(shù)據(jù)總線返回的3個存儲單元的字符分別為‘Q’,、‘R’和‘Y’,,那么該器件是一個CFI使能的Flash Memory器件。
由于Flash Memory內(nèi)部的陣列結(jié)構(gòu)各不相同,,從器件返回查詢字符‘Q’的地址和數(shù)量亦不同,。目前常見的Flash Memory內(nèi)部陣列結(jié)構(gòu)主要有以下三種模式:
(1) 單片×16結(jié)構(gòu),該芯片有8位訪問能力,,但只能操作在16位總線模式,;
(2) 雙片×8/16結(jié)構(gòu),每片既有8位又有16位總線存儲模式,,但每片僅能操作在8位總線模式,整個芯片陣列結(jié)構(gòu)為16位總線,;
(3) 雙片×16結(jié)構(gòu),每片僅有8位總線存儲模式,,且每片僅能操作在8位總線模式,整個芯片陣列結(jié)構(gòu)為16位總線,。
在判決一個Flash Memory是CFI使能器件后,軟件程序要根據(jù)從器件返回的查詢字符'Q'的數(shù)量來確定Flash Memory的陣列結(jié)構(gòu),,并以此來保證對器件正確的讀寫操作,。
3 公共閃存接口的結(jié)構(gòu)
在識別器件為CFI使能器件后,,通過查詢命令來讀取CFI查詢結(jié)構(gòu)或數(shù)據(jù)庫,這些數(shù)據(jù)的地址和含義如表1,,在表1中地址13H處為制造商命令集和控制接口識別碼ID信息,,其數(shù)據(jù)代表的含義如表2所示。
表1 CFI數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)庫)的地址和含義表
地址 長度 含 義 舉例 Intel
28F800BVT
10H 03H 查詢ASCII 10:0051H ‘Q’
字符串 11:0052H ‘R’
“QRY” 12:0059H ‘Y’
13H 02H 制造商命令集 13:0003H
和控制接口 14:0000H
識別碼ID
1BH 01H 邏輯供電 1B:0030H
Vcc最小電壓 (3伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1CH 01H 邏輯供電 1C:0055H
Vcc最大電壓 (5.5伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1DH 01H 編程/擦除供電 1B:0045H
Vpp最小電壓 (4.5伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1EH 01H 編程/擦除供電Vpp 1C:00C6H
最大電壓 (12.6伏)
位7-4:BCD
伏
位3-0:BCD
100毫伏
1FH 01H 典型單字節(jié)/字 1F:0003H
寫周期定時 N=3,,8微秒
時間,2N微秒
21H 01H 典型單塊擦 21:000AH
除定時時間, (1.024秒)
2N毫秒
22H 01H 典型整片擦 22:0000H
除定時時間, (不支持)
2N毫秒
23H 01H 單字節(jié)/字寫周期 23:0004H
最大定時時間, 24×8微秒
2N×典型單字節(jié)/字
寫周期定時時間
25H 01H 單塊擦除最大 23:0004H
定時時間, 24×1.024秒
2N×典型單塊
擦除定時時間
26H 01H 整片擦除最大 26:0000H
定時時間, (不支持)
2N×典型整片
擦除定時時間
27H 01H 器件體積= 27:0014H
2N字節(jié) 214=1M字節(jié)
28H 02H Flash器件接口 28:0002H
識別碼ID 29:0000H
2CH 01H 器件可擦除塊 2C:0004H
區(qū)域個數(shù) 4個擦除塊
Bit=7-0=可
擦除塊個數(shù)
2DH 04H 擦除塊區(qū)域1 2D:0006H
信息: 2E:0000H
bits 31-16 7個擦除塊
?。絲,該區(qū)域每個 2F:0000H
擦除塊體積= 30:0002H
z×256字節(jié) 256×200H
bits 15-0=y(tǒng), =128K字節(jié)
該擦除塊區(qū)域內(nèi)
含同樣體積
擦除塊的個數(shù)
?。統(tǒng)+1
31H 04H 擦除塊區(qū)域2 31:0000H
信息: 32:0000H
33:0080H
34:0001H
35H 04H 擦除塊區(qū)域3 35:0001H
信息: 36:0000H
37:0020H
38:0001H
39H 04H 擦除塊區(qū)域4 39:0000H
信息: 3A:0000H
3B:0040H
3C:0000H
表2 制造商命令集和控制接口識別碼ID定義表
數(shù)值 制造商 ????? 含 義
0000H 空
0001H Intel/ Intel/Sharp擴展命令集
Sharp
0002H AMD/ AMD/Fujitsu標(biāo)準命令集
Fujitsu
0003H Intel ? ? Intel標(biāo)準命令集
0004H AMD/ AMD/Fujitsu擴展命令集
Fujitsu
0100H Mitsubishi Mitsubishi標(biāo)準命令集
0101H Mitsubishi Mitsubishi擴展命令集
FFFFH N/A 保 留
4 CFI查詢操作軟件流程
從表1中可以看到CFI提供了一種公開的標(biāo)準的數(shù)據(jù)信息,,系統(tǒng)軟件能夠利用這些信息使用不同制造商的命令集、調(diào)整擦除和編程定時時間,、根據(jù)擦除塊區(qū)域信息調(diào)整存儲器體積大小等,。系統(tǒng)軟件要在CFI查詢操作中讀取CFI提供的主要數(shù)據(jù)信息,利用這些信息很容易對各種Flash Memory進行程序設(shè)計,。CFI的查詢操作的程序框圖如圖1所示,。
參考文獻
1 Common Flash Interface (CFI) and Command Sets. Intel Corporation, 1997(11)
2 Common Flash Memory interface Specification.Intel Corporation,1997(5)
3 Common Flash Memory Interface Publication 100.AMD Corporation, 1996(7)
4 竇振中.單片機外圍器件使用手冊:存儲器分冊. 北京:北京航空航天大學(xué)出版社,1998.4