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

📄 gcjig.c

📁 GameCubeMemoryCardTestJig_LastCode_ok,is a SOURCE code for GameCube Memory CARD.
💻 C
📖 第 1 页 / 共 2 页
字号:
    if(MemCard_Type==0x10) {PORTA=0X06;}
    
lp1:
    
     if(RB7 !=0 ) { goto lp1;}
     else {PORTA=0Xff;} //{ Led4_Write=1;Led3_Read=1;Led2_Fail=1;Led1_Ok=1;} 
   
     ClearStatus();
 
     ReadStatus();
   /************* Level1 ok **************/
     CS0_Card();
     Txd_command_WithRxd(Level1_Command,9);
     Get_TempRxdData_9();
     for(i=0;i<25;i++)
       {
        Txd_command_WithRxd(temp_data,4);  
        Get_TRxdData_4();
        
        if((temp_data[0])!=(ChechData_Lev1[4*i])) {level1_flg=1;}  
        if((temp_data[1])!=(ChechData_Lev1[4*i+1])) {level1_flg=1;}
        if((temp_data[2])!=(ChechData_Lev1[4*i+2])) {level1_flg=1;}
        if((temp_data[3])!=(ChechData_Lev1[4*i+3])) {level1_flg=1;}       
       }
    CS1_Card();

     /* for contral light the Led1 */
     PORTA=led_light_data;


    /************* Level2 ok   **************/    
     CS0_Card();
     Txd_command_WithRxd(Level2_Command,9);
     Get_TempRxdData_9();
     for(i=0;i<5;i++) // These 20 bytes must not be check
       {
         Txd_command_WithRxd(temp_data,4);  
         Get_TRxdData_4();
       }
     for(i=0;i<20;i++)
       {
        Txd_command_WithRxd(temp_data,4); 
        Get_TRxdData_4();  
        if((temp_data[0])!=(ChechData_Lev2[4*i])) {level2_flg=1;}
        if((temp_data[1])!=(ChechData_Lev2[4*i+1])) {level2_flg=1;}
        if((temp_data[2])!=(ChechData_Lev2[4*i+2])) {level2_flg=1;}
        if((temp_data[3])!=(ChechData_Lev2[4*i+3])) {level2_flg=1;} 
       }

     CS1_Card();
     
     /************* Level3   ok  **************/ 

     CS0_Card();
     Txd_command_WithRxd(Level3_Command,9);
     if( rxd_data[1]!=0x78 && rxd_data[2]!=0xa8 && rxd_data[3]!=0x5e && rxd_data[4]!=0xf9 ) {level3_flg=1;}
     if( rxd_data[5]!=0x01 && rxd_data[6]!=0x09 && rxd_data[7]!=0xb3 && rxd_data[8]!=0xb6 ) {level3_flg=1;}
     Get_TempRxdData_9();

     for(i=0;i<23;i++)
        {
         Txd_command_WithRxd(temp_data,4);
         Get_TRxdData_4();
         if((temp_data[0])!=(ChechData_Lev3[4*i])) {level3_flg=1;}
         if((temp_data[1])!=(ChechData_Lev3[4*i+1])) {level3_flg=1;}
         if((temp_data[2])!=(ChechData_Lev3[4*i+2])) {level3_flg=1;}
         if((temp_data[3])!=(ChechData_Lev3[4*i+3])) {level3_flg=1;} 
        }

     CS1_Card();

      /* for contral light the Led1 */
     PORTA=0xff;

     /************* Level4  ok **************/ 
    
     CS0_Card();
     Txd_command_WithRxd(Level4_Command,9);
     if( rxd_data[1]!=0x6c && rxd_data[2]!=0x2c && rxd_data[3]!=0xe1 && rxd_data[4]!=0x62) {level4_flg=1;}
     if( rxd_data[5]!=0x88 && rxd_data[6]!=0xad && rxd_data[7]!=0x7a && rxd_data[8]!=0x65) {level4_flg=1;}
     Get_TempRxdData_9();

     for(i=0;i<23;i++)
        {
          Txd_command_WithRxd(temp_data,4); 
          Get_TRxdData_4(); 
          if((temp_data[0])!=(ChechData_Lev4[4*i])) {level4_flg=1;}
          if((temp_data[1])!=(ChechData_Lev4[4*i+1])) {level4_flg=1;}
          if((temp_data[2])!=(ChechData_Lev4[4*i+2])) {level4_flg=1;}
          if((temp_data[3])!=(ChechData_Lev4[4*i+3])) {level4_flg=1;} 
        }  
     
     CS1_Card();
    
     /*************************/

     ClearStatus();
     ReadStatus();
     if( level1_flg==1 || level2_flg==1 || level3_flg==1 || level4_flg==1 ) 
         {
           verify_error_flag1=1;
         }
     //goto lp_end;
     
 /*@@@@@@@@@@@@@@ process sector 0 @@@@@@@@@@@@@*/

     /****** erase sector 0  ****************/
     Erase16Sector(Sector_Addres[0],Sector_Addres[1]);
     ReadStatus();
     ClearStatus();
     /******* write sector 0 ***********/
     Page_Program[1]= Sector_Addres[0]; //SA2
     Page_Program[2]= Sector_Addres[1]; //SA1
     
     for(k=0;k<4;k++)
        {
           /* for contral light the Led1 */
          if((k==0) || (k==2) ){PORTA=led_light_data;}
          if((k==1) || (k==3) ){PORTA=0xff;}

          Page_Program[3]=k; // page 0/1/2/3
          CS0_Card();
          Txd_command_WithRxd(Page_Program,5);
          switch(k) {
              case 0: {
                        for(j=0;j<128;j++) {ssp_One_Byte(j);}  // write: 0--127
                      } break;
              case 1: {
                        for(j=0;j<128;j++) {ssp_One_Byte(j+128);} // write: 128--255
                      } break;
              case 2: { 
                        for(j=0;j<128;j++) {ssp_One_Byte(255-j);} // write: 255--128
                      } break;
              case 3: {
                        for(j=0;j<128;j++) {ssp_One_Byte(127-j);} // write: 127--0
                      } break;
              default:
                        break;
                    }
          CS1_Card();
          ReadStatus();
          ClearStatus();

        }

     /* for contral light the Led1 */
     PORTA=0Xff;

     /****** checking sector 0 **********/
     verify_error_flag1=0;
     ReadArry[1]=Sector_Addres[0];      //SA2
     ReadArry[2]=Sector_Addres[1];    //SA1
