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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? nand.c

?? 三星公司S3c2443的測(cè)試程序源碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
	#if ADS10==TRUE
		if(offset==-1) *srcPt++ = rand()%0xff;
	#else
		if(offset==-1) *srcPt++ = i%0xff;
	#endif
		else *srcPt++ = i+offset;
	}

    

	srcPt=(unsigned char *)0x31100000;
	dstPt=(unsigned char *)0x31200000; 
	
		// Block erase
//	printf("%d block erase.\n", block);
	if(NF8_EraseBlock(block)==FAIL)	return;
	
	for(page=0; page<32; page++) 
	{

	srcPt=(unsigned char *)0x31100000;
	dstPt=(unsigned char *)0x31200000; 
		
//	printf("Write data[%d block, %d page].\n", block, page);
	if(NF8_WritePage(block, page, srcPt)==FAIL) return;

//	printf("Read data.\n");
   	if(NF8_ReadPage(block, page, dstPt)==FAIL) 	return;
	
 
//	printf("Checking data.\n");

	for(error=0, i=0; i<512; i++) {
		if(*srcPt++!=*dstPt++) {
			printf("Error:%d[W:%x,R:%x]\n", i, *srcPt, *dstPt);
			error++;
		}
	}
	
	if(error!=0) 
	{
		printf("Fail to R/W test(%d).\n", error);
		printf("Write data[%d block, %d page, 0x%x count].\n", block, page, count);
	    while(1);
	}
	else   ;
	//	printf(" %d pageR/W test OK.\n",page);
	}
  count++;	    
 }
}

void Test_Adv_NF8_Rw(void)
{
	U32 block=0, page=0;
	U32 i, status=FAIL, error, offset;
	unsigned char *srcPt, *dstPt;

	
	srcPt=(unsigned char *)0x31100000;
	dstPt=(unsigned char *)0x31200000;

	printf("K9F2G08 R/W test.\n");

	printf("Block number: ");
	block = GetIntNum();
	printf("Page nember: ");
	page = GetIntNum();
	printf("offset data(-1:random): ");
	offset = GetIntNum();

#if ADS10==TRUE
	srand(0);
#endif
       
	
	// Init R/W data.
	for(i=0; i<2048; i++) *dstPt++=0x0;

	for(i=0; i<2048; i++) {
	#if ADS10==TRUE
		if(offset==-1) *srcPt++ = rand()%0xff;
	#else
		if(offset==-1) *srcPt++ = i%0xff;
	#endif
		else *srcPt++ = i+offset;
	}

    

	srcPt=(unsigned char *)0x31100000;
	dstPt=(unsigned char *)0x31200000; 
	
		// Block erase
	printf("%d block erase.\n", block);
	if(Adv_NF8_EraseBlock(block)==FAIL)	return;
	
	printf("Write data[%d block, %d page].\n", block, page);
	if(Adv_NF8_WritePage(block, page, srcPt)==FAIL) return;

	printf("Read data.\n");
   	if(Adv_NF8_ReadPage(block, page, dstPt)==FAIL) 	return;
	
 
	printf("Checking data.\n");

	for(error=0, i=0; i<2048; i++) {
		if(*srcPt++!=*dstPt++) {
			printf("Error:%d[W:%x,R:%x]\n", i, *srcPt, *dstPt);
			error++;
		}
	}
	
	if(error!=0) 
		printf("Fail to R/W test(%d).\n", error);
	else
		printf(" %d pageR/W test OK.\n",page);

 }
 

void NF8_Program(void)
{
//    unsigned long interrupt_reservoir;
    int i;
    int programError=0;
	U8 *srcPt,*saveSrcPt;
	U32 blockIndex;

  	printf("\n[x-D Card NAND Flash writing program]\n");
    printf("The program buffer: 0x30100000~0x31ffffff\n");

//	NF8_Init();

    rINTMSK = BIT_ALLMSK; 	
    srcAddress=0x30100000; 

    InputTargetBlock();
	
    srcPt=(U8 *)srcAddress;
    blockIndex=targetBlock;
    
    

     while(1) {
        saveSrcPt=srcPt;	

		#if BAD_CHECK
		if(NF8_IsBadBlock(blockIndex)==FAIL) {
		    blockIndex++;   // for next block
		    continue;
		}
		#endif

		if(NF8_EraseBlock(blockIndex)==FAIL) {
		    blockIndex++;   // for next block
		    continue;
		}

		// After 1-Block erase, Write 1-Block(32 pages).
		for(i=0;i<32;i++) {
		
		    if(NF8_WritePage(blockIndex,i,srcPt)==FAIL) {// block num, page num, buffer
		        programError=1;
		        break;
		    }

		#if ECC_CHECK
		    if(NF8_ReadPage(blockIndex,i,srcPt)==FAIL) {
				printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
		    }
		#endif
			
		srcPt+=512;	// Increase buffer addr one pase size
		if(i==0)  printf(".");
			//printf("\b\b\b\b\b\b\b\b%04d,%02d]", blockIndex, i);
		if((U32)srcPt>=(srcAddress+targetSize)) // Check end of buffer
		break;	// Exit for loop
		}
		
		if(programError==1) {
		    blockIndex++;
		    srcPt=saveSrcPt;
		    programError=0;
		    continue;
		}

		if((U32)srcPt>=(srcAddress+targetSize)) break;	// Exit while loop

		blockIndex++;
    }

}


