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

📄 rheabridge.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
📖 第 1 页 / 共 2 页
字号:
*/
void RHEA_ReadArmRheaCtrolReg(WriteBufferStrobe0_t *const WriteBufferStrobe0, 
                              WriteBufferStrobe1_t *const WriteBufferStrobe1)
{
UWORD16 memReg = REG16(RHEA_ARM_CONTROL_REG_USER_ADDR);
  *WriteBufferStrobe0 = (WriteBufferStrobe0_t)(memReg & RHEA_WRITE_BUFFER_TOGGLE_STROBE0_MASK);

  *WriteBufferStrobe1 = (WriteBufferStrobe1_t)((memReg & RHEA_WRITE_BUFFER_TOGGLE_STROBE1_MASK) 
                       >> RHEA_WRITE_BUFFER_TOGGLE_STROBE1_POS);
}



/*
------------------------------------------------------------------------------
      RHEA_InitBusAllocReg                                                   -
------------------------------------------------------------------------------
*/ 
void RHEA_InitBusAllocReg(const RheaPriority_t       RheaPriority, 
                          const RheaPriorityToggle_t RheaPriorityToggle)
{
  REG16(RHEA_BUS_ALLOC_REG_SUPERVISOR_ADDR) 
    = ( RheaPriority | RheaPriorityToggle << RHEA_PRIORITY_ENABLE_POS);
}

/*
------------------------------------------------------------------------------
     RHEA_ReadBusAllocReg                                                    -
------------------------------------------------------------------------------
*/ 
void RHEA_ReadBusAllocReg(RheaPriority_t       *const RheaPriority, 
                          RheaPriorityToggle_t *const RheaPriorityToggle)
{
UWORD16 memReg = REG16(RHEA_BUS_ALLOC_REG_USER_ADDR);
 *RheaPriority       = (RheaPriority_t)(memReg & RHEA_PRIORITY_MASK);
 *RheaPriorityToggle = (RheaPriorityToggle_t)((memReg & RHEA_PRIORITY_ENABLE_MASK) >> RHEA_PRIORITY_ENABLE_POS);
}



/*
------------------------------------------------------------------------------
      RHEA_InitEnhancedRheaControlReg                                        -
------------------------------------------------------------------------------
*/ 
void RHEA_InitEnhancedRheaCtrolReg(const RheaTimeOutToggle_t       TimeOutEnable, 
                                   const RheaInterruptToggle_t     InterruptDisable,
                                   const RheaHighFrequencyToggle_t HighFrequencyEnable,
					  						  const RheaAbortToggle_t AbortDisable)
											  
{
REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) 
    = ( TimeOutEnable | (InterruptDisable     << RHEA_MASK_INTERRUPT_POS)
                      | (HighFrequencyEnable << RHEA_HIGH_FREQ_POS) 
                      | (AbortDisable << RHEA_MASK_ABORT_POS));
}


/*
------------------------------------------------------------------------------
      RHEA_EnableTimeOutDisableMskIt                                       -
------------------------------------------------------------------------------
*/ 
void RHEA_EnableTimeOutDisableMskIt(void)
{
  /* extract all the fields but TimeOutToggle field */
  UWORD16 value = REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) & ~RHEA_TIMEOUT_TOGGLE_MASK
                                                                 & ~RHEA_MASK_INTERRUPT_MASK;
  /* add field contents into register */
  REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) 
    = value | RHEA_TIMEOUT_ENABLE | RHEA_INTERRUPT_ENABLE << RHEA_MASK_INTERRUPT_POS;
}

/*
------------------------------------------------------------------------------
      RHEA_EnableTimeOut                                                     -
------------------------------------------------------------------------------
*/ 
void RHEA_EnableTimeOut(void)
{
  /* extract all the fields but TimeOutToggle field */
  UWORD16 value = REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) & ~RHEA_TIMEOUT_TOGGLE_MASK;
  /* add field contents into register */
  REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) = value | RHEA_TIMEOUT_ENABLE;
}

/*
------------------------------------------------------------------------------
      RHEA_DisableTimeOut                                                    -
------------------------------------------------------------------------------
*/ 
void RHEA_DisableTimeOut(void)
{
  /* extract all the fields but TimeOutToggle field */
  UWORD16 value = REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) & ~RHEA_TIMEOUT_TOGGLE_MASK;
  /* add field contents into register */
  REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) = value | RHEA_TIMEOUT_DISABLE;
}