s0_read_lp1:  
            
     CS0_Card();
     Txd_command_WithRxd(ReadArry,9); 
     Get_TempRxdData_9();    
     verify_times=verify_times+1;

     for(k=0;k<32;k++)  // checking page0 data: 0--127
           {
             Txd_command_WithRxd(temp_data,4); 
             Get_TRxdData_4(); 
             if (rxd_data[0]!=4*k)     {verify_error_flag1=1;}
             if (rxd_data[1]!=(4*k+1)) {verify_error_flag1=1;}
             if (rxd_data[2]!=(4*k+2)) {verify_error_flag1=1;}
             if (rxd_data[3]!=(4*k+3)) {verify_error_flag1=1;}
           }
     /* for contral light the Led1 */
     PORTA=led_light_data;
     for(k=0;k<32;k++)  // checking page1 data: 128--255
           {
             Txd_command_WithRxd(temp_data,4); 
             Get_TRxdData_4(); 
             if(rxd_data[0]!=(4*k+128))    {verify_error_flag1=1;}
             if(rxd_data[1]!=(4*k+1+128))  {verify_error_flag1=1;}
             if(rxd_data[2]!=(4*k+2+128))  {verify_error_flag1=1;}
             if(rxd_data[3]!=(4*k+3+128))  {verify_error_flag1=1;}
           }
     /* for contral light the Led1 */
     //PORTA=0xff;
    
     for(k=0;k<32;k++)  // checking page2 data: 255--128
           {
             Txd_command_WithRxd(temp_data,4); 
             Get_TRxdData_4(); 
             if(rxd_data[0]!=(255-4*k))    {verify_error_flag1=1;}
             if(rxd_data[1]!=(255-(4*k+1)))  {verify_error_flag1=1;}
             if(rxd_data[2]!=(255-(4*k+2)))  {verify_error_flag1=1;}
             if(rxd_data[3]!=(255-(4*k+3)))  {verify_error_flag1=1;}
           }
     /* for contral light the Led1 */
     //PORTA=led_light_data;

     for(k=0;k<32;k++)  // checking page3 data: 127--0
           {
             Txd_command_WithRxd(temp_data,4); 
             Get_TRxdData_4(); 
             if(rxd_data[0]!=(127-4*k))    {verify_error_flag1=1;}
             if(rxd_data[1]!=(127-(4*k+1)))  {verify_error_flag1=1;}
             if(rxd_data[2]!=(127-(4*k+2)))  {verify_error_flag1=1;}
             if(rxd_data[3]!=(127-(4*k+3)))  {verify_error_flag1=1;}
           }

         CS1_Card();
         /* for contral light the Led1 */
         PORTA=0Xff;
        if( (verify_times<2) && (verify_error_flag1==1) )
		{
			verify_error_flag1=0;
			goto s0_read_lp1;
		}
		if(verify_error_flag1 == 1)	//added by louis
		{
			goto	lp_end;
		}
         //goto lp_end;

    

     /*************************************************/
     if(MemCard_Type==0x04) {loop_number=11;}
     if(MemCard_Type==0x08) {loop_number=12;}
     if(MemCard_Type==0x10) {loop_number=13;}


