freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

nandflash(編輯修改稿)

2025-08-20 13:56 本頁面
 

【文章內(nèi)容簡介】 0。 //等待nandflash不忙define NF_CLEAR_RB() {rNFSTAT |= (12)。 } //清除RnB信號define NF_DETECT_RB() {while(!(rNFSTATamp。(12)))。} //等待RnB信號變高,即不忙 下面就詳細(xì)介紹K9F2G08U0A的基本操作,包括復(fù)位,讀ID,頁讀、寫數(shù)據(jù),隨意讀、寫數(shù)據(jù),塊擦除等。 復(fù)位操作最簡單,只需寫入復(fù)位命令即可:static void rNF_Reset(){ NF_CE_L()。 //打開nandflash片選 NF_CLEAR_RB()。 //清除RnB信號 NF_CMD(CMD_RESET)。 //寫入復(fù)位命令 NF_DETECT_RB()。 //等待RnB信號變高,即不忙 NF_CE_H()。 //關(guān)閉nandflash片選} 讀取K9F2G08U0A芯片ID操作首先需要寫入讀ID命令,然后再寫入0x00地址,就可以讀取到一共五個周期的芯片ID,第一個周期為廠商ID,第二個周期為設(shè)備ID,第三個周期至第五個周期包括了一些具體的該芯片信息,這里就不多介紹:static char rNF_ReadID(){ char pMID。 char pDID。 char cyc3, cyc4, cyc5。 NF_nFCE_L()。 //打開nandflash片選 NF_CLEAR_RB()。 //清RnB信號 NF_CMD(CMD_READID)。 //讀ID命令 NF_ADDR(0x0)。 //寫0x00地址 //讀五個周期的ID pMID = NF_RDDATA8()。 //廠商ID:0xEC pDID = NF_RDDATA8()。 //設(shè)備ID:0xDA cyc3 = NF_RDDATA8()。 //0x10 cyc4 = NF_RDDATA8()。 //0x95 cyc5 = NF_RDDATA8()。 //0x44 NF_nFCE_H()。 //關(guān)閉nandflash片選 return (pDID)。} 下面介紹讀操作,讀操作是以頁為單位進(jìn)行的。如果在讀取數(shù)據(jù)的過程中不進(jìn)行ECC校驗(yàn)判斷,則讀操作比較簡單,在寫入讀命令的兩個周期之間寫入要讀取的頁地址,然后讀取數(shù)據(jù)即可。如果為了更準(zhǔn)確地讀取數(shù)據(jù),則在讀取完數(shù)據(jù)之后還要進(jìn)行ECC校驗(yàn)判斷,以確定所讀取的數(shù)據(jù)是否正確。在上文中我們已經(jīng)介紹過,nandflash的每一頁有兩區(qū):main區(qū)和spare區(qū),main區(qū)用于存儲正常的數(shù)據(jù),spare區(qū)用于存儲其他附加信息,其中就包括ECC校驗(yàn)碼。當(dāng)我們在寫入數(shù)據(jù)的時候,我們就計算這一頁數(shù)據(jù)的ECC校驗(yàn)碼,然后把校驗(yàn)碼存儲到spare區(qū)的特定位置中,在下次讀取這一頁數(shù)據(jù)的時候,同樣我們也計算ECC校驗(yàn)碼,然后與spare區(qū)中的ECC校驗(yàn)碼比較,如果一致則說明讀取的數(shù)據(jù)正確,如果不一致則不正確。ECC的算法較為復(fù)雜,好在s3c2440能夠硬件產(chǎn)生ECC校驗(yàn)碼,這樣就省去了不少的麻煩事。s3c2440即可以產(chǎn)生main區(qū)的ECC校驗(yàn)碼,也可以產(chǎn)生spare區(qū)的ECC校驗(yàn)碼。因?yàn)镵9F2G08U0A是8位IO口,因此s3c2440共產(chǎn)生4個字節(jié)的main區(qū)ECC碼和2個字節(jié)的spare區(qū)ECC碼。在這里我們規(guī)定,在每一頁的spare區(qū)的第0個地址到第3個地址存儲main區(qū)ECC,第4個地址和第5個地址存儲spare區(qū)ECC。產(chǎn)生ECC校驗(yàn)碼的過程為:在讀取或?qū)懭肽膫€區(qū)的數(shù)據(jù)之前,先解鎖該區(qū)的ECC,以便產(chǎn)生該區(qū)的ECC。在讀取或?qū)懭胪陻?shù)據(jù)之后,再鎖定該區(qū)的ECC,這樣系統(tǒng)就會把產(chǎn)生的ECC碼保存到相應(yīng)的寄存器中。main區(qū)的ECC保存到NFMECC0/1中(因?yàn)镵9F2G08U0A是8位IO口,因此這里只用到了NFMECC0),spare區(qū)的ECC保存到NFSECC中。對于讀操作來說,我們還要繼續(xù)讀取spare區(qū)的相應(yīng)地址內(nèi)容,已得到上次寫操作時所存儲的main區(qū)和spare區(qū)的ECC,并把這些數(shù)據(jù)分別放入NFMECCD0/1和NFSECCD的相應(yīng)位置中。最后我們就可以通過讀取NFESTAT0/1(因?yàn)镵9F2G08U0A是8位IO口,因此這里只用到了NFESTAT0)中的低4位來判斷讀取的數(shù)據(jù)是否正確,其中第0位和第1位為main區(qū)指示錯誤,第2位和第3位為spare區(qū)指示錯誤。下面就給出一段具體的頁讀操作程序:U8 rNF_ReadPage(U32 page_number){ U32 i, mecc0, secc。NF_RSTECC()。 //復(fù)位ECC NF_MECC_UnLock()。 //解鎖main區(qū)ECC NF_nFCE_L()。1
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1