<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linux驅(qū)動之Nand Flash四問,原理、工作方式都包含了

          Linux驅(qū)動之Nand Flash四問,原理、工作方式都包含了

          作者: 時間:2018-01-18 來源:網(wǎng)絡 收藏

            Nand Flash 是一個存儲芯片。

          本文引用地址:http://www.ex-cimer.com/article/201801/374606.htm

            那么:這樣的操作很理“讀地址A的數(shù)據(jù),把數(shù)據(jù)B寫到地址A”

            問1:原理圖上的Nand Flash和SC2440之間只有數(shù)據(jù)線,怎么傳輸?shù)刂?

            答:在Data0-Data7上既傳輸數(shù)據(jù),又傳輸?shù)刂?,當ALE為高電平時傳輸?shù)氖堑刂?/p>

            問2:從Nand Flash芯片手冊可知,要操作Nand Flash需要先發(fā)出命令,怎么傳入命令。

            答:在Data0-Data7既傳輸數(shù)據(jù),又傳輸?shù)刂?,也傳輸命?/p>

            當ALE為高電平時傳輸?shù)氖堑刂?/p>

            當CLE為高電平時傳輸?shù)氖敲?/p>

            當ALE和CLE為低電平時傳輸?shù)氖菙?shù)據(jù)

            問3:數(shù)據(jù)線既接到Nand Flash,也接到NOR Flash,還接到SDRAM等等,怎么避免干擾?

            答:這些設備,要訪問之前必須選中

            沒有選中的芯片不會工作,相當于沒有接一樣

            問4:假設燒寫Nand Flash,把命令、地址、數(shù)據(jù)發(fā)給它之后,Nand Flash肯定不可能瞬間完成燒寫的,怎么判斷燒寫完成?

            答:通過狀態(tài)引腳RnB來判斷:它為高電平表示就緒,它為低電平正忙。

            怎么操作Nand Flash呢?

            答:根據(jù)Nand Flash的芯片手冊,一般的過程是:

            發(fā)出命令

            發(fā)出地址

            讀寫數(shù)據(jù)

            以上操作可以從時序圖上得到

            我們先看下nandflash的布線

            有data0 到data7 八根數(shù)據(jù)線

            nandflash是個存儲芯片,那我提出請求:讀地址a的數(shù)據(jù),把數(shù)據(jù)b寫到a地址上去

            那么我們看原理圖只看到data0-data7,沒有看到地址引腳,那怎么把地址傳給我們的開發(fā)板

            復用,這幾個引腳即傳數(shù)據(jù)也傳地址

            怎么分別是數(shù)據(jù)還是地址呢,有個ALE信號,當ALE是高電平時,傳輸?shù)氖堑刂?/p>

            但是它不僅只傳輸?shù)刂泛蛿?shù)據(jù),還傳輸命令,在nand flash芯片手冊可知,要操作nandflash要先發(fā)出命令,只有八條數(shù)據(jù)線,怎么傳輸命令呢???

            當CLE為高電平的時候傳輸?shù)木褪敲?,當ALE和CLE都為低電平的時候傳輸?shù)氖菙?shù)據(jù)。

            這個data0 有的開發(fā)板不僅僅只接nandflash,還有的接norflash等等非常多的地方

            數(shù)據(jù)線 地址線等即接到nandflash,也接到norflash,還接到sdram,DM9000等等。怎么避免干擾,比如說我訪問nandflash的時候,norflash就不要給我提供數(shù)據(jù)

            你就要相當與沒接一樣,怎么避免干擾呢???

            就是通過這些設備要訪問之前,必須選中,什么叫選中呢,他們都有片選信號,就要我們的片選引腳變?yōu)榈碗娖竭x中,就是cs引腳,沒有選中的芯片不會工作,相當于沒接一樣

            假設燒寫nandflash,把數(shù)據(jù)、命令、地址發(fā)給他之后,nandflash肯定是不可能瞬間完成的,怎么判斷燒寫完成,通過狀態(tài)引腳RnB來判斷,它為高電平表示完成就緒。為低電平表示正忙

            we和re就是讀寫信號..

            怎么操作nandflash

            根據(jù)nandflash的芯片手冊,一般過程是:發(fā)出命令,發(fā)出地址,讀寫數(shù)據(jù)。

            nandflash的命令表格如下

            我們往下看,拿個例子來看,讀ID這個例子的時序圖

            每個nandflash都會內(nèi)嵌ID,比如廠家ID啊等等。

            時序圖 橫軸是時間,時序圖怎么看呢 ,從左往右看??v向方向就是一列一列 來看

            然后可以看到發(fā)出命令 90,怎么知道的 ,在數(shù)據(jù)線上發(fā)出90這個值,怎么知道它是命令的,就是CLE是高電平。然后給它一個寫脈沖。這個寫信號的上升沿nandflash就會把數(shù)據(jù)存進來,它就知道了我是一個命令。

            然后接著發(fā)出一個0地址,然后就可以讀數(shù)據(jù)了。

            對于我們芯片來說里面集成了一個nandflash控制器,內(nèi)部接線。它幫我們簡化了這些操作,

            nandflash 芯片(rus5pv210)

            選中芯片

            發(fā)命令的操作 CLE變?yōu)楦唠娖桨衙钪祵懙絅FCMD寄存器里就可以了

            在data0-data7輸出命令值

            提供一個寫脈沖

            選中芯片

            發(fā)地址 ALE輸出高電平

            在data0-data7輸出地址值把地址寫入NFADDR寄存器里就可以了

            提供一個寫脈沖

            選中芯片

            發(fā)數(shù)據(jù) ALE,CLE輸出低電平

            在data0-data7輸出數(shù)據(jù)的值把地址寫入NFDATA寄存器里就可以了

            提供一個寫脈沖

            選中芯片

            讀數(shù)據(jù) 發(fā)出一個讀脈沖

            讀data0-data7的數(shù)據(jù)

            我們可以用uboot體驗nandflash的操作

            1.讀ID,時序圖在上面

            選中

            發(fā)出0x90命令

            發(fā)出地址0x00

            讀第一個數(shù)據(jù)會得到0xEC

            讀第二個數(shù)據(jù)得到device code

            選中的話芯片手冊的nand flash章節(jié) 可以知道

            選為0為選中

            發(fā)出命令就是把命令寫到下面這個寄存器里面去

            同理 地址和數(shù)據(jù)也是一樣寄存器如下

            但是在uboot里面怎么操作呢

            uboot里面有命令可以讀內(nèi)存的

            md.w 0xB0E0_0004 1 這命令表示讀 0xb0e00004 讀一次

            mw.w 是寫命令

            md 內(nèi)存顯示 b是以字節(jié)為單位,w是以2字為單位,l是以四字節(jié)為單位

            讀ID命令流程如圖

            讀出dc

            我們驗證一下 nandflash里面讀ID下面就有這張圖 

            結(jié)束讀ID的命令 就是NFCMD寄存器等于0xff 就是命令的reset

            2.讀數(shù)據(jù)

            我們可以根據(jù)uboot的nand dump 0命令讀取0地址的數(shù)據(jù)

            我們來一下nandflash讀操作的時序圖

            為什么中間有五個地址

            看容量

            讀00數(shù)據(jù)命令如下

            跟上面的輸出是一樣的



          關鍵詞: Linux Nand

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();