/*@@@@@@@@@@@@@@@  Erase  the  sectors for checking  @@@@@@@@@@@@@@@@@@@@@@*/
    for(i=0;i<(loop_number+1);i++)
   {  
         /* for contral light the Led1 */
         // if( (i==0) || (i==2)||(i==4)||(i==6)||(i==8)||(i==10) ){PORTA=led_light_data;}
         // if( (i==1) || (i==3)||(i==5)||(i==7)||(i==9)||(i==11) ){PORTA=0xff;}

         /*+++++++++  Erase 16 sectors  ++++++++++++++++++*/
         if(i<=3)
            { Erase16Sector(Sector_Addres[0],Sector_Addres[1]); }
         else 
            { Erase16Sector(Sector_Addres[2*i],Sector_Addres[2*i+1]); }
         ReadStatus();
         ClearStatus();
   } 

   /* for contral light the Led1 */
     PORTA=led_light_data;

/*@@@@@@@@@@@@@@@@@ to writting "i" to the sector 's page 0  @@@@@@@@@@@@@@@@@@@@@@*/
 for(i=0;i<(loop_number);i++)
   {  
        
         /* for contral light the Led1 */
         // if( (i==0) || (i==2)||(i==4)||(i==6)||(i==8)||(i==10) ){PORTA=led_light_data;}
         // if( (i==1) || (i==3)||(i==5)||(i==7)||(i==9)||(i==11) ){PORTA=0xff;}

         /*+++++++++ Writeing the ONE sector with "i" ++++*/

         Page_Program[1]= Sector_Addres[2*i]; //SA2
         Page_Program[2]= Sector_Addres[2*i+1];    //SA1
       
         Page_Program[3]=0X00; /*Page 0 */
         CS0_Card();
         Txd_command_WithRxd(Page_Program,5);
         for(j=0;j<128;j++) {ssp_One_Byte(i+1);}
         CS1_Card();
         ReadStatus();
         ClearStatus();
          
    }

    /* for contral light the Led1 */
     PORTA=0xff;
     
/*@@@@@@@@@@@@@@@@  Checking the sectors  @@@@@@@@@@@@@@@@@@@@@@@*/         
           
         
for(i=0;i<(loop_number);i++)
    {  
         
         verify_error_flag1=0;
         ReadArry[1]=Sector_Addres[2*i]; //SA2
         ReadArry[2]=Sector_Addres[2*i+1];    //SA1

read_lp1:  
         CS0_Card();
         Txd_command_WithRxd(ReadArry,9); 
         Get_TempRxdData_9();    
         verify_times=verify_times+1;

         for(j=0;j<32;j++)   // for checking page 0 of every sector
           {
             Txd_command_WithRxd(temp_data,4); 
             Get_TRxdData_4(); 
           if( (rxd_data[0]!=(i+1))||(rxd_data[1]!=(i+1))||(rxd_data[2]!=(i+1))||(rxd_data[3]!=(i+1)) ) 
                 {
		    verify_error_flag1=1;
		    goto	lp_end;
	         }
           }
           /* for contral light the Led1 */
           PORTA=led_light_data;

          for(k=0;k<96;k++) // only read the page 1--3 of every sector
           {
             Txd_command_WithRxd(temp_data,4); 
             Get_TRxdData_4(); 
           }

         CS1_Card();
         if( (verify_times<2) && (verify_error_flag1==1) )
	     {
		verify_error_flag1 =0;
		goto read_lp1;
	     }
         /* for contral light the Led1 */
         PORTA=led_light_data;
            
    } 
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

     /* for contral light the Led1 */
     PORTA=0xff;

lp_end:
        if( level1_flg==1 || level2_flg==1 || level3_flg==1 || level4_flg==1 ) {verify_error_flag1=1;}
        if( verify_error_flag1==1) {PORTA=0Xfb; goto lp_end;}
        else{PORTA=0Xfd;goto lp_end;}    

 }  


⌨️ 快捷键说明

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