亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nandflash.c

?? ARM例碼:GEC2410的一些例子,包含RTC
?? C
字號:
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "nandflash.h"

/**************************************
 ***  初始化 K9F1208U0M nand flash  ***
 **************************************/
void InitNandCfg(void)
{
	//(1<<15)-->enable nand flash control
	//(1<<12)-->initilize ecc decoder/encoder
	//(1<<11)-->nand flash nFCE=H(inactive),chip disable
	//(7<<8) -->Duration=HCLK*(TACLS+1)
	//(7<<4) -->Duration=HCLK*(TWRPH0+1)
	//(7<<0) -->Duration=HCLK*(TWRPH1+1)
	rNFCONF = (1<<15)|(1<<12)|(1<<11)|(7<<8)|(7<<4)|(7<<0);	
}


/**************************************
 ****  K9F1208U0M nand flash 的ID  ****
 **************************************/
U32 ReadChipId(void)
{
	U32 id;
	
	NFChipEn();			//bit11=0 NAND flash nFCE = L (active)
	WrNFCmd(RdIDCMD);	//rNFCMD = 0x90,Read ID Command
	WrNFAddr(0);		//rNFADDR = 0x00,
	
	//whether nand flash is busy?
	//rNFSTAT&1 = 1 ,busy
	//rNFSTAT&1 = 0 ,no busy
	NF_WAITRB();	
	
	id  = RdNFDat()<<8;	// Maker code(K9S1208V:0xec)
	id |= RdNFDat();	// Devide code(K9S1208V:0x76)		
	
	NFChipDs();	 		//bit11=1 NAND flash nFCE = H (inactive)	
	
	return id;
}


/****************************************
 ****  K9F1208U0M nand flash 的狀態  ****
 ****************************************/
static U16 ReadStatus(void)
{
	U16 stat;
	
	NFChipEn();	
	WrNFCmd(NFSTATUS);//NFSTATUS = 0x70		
	stat = RdNFDat();	
	NFChipDs();
	
	return stat;
}


/**********************************************
 ****  K9F1208U0M nand flash 的塊擦除操作  ****
 **********************************************/
U32 EraseBlock(U32 addr)
{
	U8 status;
	U32 i;
			
	NFChipEn();	
	WrNFCmd(ERASECMD0);	//ERASECMD0 = 0x60,Erase one block 1st command	
	
	WrNFAddr(NFBlcokAddr>>9&0xff);
	WrNFAddr((NFBlcokAddr>>17)&0xff);
	WrNFAddr((NFBlcokAddr>>25)&0xff);    
			
	WrNFCmd(ERASECMD1);	//ERASECMD1 = 0xd0,Erase one blcok 2nd command	
	
	for(i=0;i<10;i++); //wait tWB(100ns)
	NF_WAITRB();    // Wait tBERS max 3ms.
	status = ReadStatus(); // Read status command
	if (status&0x1) // Erase error
    {	
    	NFChipDs();
	    MarkBadBlk(addr);
	    return 0;
    }
    else 
    {
    	NFChipDs();;
        return 1;
    }
	NFChipDs();
}


/********************************************
 ****  K9F1208U0M nand flash 的頁數據讀  ****
 ********************************************/
 U32 ReadPage(U32 addr, U8 *buf)//addr = page address
{
	U16 i;
	U8 tmp[3],se[16];
	InitEcc();
	NFChipEn();
	
	WrNFCmd(READCMD0);//READCMD0 = 0//read the first half page
	WrNFAddr(addr&0xff);
	WrNFAddr((addr>>9)&0xff);
	WrNFAddr((addr>>17)&0xff);
	WrNFAddr((addr>>25)&0xff);
	
	for(i=0;i<10;i++); //wait tWB(100ns)	
	NF_WAITRB();
	
	for(i=0; i<256; i++)
		buf[i] = RdNFDat();
	
	tmp[0] = rNFECC0;
    tmp[1] = rNFECC1;
    tmp[2] = rNFECC2;
	
	for(i=0;i<16;i++)
    {
    	se[i]=RdNFDat();	// Read spare array
    }
	NFChipDs();
	
	if(tmp[0]==se[0] && tmp[1]==se[1] && tmp[2]==se[2])
    {
	    Uart_Printf("\n[ECC OK:%x,%x,%x]\n",se[0],se[1],se[2]);
    	return 1;
    }
    else
    {
	    Uart_Printf("\n[ECC ERROR(RD):read:%x,%x,%x, reg:%x,%x,%x]\n",
	                se[0],se[1],se[2],tmp[0],tmp[1],tmp[2]);
    	return 0;
    } 
}


/********************************************
 ****  K9F1208U0M nand flash 的頁數據讀  ****
 ********************************************/