void Adv_NF8_Program(void)
{
//    unsigned long interrupt_reservoir;
    int i;
    int programError=0;
	U8 *srcPt,*saveSrcPt;
	U32 blockIndex;

  	printf("\n[K9F2G08 NAND Flash writing program]\n");
    printf("The program buffer: 0x30100000~0x31ffffff\n");

//	NF8_Init();

    rINTMSK = BIT_ALLMSK; 	
    srcAddress=0x30100000; 

    InputTargetBlock_Adv();
	
    srcPt=(U8 *)srcAddress;
    blockIndex=targetBlock;

     while(1) {
        saveSrcPt=srcPt;	

		#if BAD_CHECK
		if(Adv_NF8_IsBadBlock(blockIndex)==FAIL) {
		    blockIndex++;   // for next block
		    continue;
		}
		#endif

		if(Adv_NF8_EraseBlock(blockIndex)==FAIL) {
		    blockIndex++;   // for next block
		    continue;
		}

		// After 1-Block erase, Write 1-Block(32 pages).
		for(i=0;i<64;i++) {
		    if(Adv_NF8_WritePage(blockIndex,i,srcPt)==FAIL) {// block num, page num, buffer
		        programError=1;
		        break;
		    }

		#if ECC_CHECK
		    if(Adv_NF8_ReadPage(blockIndex,i,srcPt)==FAIL) {
				printf("ECC Error(block=%d,page=%d!!!\n",blockIndex,i);
		    }
		#endif
			
		srcPt+=2048;	// Increase buffer addr one pase size
		if(i==0)  printf(".");
			//printf("\b\b\b\b\b\b\b\b%04d,%02d]", blockIndex, i);
		if((U32)srcPt>=(srcAddress+targetSize)) // Check end of buffer
		break;	// Exit for loop
		}
		
		if(programError==1) {
		    blockIndex++;
		    srcPt=saveSrcPt;
		    programError=0;
		    continue;
		}

		if((U32)srcPt>=(srcAddress+targetSize)) break;	// Exit while loop

		blockIndex++;
    }

}



void InputTargetBlock(void)
{
	U32 no_block, no_page, no_byte;
	
	printf("\nAvailable target block number: 0~4095\n");
	printf("Input target block number:");
    targetBlock=GetIntNum();	// Block number(0~4095)
    if(targetSize==0)
    {
    	#if 0
    	printf("Input target size(0x4000*n):");
    	targetSize=GetIntNum();	// Total byte size
	#else
   	printf("Input program file size(bytes): ");
    	targetSize=GetIntNum();	// Total byte size
    	#endif
    }
	
	no_block = (U32)((targetSize/512)/32);
	no_page = (U32)((targetSize/512)%32);
	no_byte = (U32)(targetSize%512);
	printf("File:%d[%d-block,%d-page,%d-bytes].\n", targetSize, no_block, no_page, no_byte);
}


void InputTargetBlock_Adv(void)
{
	U32 no_block, no_page, no_byte;
	
	printf("\nAvailable target block number: 0~2047\n");
	printf("Input target block number:");
    targetBlock=GetIntNum();	// Block number(0~4095)
    if(targetSize==0)
    {
    	#if 0
    	printf("Input target size(0x4000*n):");
    	targetSize=GetIntNum();	// Total byte size
	#else
   	printf("Input program file size(bytes): ");
    	targetSize=GetIntNum();	// Total byte size
    	#endif
    }
	
	no_block = (U32)((targetSize/2048)/64);
	no_page = (U32)((targetSize/2048)%64);
	no_byte = (U32)(targetSize%2048);
	printf("File:%d[%d-block,%d-page,%d-bytes].\n", targetSize, no_block, no_page, no_byte);
}


