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

📄 2rhea.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 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.
//
//   Filename       	: rheabridge.c
//
//===============================================================================



#include "2rhea.h"
#include "mem.h"


//-------------------------------------------------------------------------------
// NAME         : RHEA_WriteCntlReg
//
// DESCRIPTION  : Init the Rhe Control register
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//               FactorStrobe0        RHEA_ACCESSFACTOR_VAL_0
//				      RHEA_ACCESSFACTOR_VAL_1
//				      RHEA_ACCESSFACTOR_VAL_2
//				      RHEA_ACCESSFACTOR_VAL_3
//				      RHEA_ACCESSFACTOR_VAL_4
//				      RHEA_ACCESSFACTOR_VAL_5
//				      RHEA_ACCESSFACTOR_VAL_6
//				      RHEA_ACCESSFACTOR_VAL_7
//				      RHEA_ACCESSFACTOR_VAL_8
//				      RHEA_ACCESSFACTOR_VAL_9
//				      RHEA_ACCESSFACTOR_VAL_10
//				      RHEA_ACCESSFACTOR_VAL_11
//				      RHEA_ACCESSFACTOR_VAL_12
//				      RHEA_ACCESSFACTOR_VAL_13
//				      RHEA_ACCESSFACTOR_VAL_14
//				      RHEA_ACCESSFACTOR_VAL_15
//
//
//                FactorStrobe1       see FactorStrobe0
//
//                Timeout             a value from 0 to 255
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteCntlReg(BOOL BridgeNumber, UWORD16 FactorStrobe0, UWORD16 FactorStrobe1, UWORD8 TimeOutValue)
{
UWORD16 Temp=0;

     //RHEA_CNTL
      //----------
      SetGroupBits(Temp, RHEA_ACCESS_FACTOR0_POS, RHEA_ACCESS_FACTOR0_NUMB, FactorStrobe0);
      SetGroupBits(Temp, RHEA_ACCESS_FACTOR1_POS, RHEA_ACCESS_FACTOR1_NUMB, FactorStrobe1);
      SetGroupBits(Temp, RHEA_ACCESS_TIMEOUT_POS, RHEA_ACCESS_TIMEOUT_NUMB, TimeOutValue);

      if (BridgeNumber==BRIDGE_1)
	REG16(RHEA_CNTL_REG_SUPERVISOR_ADDR) = Temp;
      else
	REG16(RHEA2_CNTL_REG_SUPERVISOR_ADDR) = Temp;
}

//-------------------------------------------------------------------------------
// NAME         : RHEA_ReadRegisters
//
// DESCRIPTION  : Read the Rhe Control register
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
// RETURN VALUE : Value of the register    RHEA_CNTL
//					   RHEA_BUS_ALLOC
//					   RHEA_ARM_RHEA
//					   RHEA_ENHANCED_REG
//					   RHEA_DEBUG_ADDRESS
//					   RHEA_DATA_LSB
//					   RHEA_DATA_MSB
//					   RHEA_DEBUG_CTRL
//
//
//
//--------------------------------------------------------------------------------
UWORD16 RHEA_ReadRegisters(BOOL BridgeNumber, UWORD16 Register)
{
  UWORD16 Temp=0;

  switch(Register)
  {
    case RHEA_CNTL:
  	  Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_CNTL_REG_SUPERVISOR_ADDR):
                                       REG16(RHEA2_CNTL_REG_SUPERVISOR_ADDR);
  	break;

    case RHEA_BUS_ALLOC:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_BUS_ALLOC_REG_SUPERVISOR_ADDR):
                                       REG16(RHEA2_BUS_ALLOC_REG_SUPERVISOR_ADDR);
  	break;

    case RHEA_ARM_RHEA:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_ARM_CONTROL_REG_SUPERVISOR_ADDR):
                                       REG16(RHEA2_ARM_CONTROL_REG_SUPERVISOR_ADDR);
  	break;

    case RHEA_ENHANCED_REG:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR):
                                       REG16(RHEA2_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR);
  	break;

    case RHEA_DEBUG_ADDRESS:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_ADDRESS_DEBUG_REG_ADDR):
                                       REG16(RHEA2_ADDRESS_DEBUG_REG_ADDR);
  	break;

    case RHEA_DATA_LSB:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_DEBUG_DATA_LSB_REG_ADDR):
                                       REG16(RHEA2_DEBUG_DATA_LSB_REG_ADDR);
  	break;

    case RHEA_DATA_MSB:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_DEBUG_DATA_MSB_REG_ADDR):
                                       REG16(RHEA2_DEBUG_DATA_MSB_REG_ADDR);
  	break;

    case RHEA_DEBUG_CTRL:
    	Temp=(BridgeNumber==BRIDGE_1) ? REG16(RHEA_DEBUG_CONTROL_SIGNAL_REG_ADDR):
                                       REG16(RHEA2_DEBUG_CONTROL_SIGNAL_REG_ADDR);
  	break;

    default :
  	break;
  }

   return(Temp);
}

