CFI --- Common Flash Interface

1.CFI簡介

   CFI(Common Flash Interface)的作用是把 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上爲準,高字節數據線無視就好了。

2. Query mode

   NOR Flash支持很多命令,包括erase,program,lock什麼的。若NOR Flash支持CFI的話,它一定要支持CFI Query Command。

   爲了進入讓芯片進入Query mode,需要向0x55(Flash地址)上寫數據0x98
       Flash的地址線上放 55h    (高字節全是0)
       Flash的數據線上放 98h    (高字節全是0)


   在query mode下,再讀Flash地址的話,得到的就不是存儲的用戶數據了,而是片子自己的屬性信息:廠商id,容量大小等(即所謂的Query Struct)

3. Query Struct

   在Query mode時,一定要無視Flash的芯片的高字節數據線,只關心最低字節數據線D7-D0,比如:
   

解釋一下,上圖是在query mode時,讀0x10(flash地址)時得到的結果

第一列:x16 device / x8 mode的意思是說,芯片有16根地址線,配置後,我們只用其中的8根
第二列:Flash的地址 0x10
第四列:爲了訪問Flash地址0x10, CPU需要發出的地址,注意這裏地址線錯接。
第五列:CPU數據線得到的數據。


x8 device/ x8 mode  沒啥講的,地球人都知道
x16 device/x16 mode 
        1.爲訪問Flash的地址0x10,CPU需在地址線上發出的地址爲0x20,見NOR Flash的帖子
        2.Flash把0x10(Flash地址)上的16-bit數據放到數據線上,這個數據是 0x0051(即 'null' 'Q')
        3.CPU 得到16-bit數據,但只有低字節是有用的(即'Q') 記住CFI接口只使用地址線的最低字節 


爲了方便起見,我們只考慮 x8 mode 這種情況,則Query Struct是這樣的:



0x10段的 'QRY'總是被用來判別NOR Flash是否支持CFI

0x1B段主要描述當前NOR Flash的Program 和 Erase操作所使用的電壓



0x27段主要描述的就是Flash的容量等信息


4. 判斷是否支持CFI的流程




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章