/*
------------------------------------------------------------------------------
     RHEA_ReadEnhancedRheaCtrolReg                                           -
------------------------------------------------------------------------------
*/ 
void RHEA_ReadEnhancedRheaCtrolReg
       (RheaTimeOutToggle_t       *const TimeOutEnable, 
        RheaInterruptToggle_t     *const InterruptDisable,
        RheaHighFrequencyToggle_t *const HighFrequencyEnable,
	RheaAbortToggle_t         *const AbortDisable)
{
UWORD16 memReg = REG16(RHEA_ENHANCED_CONTROL_REG_USER_ADDR);
 *TimeOutEnable       = (RheaTimeOutToggle_t)(memReg & RHEA_TIMEOUT_TOGGLE_MASK);
 *InterruptDisable    = (RheaInterruptToggle_t)((memReg & RHEA_MASK_INTERRUPT_MASK)   >> RHEA_MASK_INTERRUPT_POS);
 *HighFrequencyEnable = (RheaHighFrequencyToggle_t)((memReg & RHEA_HIGH_FREQ_TOGGLE_MASK) >> RHEA_HIGH_FREQ_POS);
 *AbortDisable        = (RheaAbortToggle_t)((memReg & RHEA_MASK_ABORT_MASK) >> RHEA_MASK_ABORT_POS);
}


/*
--------------------------------------------------------------------------
       RHEA_ReadFaultAddress                                            -
--------------------------------------------------------------------------
*/ 

UWORD16 RHEA_ReadFaultAddress(void)
{
UWORD16 memReg= REG16(RHEA_ADDRESS_DEBUG_REG_ADDR);
 memReg &= RHEA_ADDRESS_DEBUG_MASK;
 return ( (UWORD16) (memReg));
}



/*
-------------------------------------------------------------------------
               RHEA_ReadFaultDataLow                                    -
-------------------------------------------------------------------------
*/ 
UWORD16 RHEA_ReadFaultDataLow(void)
{
UWORD16 memReg= REG16(RHEA_DEBUG_DATA_LSB_REG_ADDR);
 memReg &= RHEA_DEBUG_DATA_LSB_MASK;
 return ( (UWORD16) (memReg));
}

/*
-------------------------------------------------------------------------
               RHEA_ReadFaultDataHigh                                   -
-------------------------------------------------------------------------
*/ 
UWORD16 RHEA_ReadFaultDataHigh(void)
{
UWORD16 memReg= REG16(RHEA_DEBUG_DATA_MSB_REG_ADDR);
 memReg &= RHEA_DEBUG_DATA_MSB_MASK;
 return ( (UWORD16) (memReg));
}


/*
-------------------------------------------------------------------------
               RHEA_ReadDebugCtrolSignal                                -
-------------------------------------------------------------------------
*/ 
void RHEA_ReadDebugCtrolSignal
       (boolean_t          *const TimeOut,
        boolean_t          *const AccessSizeMismatch,
        RHEA_Request_t     *const RequestType,
        boolean_t          *const NotSupervisorMode,
        RHEA_Access_Size_t *const MemoryAccessSize,
        RHEA_Access_Size_t *const PeripheralMemoryAccessSize)
{
UWORD16 memReg;
UWORD8 AccessSize;
 memReg = REG16(RHEA_DEBUG_CONTROL_SIGNAL_REG_ADDR);
 *TimeOut            = (boolean_t)(memReg & RHEA_ABORT_FLAG_MASK);
 *AccessSizeMismatch = (boolean_t)((memReg & RHEA_WR_SIZE_FLAG_MASK) >> RHEA_WR_SIZE_FLAG_POS);
 *RequestType        = (RHEA_Request_t)((memReg & RHEA_DBG_RNW_MASK     ) >> RHEA_DBG_RNW_POS);
 *NotSupervisorMode  = (boolean_t)((memReg & RHEA_DBG_NSPUV_MASK   ) >> RHEA_DBG_NSPUV_POS);
 AccessSize          = (memReg & RHEA_DBG_MAS_MASK     ) >> RHEA_DBG_MAS_POS;
 *MemoryAccessSize   = (RHEA_Access_Size_t)(( AccessSize == 3) ? RHEA_BITS32_SIZE : AccessSize );
 AccessSize          = (memReg & RHEA_DBG_PERHMAS_MASK) >> RHEA_DBG_PERHMAS_POS;
 *PeripheralMemoryAccessSize = ( AccessSize == 3) ? RHEA_BITS32_SIZE : (RHEA_Access_Size_t)AccessSize;
}


