📄 2rheatest.c
字号:
//
//===============================================================================
// TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
//
// Property of Texas Instruments
// For Unrestricted Internal Use Only
// Unauthorized reproduction and/or distribution is strictly prohibited.
// This product is protected under copyright law and trade secret law
// as an unpublished work.
// Created 1999, (C) Copyright 1999 Texas Instruments. All rights reserved.
//===============================================================================
#include "global_types.h"
#include "result.h"
#include "2rheatest.h"
#include "2rhea.h"
#include "test.h"
#include "intvecs.h"
#define inside_function 0xBBBB
//==ASSEMBLER EXTERNAL FUNCTIONS
//==The result is a 16 bits integer value returned inside R0 register
//==under Thumb mode i.e. 16 bits mode state
extern int multiple (int Addr);
extern int str_ldr (int Addr);
extern int w_8(int Addr);
extern int w_16(int Addr);
extern int w_32(int Addr);
#define TIMEOUT_RHEA 0x1F
#define MAX_WAIT_IT_RHEA 10
//-------------------------------------------------------------------------------
// NAME : RHEA_TestSetConfig
//
// DESCRIPTION : Set the config requested
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// ConfigPattern CONFIG_PATTERN_0
// CONFIG_PATTERN_1
// CONFIG_PATTERN_2
//
//
// RETURN VALUE : IS_OK or NOT_OK
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestSetConfig(UWORD16 BridgeNumber ,UWORD16 ConfigPattern )
{
// To enable the Registers Update
INT_SetSupervisor();
switch (ConfigPattern)
{
case CONFIG_PATTERN_0 :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_2, RHEA_ACCESSFACTOR_VAL_2 , TIMEOUT_RHEA);
// disable write buffer on strobe 0, disable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_WRITE_BUFFER_DISABLE , RHEA_WRITE_BUFFER_DISABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_UNMASK_IT ,
RHEA_HIGH_FREQ, RHEA_ABORT_DISABLE);
break;
case CONFIG_PATTERN_1 :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_0, RHEA_ACCESSFACTOR_VAL_0, TIMEOUT_RHEA);
// enable write buffer on strobe 0, enable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_WRITE_BUFFER_ENABLE , RHEA_WRITE_BUFFER_ENABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_UNMASK_IT,
RHEA_LOW_FREQ, RHEA_ABORT_DISABLE);
break;
case LOW_FREQ_PATTERN :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_0, RHEA_ACCESSFACTOR_VAL_0, TIMEOUT_RHEA);
// enable write buffer on strobe 0, enable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_WRITE_BUFFER_ENABLE , RHEA_WRITE_BUFFER_ENABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_UNMASK_IT,
RHEA_LOW_FREQ, RHEA_ABORT_DISABLE);
break;
case HIGH_FREQ_PATTERN :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_15, RHEA_ACCESSFACTOR_VAL_15, TIMEOUT_RHEA);
// enable write buffer on strobe 0, enable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_WRITE_BUFFER_ENABLE , RHEA_WRITE_BUFFER_ENABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_UNMASK_IT,
RHEA_HIGH_FREQ, RHEA_ABORT_DISABLE);
break;
case ACCESS_FACTOR_PATTERN :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_15, RHEA_ACCESSFACTOR_VAL_15, TIMEOUT_RHEA);
// disable write buffer on strobe 0, disable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_WRITE_BUFFER_ENABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_UNMASK_IT,
RHEA_HIGH_FREQ, RHEA_ABORT_DISABLE);
break;
case WRITE_BUFF_PATTERN :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_15, RHEA_ACCESSFACTOR_VAL_15, TIMEOUT_RHEA);
// disable write buffer on strobe 0, disable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_WRITE_BUFFER_ENABLE , RHEA_WRITE_BUFFER_ENABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_UNMASK_IT,
RHEA_HIGH_FREQ, RHEA_ABORT_DISABLE);
break;
case CONFIG_PATTERN_ABORT_GENERATION :
// init. access factors and timeout
RHEA_WriteCntlReg( BridgeNumber,RHEA_ACCESSFACTOR_VAL_2, RHEA_ACCESSFACTOR_VAL_2, TIMEOUT_RHEA);
// enable write buffer on strobe 0, enable on strobe 1
RHEA_WriteArmRheaReg( BridgeNumber, RHEA_WRITE_BUFFER_DISABLE , RHEA_WRITE_BUFFER_DISABLE);
// enable timeout access and Irg generation in abort access
RHEA_WriteEnhancedReg( BridgeNumber, RHEA_TIMEOUT_ENABLE, RHEA_MASK_IT,
RHEA_LOW_FREQ, RHEA_ABORT_ENABLE);
break;
default :
break;
}
// Return to User mode after Register Update done
INT_SetUser();
}
//-------------------------------------------------------------------------------
// NAME : RHEA_TestRw8BitsTest
//
// DESCRIPTION : Does 1 write on each strobe at the address specified
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// ConfigPattern Predefined rhea initialization
//
// Strobe0Address Address on Strobe 0
//
// Strobe1Address Address on Strobe 1
//
//
// RETURN VALUE : Value of the register
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestRw8BitsTest(BOOL BridgeNumber, UWORD16 ConfigPattern ,UWORD32 Strobe0Address ,UWORD32 Strobe1Address)
{
UWORD16 logresult=0;
RHEA_TestSetConfig(BridgeNumber,ConfigPattern);
logresult=TEST_OK;
if (w_8(Strobe0Address)!=RES_OK)
logresult=RHEA_ACCESS8_FAIL;
if (w_8(Strobe1Address)!=RES_OK)
logresult=RHEA_ACCESS8_FAIL;
RES_Set(logresult);
}
//-------------------------------------------------------------------------------
// NAME : RHEA_TestRw16BitsTest
//
// DESCRIPTION : Does 1 write on each strobe at the address specified
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// ConfigPattern Predefined rhea initialization
//
// Strobe0Address Address on Strobe 0
//
// Strobe1Address Address on Strobe 1
//
//
// RETURN VALUE : Value of the register
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestRw16BitsTest(BOOL BridgeNumber, UWORD16 ConfigPattern ,UWORD32 Strobe0Address ,UWORD32 Strobe1Address)
{
UWORD16 logresult=0;
RHEA_TestSetConfig(BridgeNumber,ConfigPattern);
logresult=TEST_OK;
if (w_16(Strobe0Address)!=RES_OK)
logresult=RHEA_ACCESS8_FAIL;
if (w_16(Strobe1Address)!=RES_OK)
logresult=RHEA_ACCESS8_FAIL;
RES_Set(logresult);
}
//-------------------------------------------------------------------------------
// NAME : RHEA_TestRw32BitsTest
//
// DESCRIPTION : Does 1 write on each strobe at the address specified
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
// ConfigPattern Predefined rhea initialization
//
// Strobe0Address Address on Strobe 0
//
// Strobe1Address Address on Strobe 1
//
//
// RETURN VALUE : Value of the register
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestRw32BitsTest(BOOL BridgeNumber, UWORD16 ConfigPattern ,UWORD32 Strobe0Address ,UWORD32 Strobe1Address)
{
UWORD16 logresult=0;
RHEA_TestSetConfig(BridgeNumber,ConfigPattern);
logresult=TEST_OK;
if (w_32(Strobe0Address)!=RES_OK)
logresult=RHEA_ACCESS8_FAIL;
if (w_32(Strobe1Address)!=RES_OK)
logresult=RHEA_ACCESS8_FAIL;
RES_Set(logresult);
}
//-------------------------------------------------------------------------------
// NAME : RHEA_TestResetValuesTest
//
// DESCRIPTION : Test all the reset values of the specified bridge
//
// PARAMETERS : BridgeNumber BRIDGE_1 or BRIDGE_2
//
//
//
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
BOOL RHEA_TestResetValuesTest(BOOL BridgeNumber )
{
UWORD16 logresult=0;
UWORD16 Temp;
// RHEA_CNTL
//---------------------------
Temp= RHEA_ReadRegisters(BridgeNumber,RHEA_CNTL);
logresult=TEST_OK;
if (GetGroupBits(Temp, RHEA_ACCESS_FACTOR0_POS, RHEA_ACCESS_FACTOR0_NUMB)!=RHEA_ACCESS_FACTOR0_RESET_VAL)
logresult=RHEA_CNTL_RESET_FAIL;
if (GetGroupBits(Temp, RHEA_ACCESS_FACTOR1_POS, RHEA_ACCESS_FACTOR1_NUMB)!=RHEA_ACCESS_FACTOR1_RESET_VAL)
logresult=RHEA_CNTL_RESET_FAIL;
if (GetGroupBits(Temp, RHEA_ACCESS_TIMEOUT_POS, RHEA_ACCESS_TIMEOUT_NUMB )!=RHEA_ACCESS_TIMEOUT_RESET_VAL)
logresult=RHEA_CNTL_RESET_FAIL;
RES_Set(logresult);
// RHEA_BUS_ALLOC
//---------------------------
Temp= RHEA_ReadRegisters(BridgeNumber, RHEA_BUS_ALLOC);
logresult=TEST_OK;
if (GetGroupBits(Temp, RHEA_PRIORITY_POS, RHEA_PRIORITY_NUMB)!=RHEA_PRIORITY_RESET_VAL)
logresult=RHEA_BUS_ALLOCL_RESET_FAIL;
if (GetGroupBits(Temp, RHEA_PRIORITY_EN_POS, RHEA_PRIORITY_EN_NUMB)!=RHEA_PRIORITY_EN_RESET_VAL)
logresult=RHEA_BUS_ALLOCL_RESET_FAIL;
RES_Set(logresult);
// RHEA_ARM_RHEA
//---------------------------
Temp= RHEA_ReadRegisters(BridgeNumber,RHEA_ARM_RHEA);
logresult=TEST_OK;
if (GetGroupBits(Temp,RHEA_WBUFF_EN0_POS ,RHEA_WBUFF_EN0_NUMB)!=RHEA_WBUFF_EN0_RESET_VAL)
logresult= RHEA_ARM_RHEA_RESET_FAIL;
if (GetGroupBits(Temp,RHEA_WBUFF_EN1_POS ,RHEA_WBUFF_EN1_NUMB)!=RHEA_WBUFF_EN1_RESET_VAL)
logresult= RHEA_ARM_RHEA_RESET_FAIL;
RES_Set(logresult);
// RHEA_ENHANCED_REG
//---------------------------
Temp= RHEA_ReadRegisters(BridgeNumber,RHEA_ENHANCED_REG );
logresult=TEST_OK;
if (GetGroupBits(Temp,RHEA_TIMEOUT_EN_POS ,RHEA_TIMEOUT_EN_NUMB)!=RHEA_TIMEOUT_EN_RESET_VAL)
logresult= RHEA_ENHANCED_REG_RESET_FAIL;
if (GetGroupBits(Temp,RHEA_MASK_IT_POS ,RHEA_MASK_IT_NUMB )!=RHEA_MASK_IT_RESET_VAL)
logresult= RHEA_ENHANCED_REG_RESET_FAIL;
if (GetGroupBits(Temp, RHEA_HIGH_FREQ_POS, RHEA_HIGH_FREQ_NUMB )!=RHEA_HIGH_FREQ_RESET_VAL)
logresult= RHEA_ENHANCED_REG_RESET_FAIL;
RES_Set(logresult);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -