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

📄 gdmatest.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 5 页
字号:
			{
		        if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD16*) (Chptr->SrcAdd);
		            }
		          *MemPtr = 0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i);
			  }
	                else // Verify mode - Validate transfer
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD16*) (Chptr->DestAdd);
		            }
		          if ((0x0000FFFF & (*MemPtr)) != (0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i)))
		            {
		            DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
					                (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                            rtn_status = NOT_OK;
		            }
			  }
                        if (((i+1)%2)==0)
                          {
                          MemPtr+=Chptr->EltIndex;
                          }
                        else
                          {
                          MemPtr++;
                          }
			}
		      break;
		    }

		  case DMA_TYPE_8_BITS:
		    {
                    UWORD8* MemPtr;
		      for (i = 0; i < BlockSize ; i++)
			{
		        if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD8*) (Chptr->SrcAdd);
		            }
		          *MemPtr = 0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i);
			  }
	                else // Verify mode - Validate transfer
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD8*) (Chptr->DestAdd);
		            }
		          if ((0x000000FF & (*MemPtr)) != (0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i)))
		            {
		            DMAT_SpyWriteFailResults( ChannelNumber, i, (0x000000FF & (*MemPtr)), 
					                (0x000000FF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                            rtn_status = NOT_OK;
		            }
			  }
                        MemPtr+=Chptr->EltIndex;
			}
		      break;
		    }

		  default:
		    {
		      RES_StopVhdl();
		      break;
		    }
		 }
		break;
	      }//end switch SINGLE_INDEX


//--------------------------------------------------------------------------------
          case DMA_ADD_DOUBINDEX :
              {
	      switch(Chptr->TypeSize)
		{
		  case DMA_TYPE_32_BITS:
		    {
                    UWORD32* MemPtr;
		      for (i = 0; i < BlockSize ; i++)
			{
		        if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD32*) (Chptr->SrcAdd);
		            }
		          *MemPtr = DMAT_GeneratePattern(Chptr->Pattern,i);
			  }
	                else // Verify mode - Validate transfer
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD32*) (Chptr->DestAdd);
		            }
		          if (*MemPtr != DMAT_GeneratePattern(Chptr->Pattern,i))
		            {
		            DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
					                (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                            rtn_status = NOT_OK;
		            }
			  }
                        if (((i+1)%Chptr->EltNumber)==0)
                          {
                          MemPtr+=Chptr->FrameIndex;
                          }
                        else
                          {
                          if (((i+1)%4)==0)
                            {
                            MemPtr+=Chptr->EltIndex;
                            }
                          else
                            {
                            MemPtr++;
                            }
                          }
			}
		      break;
		    }

		  case DMA_TYPE_16_BITS:
		    {
                    UWORD16* MemPtr;
		      for (i = 0; i < BlockSize ; i++)
			{
		        if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD16*) (Chptr->SrcAdd);
		            }
		          *MemPtr = (0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i));
			  }
	                else // Verify mode - Validate transfer
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD16*) (Chptr->DestAdd);
		            }
		          if ((0x0000FFFF & (*MemPtr)) != (0x0000FFFF & DMAT_GeneratePattern(Chptr->Pattern,i)))
		            {
		            DMAT_SpyWriteFailResults( ChannelNumber, i, (0x0000FFFF & (*MemPtr)), 
					                (0x0000FFFF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                            rtn_status = NOT_OK;
		            }
			  }
                        if (((i+1)%Chptr->EltNumber)==0)
                          {
                          MemPtr+=Chptr->FrameIndex;
                          }
                        else
                          {
                          if (((i+1)%2)==0)
                            {
                            MemPtr+=Chptr->EltIndex;
                            }
                          else
                            {
                            MemPtr++;
                            }
                          }
			}
		      break;
		    }

		  case DMA_TYPE_8_BITS:
		    {
                    UWORD8* MemPtr;
		      for (i = 0; i < BlockSize ; i++)
			{
		        if (MemMode == INITIALIZE_MEM) // Initialize memory with data . . .
		          {
                          if (i == 0)
			    {
                            MemPtr = (UWORD8*) (Chptr->SrcAdd);
			    }
		          *MemPtr = (0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i));
			  }
	                else // Verify mode - Validate transfer
		          {
                         if (i == 0)
			    {
                            MemPtr = (UWORD8*) (Chptr->DestAdd);
			    }
 		          if ((0x000000FF & (*MemPtr)) != (0x000000FF & DMAT_GeneratePattern(Chptr->Pattern,i)))
		            {
		            DMAT_SpyWriteFailResults( ChannelNumber, i, (0x000000FF & (*MemPtr)), 
					                (0x000000FF & (DMAT_GeneratePattern(Chptr->Pattern,i))));
                            rtn_status = NOT_OK;
		            }
			  }
                        if (((i+1)%Chptr->EltNumber)==0)
                          {
                          MemPtr+=Chptr->FrameIndex;
                          }
                        else
                          {
                          MemPtr+=Chptr->EltIndex;
                          }
			}
		      break;
		    }

		  default:
		    {
		      RES_StopVhdl();
		      break;
		    }
                 }
              break;
              }
          }//end total switch
    return((BOOL)rtn_status);
    }
  else
    {
    return((BOOL)rtn_status);
    }
}

