NandFlash調(diào)試的過程與心得
調(diào)試的過程與心得交流
硬件平臺:ARM7 44b0x
軟件調(diào)試平臺:ADS1.2
目的:調(diào)試一型號為:三星公司的k9f2808 容量為16M *8Bit 的NandFlash
文中:NF表示的是NandFlash
當把k9f2808 焊好后,便開始調(diào)試了,但是在其中遇到很多問題
我是第一次接觸NandFlash,剛開始還是很陌生
<1>可以讀出ID號(非常順利, 這一點是我也沒有想到的,認為基本上就搞定了)
<2>我試著寫擦除代碼 寫頁(我試著寫0X5), 讀頁。 結(jié)果是返回來的全部是0XFF, 這時就出現(xiàn)了好多的疑點了:
我分析如下:
第一種可能:沒有擦除到NF,也就不可能寫了,返回的是錯誤的(懷疑擦除的時序有問題)
第二種可能:擦除對了,寫頁不對,讀頁也不對
第三種可能:擦除對了,寫頁對了,讀頁不對,返回的全部是錯誤的。
第四種可能:硬件連接不對包括有:(ALE 、CLE、CS、WR、RD等等)
第五種可能:硬件的焊接有問題
第六種可能:NandFlash是壞的
那時我也不知是什么問題而且很快進入了混亂之中。朋友們,當看到這里的時候,你認為是哪里出問題?
接著我是這樣做的,我現(xiàn)在也覺得挺有意思
不斷地調(diào)試代碼(可以說是這樣:腦子里想到這里有可能,就調(diào)一下,那里有可能就那里調(diào)一下)(因為我太想搞出來,想一下子把它搞定)
搞了三天還是不行,這時自己又停下來思索了,究竟是哪里出問題了???,就開始去網(wǎng)上找代碼,整個GOOGLE都給我找翻了,但是還是沒有答案。很是郁悶。
因為看到網(wǎng)上好多的開發(fā)板都是把控制線接到GPIO那里去的,而我的是接到地址總線上去的,于是我也就把問題歸結(jié)的硬件連接的問題上去了。這時的我又是安慰自己,本來快沒有信心的了,開始又有了信心了(我想搞開發(fā)的都會有這種感覺)。很快把控制線連到GPIO上,接著是改代碼。結(jié)果呢?充滿信心的我一下也就像沒氣的氣球了,真是煩啊!
究竟是哪里出錯了???很是郁悶啊?。∥艺娴氖抢哿?,決定先放一放先,打了二天的星際爭霸游戲,調(diào)節(jié)一下心情。
過了二天,我就告訴自己一定要徹底靜下心來認真思考,鼓勵自己要有耐心才能成功。于是我進入了第二階段:
首先我還是把控制線接回地址總線那里去(因為我對這個比較有信心,起碼可以讀出ID)
我開始思考:我可以讀出ID 來,就證明:
1, 寫命令是正確的(否則的話就讀不回ID,焊接是沒問題的,線據(jù)線是沒有連錯的)
2, 讀NF ID 的時序是沒有問題的。ID =0XEC73
于是我就想:我寫命令是對的了,那么我發(fā)擦除塊的命令也是對的,于是我又聯(lián)想到,我所有寫指令(包括寫地址,寫命令)都有對的(這點是很重要的,也是至關(guān)重要的)。讀數(shù)據(jù)的指令也是對的了(因為我能夠把ID都讀回來了(這點是錯的,因為到最后就是卡住我了))
現(xiàn)在的我又很有信心了。
現(xiàn)在我要證明我所分析是對的,于是我開始調(diào)代碼了:
我試著擦除NF,然后往0 block 0 Page頁寫(0x05)(時序是不能馬虎的),再來就是試著讀剛才寫的頁,結(jié)果在串口超級終端返回的又是OXFF,我這時好像要崩潰了,但是我又馬上意識的,我分析的應(yīng)是對的,我懷疑時序,本來我是不會用邏輯分析儀的,我開始進入學(xué)習(xí)邏輯分析儀了,搞了二天終于會用那玩意了。我看到時序是有的,我腦子里突然有一種想法,讀多幾次看怎么樣?于是我連著讀好多次那頁,結(jié)果有讀到第三次的時候,出現(xiàn)不是0xff,我開心極了,因為都讀回來了(0x05),我上了次廁所(忙到忘了上廁所了),為了確認我再重新運行程序,又不行了。那是的我真是好難受啊心里面。我又試了好多次,有時能讀回來,有時又不能讀回來,我又想是不是寫沒有寫好,于我又往那頁寫不是同樣的數(shù)據(jù),寫了0,1,2,3…….511, 就這樣我再讀,結(jié)果只能讀回0,1,下面的全部是OXFF,這時我為了驗證是不是沒有寫上,于是我又開始讀(不是從0區(qū)的第一個字節(jié)讀,我換了其它位置去讀,結(jié)果讀到了8,9)這時我明白了上點,那就是:寫進去的了,問題就是出在讀上面(這是非常重要的一點),于是我用邏輯分析儀進行分析,結(jié)果呢?讀的時序是有的,但是寫的時序也是有的;這時我又明白了一點;但是不應(yīng)出現(xiàn)這樣的現(xiàn)象的?。。?BR>
最終的問題就是出現(xiàn)在這里了:
我用的44B0X的BANK是BANK5(PORTB10), 這個BANK的控制寄存器沒有設(shè)好(我本來想都沒去想這里會出錯了,板子說明是BANK5沒有使用)沒有想到問題就是出現(xiàn)在這里;我換了其它的BANK試了一下,一切都是OK?。?!
感想:從這次調(diào)NF 可以學(xué)到很多很多的東東。對我以后的發(fā)展以及經(jīng)驗的積累起到了很大的作用。我同時也感覺很幸運,為什么呢?假如一開始就用其它的BANK那我可能就少走很多的調(diào)試的路了,但是正因為這樣,讓我積累了更多的東東。這也是收獲吧??!
如果有哪位同盟在做類似的工作時,遇到有問題,可以大家一起討論。我的聯(lián)系方法是:
baai433@163.net-
電話 :1371-4394-083