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

📄 2rheatest.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 2 页
字号:

// RHEA_DEBUG_ADDRESS
//---------------------------
    Temp= RHEA_ReadRegisters(BridgeNumber, RHEA_DEBUG_ADDRESS);
    logresult=TEST_OK;
    if (GetGroupBits(Temp, RHEA_DEBUG_ADDRESS_POS, RHEA_DEBUG_ADDRESS_NUMB )!=RHEA_DEBUG_ADDRESS_RESET_VAL)
      logresult= RHEA_DEBUG_ADDRESS_RESET_FAIL;

    RES_Set(logresult);

// RHEA_DATA_LSB
//---------------------------
    Temp= RHEA_ReadRegisters(BridgeNumber,RHEA_DATA_LSB  );
    logresult=TEST_OK;
    if (GetGroupBits(Temp, RHEA_DATA_DBG_LOW_POS, RHEA_DATA_DBG_LOW_NUMB )!=RHEA_DATA_DBG_LOW_RESET_VAL)
      logresult= RHEA_DATA_LSB_RESET_FAIL;

    RES_Set(logresult);

// RHEA_DATA_MSB
//---------------------------
    Temp= RHEA_ReadRegisters(BridgeNumber,RHEA_DATA_MSB  );
    logresult=TEST_OK;
    if (GetGroupBits(Temp, RHEA_DATA_DBG_HIGH_POS, RHEA_DATA_DBG_HIGH_NUMB )!=RHEA_DATA_DBG_LOW_RESET_VAL)
      logresult= RHEA_DATA_MSB_RESET_FAIL;

    RES_Set(logresult);

// RHEA_DEBUG_CTRL
//--------------------------

    Temp= RHEA_ReadRegisters(BridgeNumber,RHEA_DEBUG_CTRL  );
    logresult=TEST_OK;
    if (GetGroupBits(Temp,RHEA_ABORT_FLAG_POS,RHEA_ABORT_FLAG_NUMB )!=RHEA_ABORT_FLAG_RESET_VAL )
      logresult= RHEA_DEBUG_CTRL_RESET_FAIL;


    logresult=TEST_OK;
    if (GetGroupBits(Temp,RHEA_WR_SIZE_FLAG_POS,RHEA_WR_SIZE_FLAG_NUMB  )!=RHEA_WR_SIZE_FLAG_RESET_VAL )
      logresult= RHEA_DEBUG_CTRL_RESET_FAIL;


    logresult=TEST_OK;
    if (GetGroupBits(Temp,RHEA_RNW_POS ,RHEA_RNW_NUMB  )!=RHEA_RNW_RESET_VAL )
      logresult= RHEA_DEBUG_CTRL_RESET_FAIL;


   logresult=TEST_OK;
    if (GetGroupBits(Temp,RHEA_MAS_POS ,RHEA_MAS_NUMB )!=RHEA_MAS_RESET_VAL )
      logresult= RHEA_DEBUG_CTRL_RESET_FAIL;



   logresult=TEST_OK;
    if (GetGroupBits(Temp,RHEA_PERHMAS_POS ,RHEA_PERHMAS_NUMB )!=RHEA_PERHMAS_RESET_VAL )
      logresult= RHEA_DEBUG_CTRL_RESET_FAIL;



    RES_Set(logresult);
}


//-------------------------------------------------------------------------------
// NAME         : RHEA_TestTestStoreLoad
//
// DESCRIPTION  : Test all the reset values of the specified bridge
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                ConfigPattern      CONFIG_PATTERN_0
//                                   CONFIG_PATTERN_1
//                                   CONFIG_PATTERN_2 ...
//                Strobe0Address
//
//                Strobe1Address
//
// RETURN VALUE : Value of the register
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestTestStoreLoad(BOOL BridgeNumber, UWORD16 ConfigPattern, UWORD32 Strobe0Address, UWORD32 Strobe1Address)
{
UWORD16 logresult=0;

    RHEA_TestSetConfig(BridgeNumber,ConfigPattern);

    logresult=TEST_OK;

    if (str_ldr(Strobe0Address)!=RES_OK)
      logresult=RHEA_STRLD_FAIL;

    if (str_ldr(Strobe1Address)!=RES_OK)
      logresult=RHEA_STRLD_FAIL;

    RES_Set(logresult);

}


//-------------------------------------------------------------------------------
// NAME         : RHEA_TestTestMultipleAccess
//
// DESCRIPTION  : Test the access on the specified address
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                Strobe0Address
//
//                Strobe1Address
//
//
// RETURN VALUE : IS_OK or NOT_OK
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestTestMultipleAccess(UWORD16 BridgeNumber, UWORD32 Strobe0Address, UWORD32 Strobe1Address)
{
UWORD16 logresult=0;

    RHEA_TestSetConfig(BridgeNumber,CONFIG_PATTERN_1);

    logresult=TEST_OK;

    if (multiple(Strobe0Address)!=RES_OK)
      logresult=RHEA_MULTI_FAIL;

    if (multiple(Strobe1Address)!=RES_OK)
      logresult=RHEA_MULTI_FAIL;

    RES_Set(logresult);
}


//-------------------------------------------------------------------------------
// NAME         : RHEA_TestTestAccess
//
// DESCRIPTION  : Test the access on the specified address
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                Strobe0Address
//
//                Strobe1Address
//
//                MemoryWidth
//
// RETURN VALUE : Value of the register
//
//--------------------------------------------------------------------------------
UWORD16 RHEA_TestTestAccess(UWORD32 Strobe0Address, UWORD32 Strobe1Address, UWORD16 MemoryWidth)
{
        static UWORD8 strobe0_value_8bits  =0x55;
	static UWORD8 strobe1_value_8bits  =0xaa;
	static UWORD16 strobe0_value_16bits =0xa1a2;
	static UWORD16 strobe1_value_16bits =0x5152;
	static UWORD32 strobe0_value_32bits =0xabcdef59;
	static UWORD32 strobe1_value_32bits =0xf417278c;
	BOOL ok;

	switch (MemoryWidth)
	  {
	  case RHEA_BITS8_SIZE :
		{
		  // write to the fast and slow strobe domains with 8 bits access
		  //omap3 now supports strobe 0 for external peripherals - JP
		  *(UWORD8*) (Strobe0Address) = strobe0_value_8bits;
		  *(UWORD8*) (Strobe1Address) = strobe1_value_8bits;

		  // Check that data transfered into strobe 0 & 1 are correct
		  ok=(*(UWORD8*) (Strobe0Address) == strobe0_value_8bits && *(UWORD8*) (Strobe1Address) == strobe1_value_8bits );

		  // increment test values so that next test is perform on different values
		  strobe0_value_8bits++;
		  strobe1_value_8bits++;
		  break;
		}

	  case RHEA_BITS16_SIZE :
		{
		  // write to the fast and slow strobe domains with 16 bits access
		 *(UWORD16*) (Strobe0Address) = strobe0_value_16bits;
		 *(UWORD16*) (Strobe1Address) = strobe1_value_16bits;

		 // Check that data transfered into strobe 0 & 1 are correct
		 ok=(( *(UWORD16*) (Strobe0Address) == strobe0_value_16bits ) && ( *(UWORD16*) (Strobe1Address) == strobe1_value_16bits ));

		  // increment test values so that next test is perform on different values
		 strobe0_value_16bits++;
		 strobe1_value_16bits++;
		  break;
		}

	  case RHEA_BITS32_SIZE :
		{
		  // write to the fast and slow strobe domains with 32 bits access
		  *(UWORD32*) (Strobe0Address) = strobe0_value_32bits;
		  *(UWORD32*) (Strobe1Address) = strobe1_value_32bits;

		  // Check that data transfered into strobe 0 & 1 are correct
		  ok=(( *(UWORD32*) (Strobe0Address) == strobe0_value_32bits ) && ( *(UWORD32*) (Strobe1Address) == strobe1_value_32bits ));
		  // increment test values so that next test is perform on different values
		  strobe0_value_32bits++;
		  strobe1_value_32bits++;
		  break;
		}
	}//switch (MemoryWidth)

	if(ok)
  	  return IS_OK;
	else
	  return NOT_OK;
}