//-------------------------------------------------------------------------------
// NAME         : DMAT_TestGlobalResetValues       
//
// DESCRIPTION  : Read the data of the global register and test the reset values
//
// PARAMETERS   : Global pointer of the Global Register structure, 
//                
//
// RETURN VALUE : IS_OK or NOT_OK if something fail
//
//--------------------------------------------------------------------------------
BOOL  DMAT_TestGlobalResetValues(GLOBAL_REGISTER* Global)
{
UWORD16 logresult = TEST_OK;
 
    // Read the DMA global register
    //---------------------------------
    DMA_ReadGlobalReg(Global);

    if (Global->Free         !=     DMA_FREE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Global->Free));
        RES_Set((UWORD32)(DMA_FREE_RESET_VAL));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_GCR_RESET_ERR;
        }
    if (Global->AutogatingOn         !=     DMA_AUTOGATE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Global->AutogatingOn));
        RES_Set((UWORD32)(DMA_AUTOGATE_RESET_VAL));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_GCR_RESET_ERR;
        }

    RES_Set(logresult);
    return((BOOL)TRUE);
}

    

//-------------------------------------------------------------------------------
// NAME         : DMAT_TestChannelResetValues       
//
// DESCRIPTION  : Read the data of the channel and test the reset values
//
// PARAMETERS   : ChannelNumber       DMA_CHANNEL_0   
//                                    DMA_CHANNEL_1   
//                                    DMA_CHANNEL_2   
//                                    DMA_CHANNEL_3   
//                                    DMA_CHANNEL_4   
//                                    DMA_CHANNEL_5   
//                                    DMA_CHANNEL_6   
//                                    DMA_CHANNEL_7   
//                                    DMA_CHANNEL_8   
//                                    DMA_CHANNEL_LCD
//
//                
//
// RETURN VALUE : IS_OK or NOT_OK if something fail
//
//--------------------------------------------------------------------------------
BOOL  DMAT_TestChannelResetValues( UWORD16 ChannelNumber )
{
UWORD16 logresult = TEST_OK;
 
    // Read the DMA channel
    //---------------------------------
    DMA_ReadChannel(ChannelNumber);

 if (ChannelNumber!=DMA_CHANNEL_LCD)
   {
    CHANNEL_DESCRIPTOR* Chptr;
    Chptr=&(SystemDma.DmaChannel[ChannelNumber]);
    
        //DMA_CSDP
        //----------
    logresult = TEST_OK;
    if (Chptr->TypeSize         !=     DMA_TYPE_SIZE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->TypeSize));
        RES_Set((UWORD32)(DMA_TYPE_SIZE_RESET_VAL));
        RES_Set((UWORD32)(0x10));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }
    
    if (Chptr->SrcPort          !=     DMA_SRC_PORT_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->SrcPort));
        RES_Set((UWORD32)(DMA_SRC_PORT_RESET_VAL));
        RES_Set((UWORD32)(0x11));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }

    if (Chptr->SrcPack          !=     DMA_SRC_PACK_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->SrcPack));
        RES_Set((UWORD32)(DMA_SRC_PACK_RESET_VAL));
        RES_Set((UWORD32)(0x12));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }
    
    if (Chptr->SrcBurst         !=     DMA_SRC_BURST_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->SrcBurst));
        RES_Set((UWORD32)(DMA_SRC_BURST_RESET_VAL));
        RES_Set((UWORD32)(0x13));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }
    
    if (Chptr->DestPort         !=     DMA_DEST_PORT_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->DestPort));
        RES_Set((UWORD32)(DMA_DEST_PORT_RESET_VAL));
        RES_Set((UWORD32)(0x14));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }

    if (Chptr->DestPack         !=     DMA_DEST_PACK_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->DestPack));
        RES_Set((UWORD32)(DMA_DEST_PACK_RESET_VAL));
        RES_Set((UWORD32)(0x15));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }
    
    if (Chptr->DestBurst        !=     DMA_DEST_BURST_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set((UWORD32)(Chptr->DestBurst));
        RES_Set((UWORD32)(DMA_DEST_BURST_RESET_VAL));
        RES_Set((UWORD32)(0x16));
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CSDP_RESET_ERR;
        }
    
    RES_Set(logresult);

        //DMA_CCR
        //----------
    logresult = TEST_OK;
    if (Chptr->SyncNumb        !=     DMA_SYNCNUMB_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->SyncNumb);
        RES_Set(DMA_SYNCNUMB_RESET_VAL);
        RES_Set(0x20);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->EventSync       !=     DMA_FS_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->EventSync);
        RES_Set(DMA_FS_RESET_VAL);
        RES_Set(0x21);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->Priority        !=     DMA_PRIORITY_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->Priority);
        RES_Set(DMA_PRIORITY_RESET_VAL);
        RES_Set(0x22);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->Enable          !=     DMA_ENABLE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->Enable);
        RES_Set(DMA_ENABLE_RESET_VAL);
        RES_Set(0x23);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->Autoinit        !=     DMA_AUTOINIT_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->Autoinit);
        RES_Set(DMA_AUTOINIT_RESET_VAL);
        RES_Set(0x24);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->Fifofush        !=     DMA_FLUSH_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->Fifofush);
        RES_Set(DMA_FLUSH_RESET_VAL);
        RES_Set(0x25);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->SrcAddressMode  !=     DMA_SRC_AMODE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->SrcAddressMode);
        RES_Set(DMA_SRC_AMODE_RESET_VAL);
        RES_Set(0x26);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    
    if (Chptr->DestAddressMode !=     DMA_DEST_AMODE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->DestAddressMode);
        RES_Set(DMA_DEST_AMODE_RESET_VAL);
        RES_Set(0x27);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CCR_RESET_ERR;
        }
    RES_Set(logresult);
    

        //DMA_CICR
        //----------
    logresult = TEST_OK;
    if (Chptr->TimeoutIntEnable     !=  DMA_TOUTIE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->TimeoutIntEnable);
        RES_Set(DMA_TOUTIE_RESET_VAL);
        RES_Set(0x30);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CICR_RESET_ERR;
        }
    
    if (Chptr->DropIntEnable        !=  DMA_DROPIE_RESET_VAL)
        {
        RES_Set(START_ARRAY_DATA);
        RES_Set(Chptr->DropIntEnable);
        RES_Set(DMA_DROPIE_RESET_VAL);
        RES_Set(0x31);
        RES_Set(END_ARRAY_DATA);
        logresult = DMA_CICR_RESET_ERR;
        }
    
    if (Chptr->HalfFrameIntEnable   !=  DMA_HALFIE_RESET_VAL)

⌨️ 快捷键说明

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