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

正文內(nèi)容

nandflash(編輯修改稿)

2025-08-20 13:56 本頁(yè)面
 

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