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