//-------------------------------------------------------------------------------
// NAME         : RHEA_WriteBusAllocReg
//
// DESCRIPTION  : Init the Rhe Bus Alloc register
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                RheaPriority        RHEA_PRIORITY_TO_ARM
//				      RHEA_PRIORITY_TO_DMA_ACCESS_1
//				      RHEA_PRIORITY_TO_DMA_ACCESS_2
//				      RHEA_PRIORITY_TO_DMA_ACCESS_3
//				      RHEA_PRIORITY_TO_DMA_ACCESS_4
//				      RHEA_PRIORITY_TO_DMA_ACCESS_5
//				      RHEA_PRIORITY_TO_DMA_ACCESS_6
//				      RHEA_PRIORITY_TO_DMA_ACCESS_7
//
//                PriorityEnable       RHEA_ENABLE_PRIORITY
//				       RHEA_DISABLE_PRIORITY
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteBusAllocReg(BOOL BridgeNumber, UWORD16 RheaPriority, BOOL PriorityEnable)
{
UWORD16 Temp=0;

     //RHEA_BUS_ALLOC
      //-------------
      SetGroupBits(Temp, RHEA_PRIORITY_POS, RHEA_PRIORITY_NUMB, RheaPriority);
      SetGroupBits(Temp, RHEA_PRIORITY_EN_POS, RHEA_PRIORITY_EN_NUMB, PriorityEnable);

      if (BridgeNumber==BRIDGE_1)
	REG16(RHEA_BUS_ALLOC_REG_SUPERVISOR_ADDR ) = Temp;
      else
	REG16(RHEA2_BUS_ALLOC_REG_SUPERVISOR_ADDR) = Temp;
}

//-------------------------------------------------------------------------------
// NAME         : RHEA_WriteArmRheaReg
//
// DESCRIPTION  : Init the Arm Rhea register
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//               Strobe0WriteBuffer   RHEA_WRITE_BUFFER_ENABLE
//                                    RHEA_WRITE_BUFFER_DISABLE
//
//               Strobe1WriteBuffer   RHEA_WRITE_BUFFER_ENABLE
//                                    RHEA_WRITE_BUFFER_DISABLE
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteArmRheaReg(BOOL BridgeNumber, BOOL Strobe0WriteBuffer , BOOL Strobe1WriteBuffer)
{
UWORD16 Temp=0;

     //ARM_RHEA_CNTL
      //-------------
      SetGroupBits(Temp, RHEA_WBUFF_EN0_POS, RHEA_WBUFF_EN0_NUMB , Strobe0WriteBuffer);
      SetGroupBits(Temp, RHEA_WBUFF_EN1_POS, RHEA_WBUFF_EN1_NUMB , Strobe1WriteBuffer);

      if (BridgeNumber==BRIDGE_1)
	REG16(RHEA_ARM_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
      else
	REG16(RHEA2_ARM_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
}

//-------------------------------------------------------------------------------
// NAME         : RHEA_WriteEnhancedReg
//
// DESCRIPTION  : Init the Enhanced register
//
// PARAMETERS   : BridgeNumber        BRIDGE_1 or BRIDGE_2
//
//                TimeoutEN           RHEA_TIMEOUT_ENABLE
//                                    RHEA_TIMEOUT_DISABLE
//
//                MaskIt              RHEA_MASK_IT
//                                    RHEA_NO_MASK_IT
//
//                FrequencyLevel      RHEA_HIGH_FREQ
//                                    RHEA_LOW_FREQ
//
//                MaskAbort           RHEA_ABORT_ENABLE
//                                    RHEA_ABORT_DISABLE
//
// RETURN VALUE : None
//
//--------------------------------------------------------------------------------
void RHEA_WriteEnhancedReg(BOOL BridgeNumber, BOOL TimeoutEN, BOOL MaskIt ,
                            BOOL FrequencyLevel, BOOL MaskAbort)
{
UWORD16 Temp=0;

     //ARM_RHEA_CNTL
      //-------------
      SetGroupBits(Temp, RHEA_TIMEOUT_EN_POS, RHEA_TIMEOUT_EN_NUMB, TimeoutEN );
      SetGroupBits(Temp, RHEA_MASK_IT_POS, RHEA_MASK_IT_NUMB, MaskIt );
      SetGroupBits(Temp, RHEA_HIGH_FREQ_POS, RHEA_HIGH_FREQ_NUMB, FrequencyLevel);
      SetGroupBits(Temp, RHEA_ABORT_POS, RHEA_ABORT_NUMB, MaskAbort );

      if (BridgeNumber==BRIDGE_1)
	REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
      else
	REG16(RHEA2_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) = Temp;
}

⌨️ 快捷键说明

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