/*
--------------------------------------------------------------------
   RHEA_CheckResetCtrolReg                                         -
--------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetCtrolReg(void)
{
if ((REG16(RHEA_CNTL_REG_USER_ADDR) & RHEA_CNTL_REG_MASK) == RHEA_CNTL_REG_RESET_VALUE)
  return (True);
else
  return(False);
}

/*
---------------------------------------------------------------------
   RHEA_CheckResetBusAllocReg                                       -
---------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetBusAllocReg(void)
{
if ((REG16(RHEA_BUS_ALLOC_REG_USER_ADDR) & RHEA_BUS_ALLOC_REG_MASK) == RHEA_BUS_ALLOC_REG_RESET_VALUE)
   return True;
else 
   return False;
}

/*
---------------------------------------------------------------------------
   RHEA_CheckResetArmRheaCtrolReg                                         -
---------------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetArmRheaCtrolReg(void)
{
if ((REG16(RHEA_ARM_CONTROL_REG_USER_ADDR) & RHEA_ARM_CONTROL_REG_MASK) == RHEA_ARM_CONTROL_REG_RESET_VALUE)
   return True;
else 
   return False;
}

/*
--------------------------------------------------------------------------------
   RHEA_CheckResetEnhancedRheaCtrolReg                                         -
--------------------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetEnhancedRheaCtrolReg(void)
{
if ((REG16(RHEA_ENHANCED_CONTROL_REG_USER_ADDR) & RHEA_ENHANCED_CONTROL_REG_MASK) == RHEA_ENHANCED_CONTROL_REG_RESET_VALUE)
   return True;
else 
   return False;
}

/*
--------------------------------------------------------------------------------
   RHEA_CheckResetFaultAddressReg                                              -
--------------------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetDebugFaultAddressReg(void)
{
if ((REG16(RHEA_ADDRESS_DEBUG_REG_ADDR) & RHEA_ADDRESS_DEBUG_MASK) == RHEA_ADDRESS_DEBUG_REG_RESET_VALUE )
   return True;
else 
   return False;
}

/*
--------------------------------------------------------------------------------
   RHEA_CheckResetDebugFaultDataLowReg                                         -
--------------------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetFaultDataLowReg(void)
{
if ((REG16(RHEA_DEBUG_DATA_LSB_REG_ADDR) & RHEA_DEBUG_DATA_LSB_MASK) == RHEA_DEBUG_DATA_LSB_RESET_VALUE)
   return True;
else 
   return False;
}

/*
--------------------------------------------------------------------------------
   RHEA_CheckResetDebugFaultDataHighReg                                        -
--------------------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetFaultDataHighReg(void)
{
if ((REG16(RHEA_DEBUG_DATA_MSB_REG_ADDR) & RHEA_DEBUG_DATA_MSB_MASK)== RHEA_DEBUG_DATA_MSB_RESET_VALUE )
   return True;
else 
   return False;
}

/*
--------------------------------------------------------------------------------
   RHEA_CheckResetDebugControlSignalReg                                        -
--------------------------------------------------------------------------------
*/ 
boolean_t RHEA_CheckResetDebugCtrolSignalReg(void)
{
if ((REG16(RHEA_DEBUG_CONTROL_SIGNAL_REG_ADDR) & RHEA_DEBUG_CONTROL_SIGNAL_MASK)== RHEA_DEBUG_CONTROL_SIGNAL_REG_RESET_VALUE)
   return True;
else 
   return False;
}

//--------------------------------------------------------------------------------
// RHEA_SetHighFrequency
//--------------------------------------------------------------------------------
void RHEA_SetHighFrequency(void)
{
UWORD16 value ;
  value = REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) & ~RHEA_HIGH_FREQ_TOGGLE_MASK;
  /* add field contents into register */
  REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) 
    = value | (RHEA_HIGH_FREQUENCY_ENABLE << RHEA_HIGH_FREQ_POS);
}

//--------------------------------------------------------------------------------
// RHEA_SetLowFrequency
//--------------------------------------------------------------------------------
void RHEA_SetLowFrequency(void)
{
UWORD16 value ;
  value = REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) & ~RHEA_HIGH_FREQ_TOGGLE_MASK;
  /* add field contents into register */
  REG16(RHEA_ENHANCED_CONTROL_REG_SUPERVISOR_ADDR) 
    = value | (RHEA_HIGH_FREQUENCY_DISABLE << RHEA_HIGH_FREQ_POS);
}

⌨️ 快捷键说明

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