void NF8_PrintBadBlockNum(void)
{
    int i;
    U16 id;

    printf("\n[x-D Card NAND Flash bad block check]\n");
    
    id=NF8_CheckId();
    printf("ID=%x(0x9876)\n",id);
    if(id!=0x9876)
    return;
    for(i=0;i<4096;i++)  	NF8_IsBadBlock(i);   // Print bad block
}

void Adv_NF8_PrintBadBlockNum(void)
{
    int i;
    U16 id;

    printf("\n[ K9F2G08 NAND Flash bad block check]\n");
    
    id=NF8_CheckId();
    printf("ID=%x(0xecda)\n",id);
    if(id!=0xecda)
    return;
    for(i=0;i<2048;i++)  	Adv_NF8_IsBadBlock(i);   // Print bad block
}


void Test_NF8_Lock(void)
{
    U32 num;
    U32 S_block, E_block;
	printf("(x-D Card) NAND Lock Test !!!\n");
	printf("Select Lock type, Softlock(1)/Lock-tight(2) : ");

	num=GetIntNum();;
			
	printf("\nEnter programmable start block address ");
	S_block = GetIntNum();
	printf("Enter programmable end block address ");
    E_block = GetIntNum();

	rNFSBLK=(S_block<<5);
	rNFEBLK=(E_block<<5);
	
	if(num==1){
		rNFCONT|=(1<<16);
              printf("Software Locked\n ");
	}
	if(num==2){
		rNFCONT|=(1<<17);
              printf("Lock-tight: To clear Lock-tight, reset S3C2440!!!\n ");
	}
      printf("%d block ~ %d block are Programmable\n ", S_block, (E_block-1));
}


void Test_Adv_NF8_Lock(void)
{
    U32 num;
    U32 S_block, E_block;
	printf("(K9F2G08) NAND Lock Test !!!\n");
	printf("Select Lock type, Softlock(1)/Lock-tight(2) : ");

	num=GetIntNum();;
			
	printf("\nEnter programmable start block address ");
	S_block = GetIntNum();
	printf("Enter programmable end block address ");
    E_block = GetIntNum();

	rNFSBLK=(S_block<<6);
	rNFEBLK=(E_block<<6);
	
	if(num==1){
		rNFCONT|=(1<<16);
              printf("Software Locked\n ");
	}
	if(num==2){
		rNFCONT|=(1<<17);
              printf("Lock-tight: To clear Lock-tight, reset S3C2440!!!\n ");
	}
      printf("%d block ~ %d block are Programmable\n ", S_block, (E_block-1));
}


void Test_NF8_SoftUnLock(void)
{
    U32 S_block, E_block;
	printf("xD-Card NAND SoftUnLock Test !!!\n");
	
	rNFSBLK=0x0;
	rNFEBLK=0x0;

	rNFCONT&=~(1<<16);
	if(rNFCONT&(1<<17)){
		rNFCONT&=~(1<<17);
		printf("Lock-tight\n ");
		printf("You can't unlock Protected blocks !!!\n ");
		printf("%d block ~ %d block are Programmable\n ", (rNFSBLK>>5), ((rNFEBLK>>5)-1));
	}
       else printf("All blocks are Programmable\n ");
}



void Test_Adv_NF8_SoftUnLock(void)
{
    U32 S_block, E_block;
	printf("K9F2G08 NAND SoftUnLock Test !!!\n");
	
	rNFSBLK=0x0;
	rNFEBLK=0x0;

	rNFCONT&=~(1<<16);
	if(rNFCONT&(1<<17)){
		rNFCONT&=~(1<<17);
		printf("Lock-tight\n ");
		printf("You can't unlock Protected blocks !!!\n ");
		printf("%d block ~ %d block are Programmable\n ", (rNFSBLK>>6), ((rNFEBLK>>6)-1));
	}
       else printf("All blocks are Programmable\n ");
}


void PrintSubMessage(void)
{
	int i;
	
	i=0;	
	printf("\n\n");
	while(1)
	{   //display menu
	    printf("%2d:%s",i,n8_func[i][1]);
	    i++;
	    if((int)(n8_func[i][0])==0)
	    {
		 printf("\n");
		 break;
	    }
	    if((i%4)==0) printf("\n");
	}
}


void Adv_PrintSubMessage(void)
{
	int i;
	
	i=0;	
	printf("\n\n");
	while(1)
	{   //display menu
	    printf("%2d:%s",i,Adv_n8_func[i][1]);
	    i++;
	    if((int)(Adv_n8_func[i][0])==0)
	    {
		 printf("\n");
		 break;
	    }
	    if((i%4)==0) printf("\n");
	}
}

