<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 關(guān)于u-boot移植時(shí)的NAND FLASH問(wèn)題

關(guān)于u-boot移植時(shí)的NAND FLASH問(wèn)題

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏
在移植U-BOOT的時(shí)候,大部分時(shí)間都是卡在nand flash里,因為我的nand flash容量比較大,512M的,網(wǎng)上的一般都是256M的吧,然后我就蛋疼蛋疼的搞了好久好久。。。

遇到的問(wèn)題是這樣:u-boot無(wú)法對nand flash正常讀寫(xiě),總是識別出各種壞塊,幾乎把整塊nand都當作壞塊了,最明顯的就是保存環(huán)境變量時(shí),使用saveenv命令,提示擦除時(shí)遇到壞塊。

本文引用地址:http://dyxdggzs.com/article/201611/321273.htm

各種找原因,剛開(kāi)始以為是底層驅動(dòng)函數沒(méi)有寫(xiě)好,然后就研究底層驅動(dòng)開(kāi)始,一點(diǎn)一點(diǎn)的理解。。。

在這里普及一下NAND的基本知識吧,剛開(kāi)始我也稀里糊涂的。

NAND flash以頁(yè)為單位讀寫(xiě)數據,而以塊為單位擦除數據。按照這樣的組織方式可以形成所謂的三類(lèi)地址:
  Column Address:Starting Address of the Register. 翻成中文為列地址,地址的低8位
  Page Address :頁(yè)地址
  Block Address :塊地址
  對于NAND Flash來(lái)講,地址和命令只能在I/O[7:0]上傳遞,數據寬度是8位。

我的用吧,一頁(yè)有2112Bytes(2048byte(Main Area)+64byte(Spare Area)),每64個(gè)page形成一個(gè)Block,然后具體有多少個(gè)塊,就視你的nand容量大小嘍。。。(注意NAND FLASH在出廠(chǎng)時(shí)就別允許具有少量壞塊)

基本知識搞定,然后是寫(xiě)代碼。。。根據電路原理圖,寫(xiě)吖寫(xiě),這里就不寫(xiě)出來(lái)了。

可悲的是發(fā)現沒(méi)有任何問(wèn)題。。。

裸奔程序能完美的操作NAND FLASH讀寫(xiě)擦除各種HIGH。。。

最后,只能回歸研究u-boot代碼了。。。

再然后的然后,我知道了。。。

在drivers/nand目錄下的nand_ids.c文件里,列出了各種NAND的屬性列表。。。然后把

{"NAND 512MiB 3,3V 8-bit", 0xDC, 512, 512, 0x4000, 0},
改為

{"NAND 512MiB 3,3V 8-bit",0xDC, 0, 512, 0, 0},

就這樣改一句就把我糾結那么久的問(wèn)題解決了。。。識別俺的NAND出問(wèn)題了。。。

在看代碼的過(guò)程中,注意到了一點(diǎn),就是每當程序運行到nand初始化的時(shí)候,都要花費非常久的時(shí)間,這直接導致u-boot啟動(dòng)時(shí)間大大延長(cháng),這就和我們的電腦一樣,如果BIOS在引導windows時(shí)花費了很長(cháng)時(shí)間,任誰(shuí)都抓狂。

剛開(kāi)始我以為這些時(shí)間是花費在檢測NAND的容量上,但是通過(guò)讀代碼,最終發(fā)現,在nand_base.c里有個(gè)函數為nand_scan(),其最后為

return this->scan_bbt (mtd);

就是這個(gè)scan_bbt(mtd),占用了這么長(cháng)時(shí)間。。。然后百度了一下BBT,記錄壞塊的一個(gè)東東,然后我就把他拋棄了,然后這個(gè)返回變?yōu)閞eturn 0;....呱呱,啟動(dòng)只需一瞬間,或許我的電腦啟動(dòng)那么慢也是做很多無(wú)聊的事吧。。。呵呵,開(kāi)個(gè)玩笑,建立BBT是非常有好處滴,自己百度吧。



關(guān)鍵詞: u-boot移植時(shí)NANDFLAS

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>