⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_nor_intel_br28f128l18t85.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 2 页
字号:
WORD16 flash_intel_28f256l18top_erase_test_a9(void)
{
    WORD16 Result = 0;
    UWORD32 flash_size_in_bytes;    
  
        
    Result = flash_erase_test_a9_zhy(0x3fff);

    if (!Result)
    	UART_Printf(UART2,"\n\r Intel Strata Flash Linear test on all block succeed\n\r");
	else 
		UART_Printf(UART2,"\n\r NOR FLASH ERASE FAILED.\n\r");

    return(Result);    
}


//NOR FLASH MAIN ENTRY function

 void FLASH_TEST()
 { 
    int option;






 	while(option)
	{
	  	UART_Printf(UART2,"==================================================\n");
	  	UART_Printf(UART2,"=       NOR  Flash TEST             =\n");
	  	UART_Printf(UART2,"==================================================\n");      
	  
	               
   		UART_Printf(UART2," 0: Upper Menu\n\r");	    
		UART_Printf(UART2," 1: INTEL Flash\n\r");
		UART_Printf(UART2," 2: AMD FLASH.\n\r");
		UART_Printf(UART2," Your choice : \n\r");

	    option=UART_GetNum(UART2);


	    switch (option)
	      {
	     
		 case 0:
	     	break;

	     case 1 : 
		    
		   Intel_Flash();
			     
			break ;

	   
	     case 2: 
		 
		   //AMD_Flash();
		   AMD_FLASH_TEST();
		  
		  break ;

		default:
		break;
		  
		  }
	}    	
//   	UART_GetNum(UART2);     
  } 

void AMD_Flash()
 { 
    unsigned short manu, device;
   
    UWORD16 Result_Test = 0;
    int option,ID,data;
    

 //        *(unsigned long*)0xFFFECC1C = 0x00408239;     /* EMIFS CS3 Configuration Register : A/D Multiplexed, 8 RWS, 0 WWS, WELEN = 4, 1 BT WST, Asynchronous Read mode & Ref_Clk = TC_Clock */
  //       *(unsigned long*)0xFFFECC5C = 0x00000008; 



//    EMIFS_CS_CFG_3_REG = 0x0040408B;
// (*(int*)0xFFFECC1C) = 0x0040428B;     /* EMIFS CS3 Configuration Register : A/D Multiplexed, 8 RWS, 0 WWS, WELEN = 4, 1 BT WST, Asynchronous Read mode & Ref_Clk = TC_Clock */
// (*(int*)0xFFFECC5C) = 0x00000103;
//    *(unsigned int*)0xfffecc0c = 0x00000001;
    while(option)
	{
	  	UART_Printf(UART2,"==================================================\n");
	  	UART_Printf(UART2,"=   AMD    NOR  Flash TEST             =\n");
	  	UART_Printf(UART2,"==================================================\n");      
	  
	               
   		UART_Printf(UART2," 0: Upper Menu\n\r");	    
		UART_Printf(UART2," 1: Read ID\n\r");
		UART_Printf(UART2," 2: EARSE TEST.\n\r");
		UART_Printf(UART2," 3: Program A BLOCK.\n\r ");
		UART_Printf(UART2," 4: WRITE A PARTION.\n\r ");
		UART_Printf(UART2," Your choice : \n\r");

	    option=UART_GetNum(UART2);


	    switch (option)
	      {
	     
          case 0 :
          	break;
          	  
	      case 1 : 
		    
		    UART_Printf(UART2,"Read ID:\n\r");
			
		    flashdrv_amd_id_read(&manu,&device);
			/* Display Manufacture Id */
	    	UART_Printf(UART2,"0X%x\n\r",manu);

			/* Display Device Id */
	    	UART_Printf(UART2,"0X%x\n\r",device);

			     
			break ;

	   
	     case 2: 
		 UART_Printf(UART2,"Erase NOR FLASH D1 in mode 3 ...\n\r");
		 
		 flashdrv_amd_erase_end();
		  
		  break ;

	    case 3:

	   // Result_Test=Flash_WriteOneBlock( 0x0e000000 );
	//	if ( Result_Test==0 )
		write_test();
		UART_Printf( UART2, " WR OK.\n\r " );
	    break;

	    case 4:
	    flashdrv_amd_write((void *)0x0c000000,flashdata,sizeof(flashdata));
	    break;
	   
	    case 5:
	//flashdrv_amd_init();
	//flashdrv_amd_id_read(&manu,&device);
	//flashdrv_amd_id_read(&manu,&device);
	//write_test();
	//flashdrv_amd_erase_end();
	//flashdrv_amd_write((void *)0x0c000000,flashdata,sizeof(flashdata));


	//	flash_amd_s29pl127j_write();
	    break;


		default:
		break;
		  
		  }
	}    	
//   	UART_GetNum(UART2);     
  } 