static int NF8_EraseBlock(U32 block)
{
	U32 blockPage=(block<<5);
    int i;

    NFConDone=0;
    rNFCONT|=(1<<9);
    rNFCONT|=(1<<10);
    pISR_NFCON= (unsigned)NFCon_Int;
    rSRCPND=BIT_NFCON;
    rINTMSK=~(BIT_NFCON);
	
#if BAD_CHECK
    if(NF8_IsBadBlock(block))
	return FAIL;
#endif

	NF_nFCE_L();
    
	NF_CMD(0x60);   // Erase one block 1st command, Block Addr:A9-A25
	// Address 3-cycle
	NF_ADDR(blockPage&0xff);	    // Page number=0
	NF_ADDR((blockPage>>8)&0xff);   
	NF_ADDR((blockPage>>16)&0xff);


	NF_CLEAR_RB();
	NF_CMD(0xd0);	// Erase one blcok 2nd command
//	NF_DETECT_RB();
    while(NFConDone==0);
	rNFCONT&=~(1<<9);
	rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt
	if(rNFSTAT&0x20) return FAIL;

	NF_CMD(0x70);   // Read status command

      if (NF_RDDATA()&0x1) // Erase error
      {	
    	NF_nFCE_H();
		rGPGDAT|=(1<<1);
		printf("[ERASE_ERROR:block#=%d]\n",block);
	//	NF8_MarkBadBlock(block);
		return FAIL;
       }
       else 
       {
    	NF_nFCE_H();
       return OK;
       }
}

