在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

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

            各種找原因,剛開始以為是底層驅(qū)動(dòng)函數(shù)沒有寫好,然后就研究底層驅(qū)動(dòng)開始,一點(diǎn)一點(diǎn)的理解。。。

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

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

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

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

            可悲的是發(fā)現(xiàn)沒有任何問題。。。

            裸奔程序能完美的操作NAND FLASH讀寫擦除各種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},

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

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

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

            return this->scan_bbt (mtd);

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



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

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