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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > NAND Flash的驅(qū)動程序設(shè)計方案

          NAND Flash的驅(qū)動程序設(shè)計方案

          作者: 時間:2012-04-03 來源:網(wǎng)絡(luò) 收藏
          ORD-SPACING: 0px; FONT: 14px/24px 宋體, arial; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 3em; PADDING-TOP: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">  命令代碼:首先寫入60h進入擦寫模式,然后輸入塊地址,接下來寫入D0h, 表示擦寫結(jié)束。

            參數(shù)說明:block,塊號;返回值0,擦除錯誤(若是壞塊直接返回0;若擦除出現(xiàn)錯誤則標記為壞塊然后返回0),返回值1,成功擦除。

          static int NF_EraseBlock(unsigned int block){/* 如果該塊是壞塊, 則返回 */
            if(NF_IsBadBlock(block)) return 0;
            NF_nFCE_L(); /* 片選NAND Flash芯片*/
            NF_CMD(0x60); /* 設(shè)置擦寫模式 *//* A9A16(Page Address) , 是基于塊擦除*/
            NF_ADDR(blockPage0xff);
            NF_ADDR((blockPage>>8)0xff); /* A25(Page Address) */
            NF_ADDR((blockPage>>16)0xff); NF_CMD(0xd0); WAITRB();CMD(0x70);
            if(RDDATA()0x1){/*如有錯,標為壞塊,取消Flash選中*/
            MarkBadBlock(block);
            return 0;
            } else { /* 退出, 取消Flash 選中*/
            return 1;}

          3 ECC校檢原理與實現(xiàn)

            由于NAND Flash的工藝不能保證NAND的Memory Array在其生命周期中保持性能可靠,因此在NAND的生產(chǎn)及使用過程中會產(chǎn)生壞塊。為了檢測數(shù)據(jù)的可靠性,在應(yīng)用NAND Flash的系統(tǒng)中一般都會采用一定的壞區(qū)管理策略,而管理壞區(qū)的前提是能比較可靠地進行壞區(qū)檢測。如果操作時序和電路穩(wěn)定性不存在問題的話,NAND Flash出錯的時候一般不會造成整個塊或是頁不能讀取或全部出錯,而是整個頁(例如512字節(jié))中只有一位或幾位出錯。對數(shù)據(jù)的校驗常用的有奇偶校驗、CRC校驗等,而在NAND Flash處理中,一般使用一種專用的校驗——ECC。ECC能糾正單位錯誤和檢測雙位錯誤,而且計算速度很快,但對1位以上的錯誤無法糾正,對2位以上的錯誤不保證能檢測。ECC一般每256字節(jié)原始數(shù)據(jù)生成3字節(jié)ECC校驗數(shù)據(jù),這3字節(jié)共24位分成兩部分:6位的列校驗和16位的行校驗,多余的2位置1,如表1所列。

          表1 校檢數(shù)據(jù)組成
          按此在新窗口瀏覽圖片

            首先介紹ECC的列校檢。ECC的列校驗和生成規(guī)則如圖4所示,“^”表示“位異或”操作。由于篇幅關(guān)系,行校檢不作介紹,感興趣的讀者可以參考芯片datasheet,在三星公司網(wǎng)站可以免費下載。

          按此在新窗口瀏覽圖片
          圖4 列校驗和生成規(guī)則

            數(shù)學(xué)表達式為:

          按此在新窗口瀏覽圖片

            當(dāng)向NAND Flash的頁中寫入數(shù)據(jù)時,每256字節(jié)生成一個ECC校驗和,稱之為原ECC校驗和,保存到頁的OOB數(shù)據(jù)區(qū)中。當(dāng)從NAND Flash中讀取數(shù)據(jù)時,每256字節(jié)生成一個ECC校驗和,稱之為新ECC校驗和。校驗的時候,根據(jù)上述ECC生成原理不難推斷:將從OOB區(qū)中讀出的原ECC校驗和與新ECC校驗和按位異或,若結(jié)果為0,則表示無錯(或者出現(xiàn)了 ECC無法檢測的錯誤);若3字節(jié)異或結(jié)果中存在11位為1,表示存在一個位錯誤,且可糾正;若3個字節(jié)異或結(jié)果中只存在1位為1,表示 OOB區(qū)出錯;其他情況均表示出現(xiàn)了無法糾正的錯誤。

          4 UBOOT下功能驗證

            實現(xiàn)UBOOT對NAND Flash的支持主要是在命令行下實現(xiàn)對NAND Flash的操作。對NAND Flash實現(xiàn)的命令為:nand info、nand device、nand read、nand write、nand erease、nand bad。用到的主要數(shù)據(jù)結(jié)構(gòu)有:struct nand_flash_dev和struct nand_chip,前者包括主要的芯片型號、存儲容量、設(shè)備ID、I/O總線寬度等信息,后者是對NAND Flash進行具體操作時用到的信息。由于將驅(qū)動移植到UBoot的方法不是本文重點,故不作詳細介紹。

            驗證方式:通過TFTP將數(shù)據(jù)下載到SDRAM中,利用nand read、nand write、nand erease三個命令對NAND Flash進行



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁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); })();