簡介
CFI的作用是把 NOR Flash 的信息通過統一的方法讀出來。不同公司產的NOR Flash在 erase,program,lock,unlock等操作上有差別,即command set不一樣。本來產品中用這種NOR Flash,後來升級又換了其他牌子的了,command set不一樣,就要改代碼。NOR Flash要是支持CFI就好辦多了,就不用改代碼。通過CFI可以讀出片子的manufacturer id,vendorid等等,在程式中就可以通過以上信息來選擇正確的erase,program等操作方式。NOR Flash的數據線和地址線都可能為32/16/8條。為了統一起見,通過CFI接口查詢時,CFI接口描述的地址均為Flash晶片的地址,CFI接口查詢到的數據,以低位元組D7-D0上為準,高位元組數據線無視就好了。
CFI標準,其實也就是一系列的表格,包含了5個部分:
1.“CFI Query Identification String”,CFI查詢識別碼字元串。
2.“System Interface String”,系統接口字元串。
3. “Device Geometry Definition”,設備物理結構信息定義。
4. “Primary Vendor-Specific Extended Query”,原始設備提供商相關的擴展查詢信息。
5.“Alternate Vendor-Specific Extended Query”,可選/備用提供商相關的擴展查詢信息。
為什麼需要CFI
在套用CFI之前,Flash器件的有關信息都儲存在系統軟體的表格中。當有新的器件發布時,一般必須修改軟體來添加該器件的描述信息。CFI出現後,工程師們正在利用CFI來構建代碼,它不僅能夠運行在Flash存儲器上,而且隨時準備著套用在下一代的低成本版本上。這使得原始設備製造商能夠在低成本Flash存儲器設備可用時使用它而不必重寫代碼。
由於生產Flash Memory的半導體製造商眾多,不同廠商Flash Memory產品的操作命令集和電氣參數又千差萬別,這些人在設計硬體的時候,已經在陣腳的兼容性等方面,做了足夠多的文章,做得很好了,但是與此對應的軟體方面,由於硬體升級,軟體都要改動很大,這給Flash Memory的開發設計人員和OEM製造商帶來許多不便。
為了對現有的Flash Memory的產品進行升級或使用其它公司的Flash Memory產品替換,必須對原有的程式代碼和硬體結構進行修改。
CFI的好處
它可以使系統軟體查詢已安裝的Flash Memory器件的各種參數,包括器件陣列結構參數、電氣和時間參數以及器件支持的功能等。利用CFI可以不用修改系統軟體就可以用新型的和改進的產品代替舊版本的產品。例如:如果新型的Flash Memory的擦除時間只有舊版本的一半,系統軟體只要通過CFI讀取新器件的擦除時間等參數,修改一下定時器的時間參數即可。
簡單說就是:
1.使得軟體和硬體升級更加方便。
2.使得不同廠商之間的硬體兼容性更好,也就是如果都支持了CFI,很多時候,可以實現底層硬體的互換。
比如,軟體是基於CFI的,那么底層硬體的flash,換了另一廠商的,,而上層軟體就不需要改動,也可以工作。
CFI與SPI flash的區別
SPI:serial peripheral interface串列外圍設備接口,是一種常見的時鐘同步串列通信接口。CFI是公共快閃記憶體接口,是由存儲晶片工業界定義的一種獲取快閃記憶體晶片物理參數和結構參數的操作規程和標準。CFI有許多關於快閃記憶體晶片的規定,有利於嵌入式對FLASH的編程。很多NOR FLASH 都支持CFI,但並不是所有的都支持。普通的parallel/CFI/JEDEC接口的的Nor Flash的針腳比較多,晶片比較大。之所有會有SPI接口的,主要是相對CFI/Parallel的Nor,可以減少針腳數目,減少晶片封裝大小,採用了SPI後的Nor Flash,針腳只有8個。SPI flash和parallel的介質都是Norflash ,但是SPI 是通過串列接口來實現數據操作,而parallel則以並行接口進行數據操作,SPI容量都不是很大,市場上Numonyx做大可以做到128mbit,而且讀寫速度慢,但是價格便宜,操作簡單。而parallel接口速度快,容量上市場上已經有1Gmbit的容量,價格昂貴。