U32 WritePage(U32 addr, U8 *buf)
{
	U16 i;
	U8 status;
	U32 tmp[3];
	
	InitEcc();
	
	NFChipEn();
	WrNFCmd(0x00);////write the first half page
	WrNFCmd(PROGCMD0); //PROGCMD0 = 0x80
	WrNFAddr(addr&0xff);
	WrNFAddr((addr>>9)&0xff);
	WrNFAddr((addr>>17)&0xff);
	WrNFAddr((addr>>25)&0xff);

	for(i=0; i<256; i++)
		WrNFDat(buf[i]);//Write one page to nand flash from buffer
		
	tmp[0] = rNFECC0;
    tmp[1] = rNFECC1;
    tmp[2] = rNFECC2;
    	
	WrNFDat(tmp[0]);
	WrNFDat(tmp[1]);
	WrNFDat(tmp[2]);
    	
	WrNFCmd(PROGCMD1);//PROGCMD1 = 0x10
	
	for(i=0;i<10;i++);  //tWB = 100ns. 
    NF_WAITRB();    //wait tPROG 200~500us;
	status = ReadStatus();
	for(i=0;i<3;i++);  //twhr=60ns
	
	if (status&0x1) // Page write error
      {	
    	NFChipDs();
	    Uart_Printf("[PROGRAM_ERROR:block#=%d]\n",addr);
	    MarkBadBlk(addr);
	    return 0;
      }
    else 
      {
    	NFChipDs();
	    return 1;
      }
}


/*********************************************
 ****  屏蔽 K9F1208U0M nand flash 的壞塊  ****
 *********************************************/
U32 MarkBadBlk(U32 addr)
{
	int i;
	U16 status;
	addr = addr<<5;
	NFChipEn();
	
	WrNFCmd(READCMD2);	//READCMD2=0x50
	WrNFCmd(PROGCMD0);  //PROGCMD0=0x80
	
	WrNFAddr(4);		//mark offset 4,5,6,7
	WrNFAddr(addr);
	WrNFAddr(addr>>8);
	WrNFAddr(addr>>16);
	
	WrNFDat(0);			//mark with 0
	WrNFDat(0);
	WrNFDat(0);			//mark with 0
	WrNFDat(0);
	
	WrNFCmd(PROGCMD1);  //PROGCMD1=0x10
	
	for(i=0;i<10;i++);  //tWB = 100ns.
	NF_WAITRB();		//needn't check return status
	WrNFCmd(READCMD0);	//READCMD0=0
	
	status = ReadStatus();
	for(i=0;i<3;i++);  //twhr=60ns	
	 if (status&0x1) // Spare arrray write error
    {	
    	NFChipDs();
    	Uart_Printf("[Program error is occurred but ignored]\n");
    }
    else 
    {
    	NFChipDs();
    }

    Uart_Printf("[block #%d is marked as a bad block]\n",addr);
    return 1;
	
	NFChipDs();
}


/*********************************************
 ****  檢查 K9F1208U0M nand flash 的壞塊  ****
 *********************************************/
