日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...

發布時間:2025/3/12 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nand?Flash?是一個存儲芯片。本文引用地址:http://www.eepw.com.cn/article/201801/374606.htm

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

問1:原理圖上的Nand?Flash和SC2440之間只有數據線,怎么傳輸地址?

答:在Data0-Data7上既傳輸數據,又傳輸地址,當ALE為高電平時傳輸的是地址

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

答:在Data0-Data7既傳輸數據,又傳輸地址,也傳輸命令

當ALE為高電平時傳輸的是地址

當CLE為高電平時傳輸的是命令

當ALE和CLE為低電平時傳輸的是數據

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

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

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

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

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

怎么操作Nand?Flash呢?

答:根據Nand?Flash的芯片手冊,一般的過程是:

發出命令

發出地址

讀寫數據

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

我們先看下nandflash的布線

有data0?到data7?八根數據線

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

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

復用,這幾個引腳即傳數據也傳地址

怎么分別是數據還是地址呢,有個ALE信號,當ALE是高電平時,傳輸的是地址

但是它不僅只傳輸地址和數據,還傳輸命令,在nand?flash芯片手冊可知,要操作nandflash要先發出命令,只有八條數據線,怎么傳輸命令呢???

當CLE為高電平的時候傳輸的就是命令,當ALE和CLE都為低電平的時候傳輸的是數據。

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

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

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

就是通過這些設備要訪問之前,必須選中,什么叫選中呢,他們都有片選信號,就要我們的片選引腳變為低電平選中,就是cs引腳,沒有選中的芯片不會工作,相當于沒接一樣

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

we和re就是讀寫信號..

怎么操作nandflash

根據nandflash的芯片手冊,一般過程是:發出命令,發出地址,讀寫數據。

nandflash的命令表格如下

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

每個nandflash都會內嵌ID,比如廠家ID啊等等。

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

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

然后接著發出一個0地址,然后就可以讀數據了。

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

nandflash?芯片(rus5pv210)

選中芯片

發命令的操作?CLE變為高電平把命令值寫到NFCMD寄存器里就可以了

在data0-data7輸出命令值

提供一個寫脈沖

選中芯片

發地址?ALE輸出高電平

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

提供一個寫脈沖

選中芯片

發數據?ALE,CLE輸出低電平

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

提供一個寫脈沖

選中芯片

讀數據?發出一個讀脈沖

讀data0-data7的數據

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

1.讀ID,時序圖在上面

選中

發出0x90命令

發出地址0x00

讀第一個數據會得到0xEC

讀第二個數據得到device?code

選中的話芯片手冊的nand?flash章節?可以知道

選為0為選中

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

同理?地址和數據也是一樣寄存器如下

但是在uboot里面怎么操作呢

uboot里面有命令可以讀內存的

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

mw.w?是寫命令

md?內存顯示?b是以字節為單位,w是以2字為單位,l是以四字節為單位

讀ID命令流程如圖

讀出dc

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

結束讀ID的命令?就是NFCMD寄存器等于0xff?就是命令的reset

2.讀數據

我們可以根據uboot的nand?dump?0命令讀取0地址的數據

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

為什么中間有五個地址

看容量

讀00數據命令如下

跟上面的輸出是一樣的

總結

以上是生活随笔為你收集整理的linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。