//-------------------------------------------------------------------------------
// NAME         : RHEA_TestWriteTest
//
// DESCRIPTION  : Test the access on the specified address
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                Strobe0Address
//
//                Strobe1Address
//
//                MemoryWidth
//
// RETURN VALUE : IS_OK or NOT_OK
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestWriteTest(BOOL BridgeNumber, UWORD16 ConfigPattern,  UWORD32 Strobe0Address, UWORD32 Strobe1Address, UWORD16 MemoryWidth)
{
UWORD16 logresult=0;

    RHEA_TestSetConfig(BridgeNumber, ConfigPattern);

    logresult=TEST_OK;

    if (RHEA_TestTestAccess(Strobe0Address, Strobe1Address,MemoryWidth)!=RES_OK)
      logresult=RHEA_LOWFREQ_FAIL;

    RES_Set(logresult);
}

//-------------------------------------------------------------------------------
// NAME         : RHEA_TestGenerateAbort
//
// DESCRIPTION  : Test the access on the specified address
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                ConfigPattern      CONFIG_PATTERN_0
//                                   CONFIG_PATTERN_1
//                                   CONFIG_PATTERN_2
//
//                MissingPerif      Address of a missing perif
//
//
// RETURN VALUE : IS_OK or NOT_OK
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestGenerateAbort(BOOL BridgeNumber, UWORD16 ConfigPattern,  UWORD32 MissingPerif)
{
    RHEA_TestSetConfig(BridgeNumber, ConfigPattern);

	// WARNING:
	// The following operations should generate an abort data

	// Write a value on a missing peripheral on strobe 0
	REG16(MissingPerif) = 0xAA;
	// if we execute something after the latest instruction, it is not OK

	return(NOT_OK);
}



//---------------------------------------------------------------------------------------
// NAME         : RHEA_TestTimeoutTest
//
// DESCRIPTION  : Test the access on the specified Missing address, it generate a timeout
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                ConfigPattern      CONFIG_PATTERN_0
//                                   CONFIG_PATTERN_1
//                                   CONFIG_PATTERN_2
//
//                MissingPerif      Address of a missing perif
//
//               Bridge_Irq_Counter_ptr pointer of irq counter
//
// RETURN VALUE : IS_OK or NOT_OK
//
//----------------------------------------------------------------------------------------
void RHEA_TestTimeoutTest(   UWORD16 BridgeNumber,   UWORD32 MissAdd, UWORD8 * Bridge_Irq_Counter_ptr)
{
UWORD16 Temp,i,logresult;

    RHEA_TestSetConfig(BridgeNumber,CONFIG_PATTERN_0);
    Bridge_Irq_Counter_ptr=0;

//===================================================
// Write a value on a missing peripheral
//===================================================
    REG16(MissAdd) = 0x1234;

    // wait for interrupt event
    for(i=0; ((*Bridge_Irq_Counter_ptr) == 0) && (i<MAX_WAIT_IT_RHEA); i++);

    logresult=TEST_OK;
    if (i>=MAX_WAIT_IT_RHEA)
        {
	logresult=RHEA_TIMEOUT_FAIL;
	}
    else
        {
	Temp=RHEA_ReadRegisters(BridgeNumber, RHEA_DEBUG_CTRL);
	}
    RES_Set(logresult);

//==================================================
// Read a value on a missing peripheral on strobe 0
//==================================================
    Temp=REG16(MissAdd);

    // wait for interrupt event
    for(i=0; ((*Bridge_Irq_Counter_ptr) == 0) && (i<MAX_WAIT_IT_RHEA); i++);

    logresult=TEST_OK;
    if (i>=MAX_WAIT_IT_RHEA)
        {
	logresult=RHEA_TIMEOUT_FAIL;
	}
    else
        {
	Temp=RHEA_ReadRegisters(BridgeNumber, RHEA_DEBUG_CTRL);
	}
    RES_Set(logresult);

}

⌨️ 快捷键说明

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