static int CheckBadBlk(U32 addr)
{
	U8 data;
	int i;
	addr = addr<<5;
	
	NFChipEn();
	
	WrNFCmd(READCMD2);	//READCMD2 = 0x50
	WrNFAddr(5);		//mark offset 4,5,6,7
	WrNFAddr(addr);
	WrNFAddr(addr>>8);
	WrNFAddr(addr>>16);
	
	for(i=0;i<10;i++);	// wait tWB(100ns) //
    NF_WAITRB();	// Wait tR(max 12us)
	
	data = RdNFDat();
    NFChipDs();
    if(data!=0xff)
    {
     	Uart_Printf("[block %d has been marked as a bad block(%x)]\n",addr,data);
    	return 1;
    }
    else
    {
    	return 0;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女网站在线免费欧美精品| 日本一不卡视频| 久久新电视剧免费观看| 日韩一区二区影院| 91麻豆精品国产91久久久久久久久 | 日本道免费精品一区二区三区| 国产精品99久久久| 懂色av中文一区二区三区| 国产乱码字幕精品高清av| 国产美女视频一区| 成人午夜大片免费观看| 91视频91自| 精品视频在线免费看| 欧美日韩二区三区| 欧美xxxx老人做受| 日本一二三四高清不卡| 一区二区三区在线观看视频| 午夜精彩视频在线观看不卡| 久久精品999| 国产精品18久久久久久vr| 99麻豆久久久国产精品免费优播| 99精品久久99久久久久| 欧美日韩在线直播| 久久一区二区三区四区| 亚洲男同性恋视频| 美女一区二区久久| 91最新地址在线播放| 欧美一区二区在线免费播放| 久久精品视频一区二区| 亚洲精品中文字幕在线观看| 蜜臀精品一区二区三区在线观看| 国产91精品一区二区麻豆亚洲| 一本色道综合亚洲| 久久综合色鬼综合色| 一区二区三区精品久久久| 免费高清在线一区| 色婷婷久久综合| 国产色综合一区| 亚洲第一福利一区| 欧美另类一区二区三区| 久久久国产精品不卡| 亚洲一区电影777| 国产suv精品一区二区6| 欧美精品日韩综合在线| 亚洲三级电影全部在线观看高清| 美女视频网站久久| 欧美偷拍一区二区| 国产精品毛片久久久久久久| 美国十次综合导航| 欧美日韩美少妇| 亚洲欧洲日本在线| 成人午夜私人影院| 久久久久久97三级| 精品在线你懂的| 欧美日韩亚洲综合一区二区三区| 国产精品你懂的| 国产一区二区看久久| 欧美一三区三区四区免费在线看 | 中文字幕精品综合| 免费一级片91| 4438x成人网最大色成网站| 亚洲综合小说图片| 色av一区二区| 亚洲精品国产精华液| 色综合久久88色综合天天免费| 国产嫩草影院久久久久| 国产福利一区二区三区视频 | 99久久伊人精品| 欧美国产综合色视频| 国产精品一区二区不卡| 久久品道一品道久久精品| 精久久久久久久久久久| 精品999久久久| 久久精品国产一区二区三区免费看| 欧美美女网站色| 天堂久久一区二区三区| 欧美精品aⅴ在线视频| 日韩精品欧美精品| 日韩欧美国产电影| 国产真实乱对白精彩久久| 久久久综合激的五月天| 岛国一区二区三区| 中文字幕日韩一区| 欧美午夜精品理论片a级按摩| 香港成人在线视频| 日韩精品一区二区三区中文不卡| 久久99日本精品| 国产欧美精品国产国产专区| 丁香激情综合国产| 亚洲国产综合在线| 欧美电视剧在线看免费| 国产成人综合在线播放| 日韩理论电影院| 欧美日本不卡视频| 精品一区二区影视| 国产女同性恋一区二区| 91原创在线视频| 亚洲成人一二三| 日韩欧美一区二区久久婷婷| 国产一区二区三区在线观看免费视频| 国产日韩高清在线| 欧美视频一区二区| 国产专区综合网| 一区二区三区小说| 日韩欧美综合一区| 国产精品一区不卡| 亚洲大片在线观看| 国产午夜精品久久久久久免费视| 在线亚洲免费视频| 国产一区二区三区四区五区美女| 日韩理论电影院| 久久这里只有精品首页| 欧美在线免费观看亚洲| 韩国精品久久久| 亚洲成人资源网| 国产精品每日更新在线播放网址| 欧美日韩国产三级| 成人的网站免费观看| 日韩电影免费在线| 亚洲婷婷综合久久一本伊一区| 欧美一级欧美三级| 色婷婷综合久久| 成人精品视频一区二区三区| 日韩电影一二三区| 亚洲一区二区高清| 国产精品久久久久久福利一牛影视 | 日韩精品国产欧美| 亚洲激情在线播放| 中文字幕一区二区三区在线不卡| 91精品国产入口在线| 色综合久久中文综合久久97 | 亚洲日本一区二区| 国产午夜精品久久久久久久| 日韩一区二区三区在线视频| 欧美日韩亚洲综合| 色哟哟一区二区在线观看| www.日韩在线| 国产成人亚洲综合色影视| 免费成人在线观看视频| 午夜成人在线视频| 亚洲成人福利片| 亚洲电影你懂得| 午夜日韩在线观看| 亚洲高清免费观看 | 国产精品久久久久久户外露出| xnxx国产精品| 久久天天做天天爱综合色| 久久综合九色综合97_久久久| 精品成人一区二区| 久久青草欧美一区二区三区| 26uuu色噜噜精品一区二区| 日韩精品一区二区三区老鸭窝| 日韩西西人体444www| 日韩精品一区二| 国产亚洲欧美中文| 中文字幕一区二区三区四区不卡| 国产精品久久久久影视| 国产精品夫妻自拍| 亚洲欧美日韩久久| 亚洲一区二区三区中文字幕在线| 亚洲一区二区三区四区的| 性做久久久久久免费观看欧美| 日韩精品一级中文字幕精品视频免费观看| 亚洲午夜免费视频| 六月丁香综合在线视频| 极品少妇一区二区三区精品视频| 国产成人激情av| 色综合久久中文字幕综合网| 欧美日韩亚州综合| 日韩一区二区三区精品视频| 久久女同互慰一区二区三区| 国产精品日产欧美久久久久| 亚洲精品中文在线| 麻豆一区二区三区| 成人黄色网址在线观看| 在线观看国产一区二区| 日韩精品中午字幕| 中文字幕一区二区不卡| 亚洲18女电影在线观看| 韩日av一区二区| 91丨九色丨蝌蚪丨老版| 日韩一区二区精品葵司在线| 国产精品网站导航| 午夜精品久久久久久久久| 国产老肥熟一区二区三区| 91小视频免费观看| 日韩欧美一级精品久久| 中文字幕亚洲不卡| 美女任你摸久久| 56国语精品自产拍在线观看| 国产精品美女一区二区| 日韩和欧美的一区| 9i在线看片成人免费| 欧美不卡视频一区| 亚洲一区在线观看视频| 国产精品一区在线观看你懂的| 91久久精品一区二区三区| 欧美一级片免费看| 亚洲小说春色综合另类电影| 丁香六月综合激情|