static int Adv_NF8_EraseBlock(U32 block)
{
	U32 blockPage=(block<<6);
    int i;

    NFConDone=0;
    rNFCONT|=(1<<9);
    rNFCONT|=(1<<10);
    pISR_NFCON= (unsigned)NFCon_Int;
    rSRCPND=BIT_NFCON;
    rINTMSK=~(BIT_NFCON);
	
#if BAD_CHECK
    if(NF8_IsBadBlock(block))
	return FAIL;
#endif

	NF_nFCE_L();
    
	NF_CMD(0x60);   // Erase one block 1st command, Block Addr:A9-A25
	// Address 3-cycle
	NF_ADDR(blockPage&0xff);	    // Page number=0
	NF_ADDR((blockPage>>8)&0xff);   
	NF_ADDR((blockPage>>16)&0xff);


	NF_CLEAR_RB();
	NF_CMD(0xd0);	// Erase one blcok 2nd command
//	NF_DETECT_RB();
    while(NFConDone==0);
	rNFCONT&=~(1<<9);
	rNFCONT&=~(1<<10); // Disable Illegal Access Interrupt

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色一区二区三区| 国产一区二区三区在线观看精品 | 国产一区二区三区黄视频 | 国产一区不卡视频| 麻豆精品在线播放| 国产综合色视频| 国产资源在线一区| 国产精品一区二区黑丝| 岛国精品在线观看| 99久久精品一区二区| 色综合欧美在线视频区| 欧美综合天天夜夜久久| 欧美精品乱码久久久久久按摩| 精品毛片乱码1区2区3区| 精品成人一区二区| 国产亚洲一二三区| 中文字幕一区二区三区精华液| 亚洲欧美二区三区| 亚洲成a人v欧美综合天堂下载| 日韩高清欧美激情| 国产一区美女在线| 99精品国产99久久久久久白柏| 91首页免费视频| 538在线一区二区精品国产| 欧美成人福利视频| 国产日韩欧美精品综合| 亚洲精品写真福利| 日韩精品成人一区二区在线| 国产精品综合视频| 91久久奴性调教| 日韩视频一区二区三区在线播放 | 日本午夜一区二区| 国产原创一区二区| 色屁屁一区二区| 日韩一级大片在线观看| 国产欧美视频一区二区| 亚洲精品中文字幕在线观看| 日本亚洲三级在线| 不卡av电影在线播放| 69堂成人精品免费视频| 国产欧美精品日韩区二区麻豆天美| 亚洲欧美日韩国产另类专区| 日韩国产精品久久久久久亚洲| 国产电影一区二区三区| 欧美午夜精品久久久久久孕妇| 欧美r级在线观看| 亚洲精品久久久蜜桃| 精品系列免费在线观看| 91麻豆国产福利在线观看| 日韩美女天天操| 一区二区三区在线视频观看| 韩国成人在线视频| 欧美日韩精品一区二区| 国产精品网站一区| 美女视频黄a大片欧美| 日本韩国一区二区三区视频| 精品电影一区二区三区| 亚洲18女电影在线观看| a在线欧美一区| 久久亚洲私人国产精品va媚药| 一区二区三区丝袜| 成人中文字幕合集| 欧美成人a视频| 亚洲国产三级在线| 成人激情动漫在线观看| 欧美一级高清片| 亚洲一区二区三区中文字幕 | 在线综合亚洲欧美在线视频| 中文字幕免费观看一区| 麻豆精品一区二区综合av| 欧美一a一片一级一片| 国产精品久久久久久久久动漫| 91视频一区二区三区| 欧美sm极限捆绑bd| 天堂av在线一区| 欧美图区在线视频| 亚洲精品成人悠悠色影视| 粉嫩久久99精品久久久久久夜| 日韩欧美的一区| 天天亚洲美女在线视频| 欧美中文字幕一区| 亚洲精品老司机| 99久久99久久免费精品蜜臀| www一区二区| 麻豆91精品视频| 7777精品伊人久久久大香线蕉经典版下载 | 在线观看视频欧美| 国产精品国产三级国产aⅴ无密码| 国产专区综合网| 欧美精品一区二区三区蜜桃 | 9久草视频在线视频精品| 亚洲最快最全在线视频| 欧美亚洲高清一区二区三区不卡| 亚洲精品国产成人久久av盗摄| 国产 欧美在线| 久久精品视频免费| 国内精品视频666| 精品免费一区二区三区| 精品一区二区三区在线播放视频| 91精品国产欧美一区二区| 亚洲成人7777| 9191成人精品久久| 日本不卡不码高清免费观看| 91精品国产高清一区二区三区蜜臀| 午夜一区二区三区视频| 91精品国产综合久久久久| 色88888久久久久久影院野外| 亚洲高清在线精品| 欧美激情在线观看视频免费| 国产99久久久国产精品潘金网站| 国产精品久线观看视频| 欧美老人xxxx18| 国产a久久麻豆| 日本最新不卡在线| 中文字幕日韩欧美一区二区三区| 在线观看日韩精品| 国产麻豆成人传媒免费观看| 激情欧美日韩一区二区| 国产精品久久久久久久久免费丝袜 | 国产精品一区在线| 久久久久九九视频| aaa欧美日韩| 亚洲午夜国产一区99re久久| 欧美精品久久一区| 久久99精品久久久| 国产精品嫩草99a| 欧美性生活大片视频| 丝袜脚交一区二区| 久久久久99精品一区| av在线播放成人| 午夜激情一区二区三区| 2023国产精品自拍| 色综合久久综合网97色综合 | 成人综合婷婷国产精品久久免费| 中文字幕一区二区三区视频| 99久久精品国产一区二区三区| 国产成人午夜精品5599| 国产伦精品一区二区三区免费迷| 黄一区二区三区| 亚洲精品免费看| 亚洲午夜一区二区| 国产精品乱码妇女bbbb| 亚洲欧洲精品成人久久奇米网| 亚洲电影在线免费观看| 麻豆成人综合网| 国产麻豆精品在线观看| 一个色综合av| 国内精品免费**视频| 欧美色综合网站| 美女网站一区二区| 中文字幕一区二区在线播放| 欧美美女一区二区在线观看| 黄色精品一二区| 亚洲一区二区三区激情| 久久精品亚洲乱码伦伦中文 | 91免费版在线| 另类小说欧美激情| 亚洲综合在线视频| 久久久三级国产网站| 欧美日韩一区二区三区免费看 | 在线观看av一区二区| 久久精品国产99久久6| 亚洲欧洲综合另类| 久久免费电影网| 欧美日韩在线直播| 99热这里都是精品| 精品亚洲aⅴ乱码一区二区三区| 亚洲精品国产第一综合99久久| 精品sm捆绑视频| 欧美系列在线观看| 91在线精品一区二区| 国产一区在线精品| 肉色丝袜一区二区| 亚洲最色的网站| 国产精品久久午夜| 久久亚洲欧美国产精品乐播| 欧美日韩视频在线第一区 | 国产精品久久久久久久久免费相片| 日韩欧美一区二区免费| 欧美色综合久久| 91污在线观看| 波多野结衣在线一区| 国产在线视视频有精品| 青青草精品视频| 亚洲第一二三四区| 亚洲一区在线观看网站| 亚洲精品第1页| 亚洲欧洲成人精品av97| 国产日韩欧美麻豆| 久久久99免费| 精品999久久久| 日韩精品最新网址| 51精品视频一区二区三区| 欧美日韩在线不卡| 欧美丝袜自拍制服另类| 欧美亚洲高清一区| 欧美亚洲禁片免费| 欧美日韩亚洲高清一区二区| 欧美性感一区二区三区| 精品视频1区2区3区|