ONFI协议研究
概述
ONFI是Nand Flash的一套公開標準
官網:http://www.onfi.org/
機緣巧合,就看一下
官網有提供PDF下載,最新版本5.0,383頁
上來就看英文實在一頭霧水,最后找到了4.0的中文版
電子發燒友網:http://www.elecfans.com/soft/68/guide/2017/20170727535427.html
后來,還是想先看些入門科普級的
于是在京東讀書上找到了《固態存儲:原理、架構和數據安全》
ONFI 5.0目錄
第一章
第二章:管腳
Bing搜了把tsop-48
https://cn.bing.com/search?q=tsop-48&qs=n&form=QBRE&sp=-1&pq=tsop-48&sc=1-7&sk=&cvid=94EEFB7B26BE45B6877E2025ACCAEE7D
很多是賣存儲貼片(?成品)
有些管腳硬件和工藝人員更關注,比如電源等不可變的
有些軟件和驅動人員更關注,比如查詢狀態、控制使能等可變的
所以重點看2.8章:信號描述
像看寄存器手冊一樣,盡力理解每個管腳干啥的
| R/B_x_n。O | Ready/Busy。輸出管腳。用于獲取Ready/Busy狀態 |
| RE_x_n(RE_x_t)。I | Read Enable (True)。輸入管腳。用于設置讀模式 |
| RE_x_c。I | Read Enable Complement。輸入管腳。一定場景選用 |
| W/R_x_n。I | Write/Read Direction。輸入管腳。看名字像是可以控制讀寫方向(再進一步怎么玩,沒有項目實踐,還真就不知道) |
| CE_x_n。I | Chip Enable。輸入管腳。用于多芯片場景,表示選中 |
| … | (后面再慢慢看) |
第三章:內部結構
能不能真正入門,就看對這一章節的理解了
一個設備有多個target(用CE_n信號選中)。一個target包含若干個LUN(邏輯單元)LUN是能夠獨立執行CMD和上報狀態的最小單元。特別是,各個獨立的LUN,可以并行執行任意命令序列。 例如,允許在LUN 0上執行Page Program操作,同時在LUN 1上執行Read命令 到3.1.3章節看多LUN操作限制 一個LUN包括至少一個Page寄存器和一個Flash陣列 Page寄存器數量取決于LUN支持的多Plane操作數量 Flash陣列包含若干BlockBlock是LUN Flash陣列中,可擦除數據的最小單元。LUN中的Block數量沒有限制 Block包含若干PagePage是讀寫操作尋址的最小單元。Page包含若干Byte或Word。每個Page的用戶數據Byte數量,不包括額外的數據區,應該是2的N次方。每個Block中的Page數量應該是32的倍數每個LUN應該有至少一個Page寄存器。Page寄存器用于臨時存儲數據,在移到Flash陣列的Page之前,或者在從Flash陣列的Page移出之后Page寄存器中的Byte或Word位置,被稱為Column在這種結構里,有2種機制實現并行。同時會有多個CMD到不同的LUN。為了進一步在一個LUN中實現并行,多Plane操作可能用于執行額外的并行依賴操作第四章:數據接口和時序
ONFI支持5種不同的數據接口類型:SDR、NV-DDR、... SDR數據接口是傳統的NAND接口,使用RE_n去鎖定數據讀取,WE_n去鎖定數據寫入,不包括時鐘 NV-DDR數據接口雙倍數據數率,包括標識鎖定哪些命令字和地址的一個時鐘,標識鎖定哪個數據的一個數據閘門 ...第五章:CMD定義
表5-1概述ONFI的命令集第一個CMD周期的指定值,表示將要執行的CMD。有些CMD有第二個CMD周期,表5-1有指定。通常,CMD有第二個CMD周期的,都有一個地址第六章:多平面操作
LUN支持多平面讀取、寫和擦除操作。多平面操作是指向同一LUN上的不同Block發出相同類型的多個命令。有關解決多平面操作的限制,請參見第5.7.1.27節。多平面操作有兩種方法:并行操作和重疊操作。 在執行多平面操作時,這些操作/功能應為相同的類型。可用于多平面操作的功能有: - 寫Page - Copyback方式的讀和寫 - 塊擦除 - 寫第七章:操作流程
7.1.目標操作流程 目標狀態機描述了與目標一起操作時允許的序列。如果沒有一個弧為真,則目標仍處于當前狀態。7.1.1.變量 本節描述了在目標狀態機中使用的變量。tbStatusOut 當數據讀取周期應該返回狀態值時,此變量被設置為TRUE。此變量的上電值為FALSE。tbChgCol 允許使用“Change Read Column”更改列時,將此變量設置為TRUE。此變量的上電值為FALSE。tbChgColEnh 當允許使用“Change Read Column Enhanced”更改列時,將此變量設置為TRUE。此變量的上電值為FALSE。tCopyback 如果目標正在發出Copyback命令,則此變量設置為TRUE。此變量的上電值為FALSE。tLunSelected 此變量包含主機當前選擇的LUN。此變量的上電值為0。tLastCmd 此變量包含目標所接收到的最后一個命令的第一個周期(除了70h/78h)。tReturnState 此變量包含狀態操作后要返回的狀態。tbStatus78hReq 當下一個狀態操作應為78h命令(而不是70h命令)時,此變量被設置為TRUE。此變量的上電值為FALSE。其它網文參考
-
NAND FLash基礎概念介紹
https://www.cnblogs.com/yfceshi/p/6854968.html -
Nand Flash數據存儲單元的整體架構
https://www.cnblogs.com/yfceshi/p/6854968.html
總結
- 上一篇: 初学者学习app2sd并且成功使用它的全
- 下一篇: Django实现用户注册登录,表单提交后