void Intel_Flash()
 { 
    unsigned short manu, device;
   
    UWORD16 Result_Test = 0;
    int option,ID,data;
    
//    EMIFS_CS_CFG_3_REG = 0x0040408B;
    *(unsigned int*)0xfffecc1c = 0x7fc044fa;
	*(unsigned int*)0xfffecc5c = 0x00000018;
    *(unsigned int*)0xfffecc0c = 0x00000001;       

 //        *(unsigned long*)0xFFFECC1C = 0x00408239;     /* EMIFS CS3 Configuration Register : A/D Multiplexed, 8 RWS, 0 WWS, WELEN = 4, 1 BT WST, Asynchronous Read mode & Ref_Clk = TC_Clock */
  //       *(unsigned long*)0xFFFECC5C = 0x00000008; 



//    EMIFS_CS_CFG_3_REG = 0x0040408B;
// (*(int*)0xFFFECC1C) = 0x0040428B;     /* EMIFS CS3 Configuration Register : A/D Multiplexed, 8 RWS, 0 WWS, WELEN = 4, 1 BT WST, Asynchronous Read mode & Ref_Clk = TC_Clock */
// (*(int*)0xFFFECC5C) = 0x00000103;
//    *(unsigned int*)0xfffecc0c = 0x00000001;
    
  	UART_Printf(UART2,"==================================================\n");
  	UART_Printf(UART2,"=      Intel NOR  Flash TEST             =\n");
  	UART_Printf(UART2,"==================================================\n");      
  
               
   	UART_Printf(UART2," 0: Upper Menu\n\r");    
	UART_Printf(UART2," 1: Read ID\n\r");
	UART_Printf(UART2," 2: EARSE TEST.\n\r");
	UART_Printf(UART2," 3: Program A BLOCK.\n\r ");
	UART_Printf(UART2," 4: WRITE A PARTION.\n\r ");
	UART_Printf(UART2," Your choice : \n\r");

    option=UART_GetNum(UART2);


    switch (option)
      {
     

      case 1 : 
	    
	    UART_Printf(UART2,"Read ID:\n\r");
		
	    flash_intel_28f256l18top_display_id_a9();
		     
		break ;

   
     case 2: 
	 UART_Printf(UART2,"Erase NOR FLASH D1 in mode 3 ...\n\r");
	 
	 flash_intel_28f256l18top_erase_test_a9();
	  
	  break ;

    case 3:

    Result_Test=Flash_WriteOneBlock( 0x0e000000 );
	if ( Result_Test==0 )
	UART_Printf( UART2, " WR OK.\n\r " );
    break;

    case 4:
    Flash_WriteOnePartion( 0x0e000000 );
    break;
   
	default:
	break;
	  
	  }
    	
   	UART_GetNum(UART2);     
  } 



void flash_amd_s29pl127j_read_id()
{
unsigned short i;
 unsigned long manuid;


volatile unsigned short *fladdr = (volatile unsigned short *) 0x0c000000;

  	

    *(unsigned short*)0x0c000555 = 0xaa;
	
	*(unsigned short*)0x0c0002aa = 0x55;
	
    *(unsigned short*)0x0c000555 = 0x90; 
   
    manuid = *fladdr;
	manuid = *fladdr;

UART_Printf(UART2,"manu_id: 0X%x\n\r",manuid);


}

void flash_amd_s29pl127j_read_device_id()
{
unsigned short i,j,l,m;
 *(unsigned short *)( 0x0c000000)= 0xf0;
    *(unsigned short *)( 0x0c000AAA)= 0xaa;
    *(unsigned short *)( 0x0c000554)= 0x55;
    *(unsigned short *)( 0x0c000AAA)= 0x90;
    i= *(unsigned short *)( 0x0c000000);
	j= *(unsigned short *)( 0x0c000001);
    l= *(unsigned short *)( 0x0c00000e);
	m= *(unsigned short *)( 0x0c00000f);

UART_Printf(UART2,"manu_id: 0X%x\n\r",i);
UART_Printf(UART2,"id1: 0X%x\n\r",j);
UART_Printf(UART2,"id2: 0X%x\n\r",l);
UART_Printf(UART2,"id3: 0X%x\n\r",m);

    *(unsigned short *)( 0x0c000000)= 0xf0;

    *(unsigned short *)( 0x0c000555)= 0xaa;
    *(unsigned short *)( 0x0c0002aa)= 0x55;
    *(unsigned short *)( 0x0c000555)= 0xa0;
    *(unsigned short *)( 0x0c000000)= 0x12;
}




void flash_amd_s29pl127j_write()
{
unsigned int i,j,m,t;
   m=0;
     *(unsigned short*)(0x08000001) = 0x1234;
    i= *(unsigned short*)(0x08000001);
    while(1)
	{
    for(i=0;i<1000;i++)
    {
    *(unsigned short*)(0x08000000+2*i) = 0x5555;
//	 *(unsigned short*)(0x08000002+2*i) = 0xaaaa;
     t= *(unsigned short*)(0x08000000+2*i);
//	 j=*(unsigned short*)(0x08000002+2*i);
	 if(t!=0x5555)
        {m++;}


		*(unsigned short*)(0x08000000+2*i) = 0xaaaa;
//	 *(unsigned short*)(0x08000002+2*i) = 0xaaaa;
     t= *(unsigned short*)(0x08000000+2*i);
//	 j=*(unsigned short*)(0x08000002+2*i);
	 if(t!=0xaaaa)
        {m++;}
	//	if(j!=0xaaaa)
     //   {m++;}
     i++;


    }
	}
   *(unsigned short*)(0x08001ffe) = 0x5555;
   *(unsigned short*)(0x08001fff) = 0x5555;   
   *(unsigned short*)(0x08003ffc) = 0x1234;  
   *(unsigned short*)(0x08003ffe) = 0xa0a0; 
}void WriteFlashRegister_I(UWORD32 Address1, UWORD16 Data1, UWORD32 Address2, UWORD16 Data2)
{
	
	*(unsigned int*)(Address1)= Data1;
	*(unsigned int*)(Address2)= Data2;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -