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

📄 mpu_subsystem.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//=====================================================================//
//        company:               COMMIT Incorporated                   //
//        department:            HW                                    //
//        author:                LiYuan                                //
//        version:               1.0                                   //
//        create date:           11/03/2005                            //
//        release date:                                                //
//        final revise date:                                           //
//        reviser:                                                     //
//        file descript:                                               //
//=====================================================================//

#include  "MPU_subsystem.h"
#include  "inter_connect.h"
#include  "interrupt_mapping.h"

char DSP_status = 0;

//=====================================================================//
//mail box interrpt configuration                                      //
//=====================================================================//
void MAILBOX_IntCfg()
{
IsrRegister(DSP_MAILBOX1_INT, MAILBOX_InthProcess);
*(unsigned int *)0xfffecb18 = 0x00000001;
*(unsigned int *)0xfffecb04 &= ~0x00000400; //open interrupt
}

//=====================================================================//
//mail box read                                                        //
//=====================================================================//
short MAILBOX_Read(int mailbox_name)
{
short data_temp = 0;

switch(mailbox_name)
{
  case MAILBOX_MPU2DSP1A:
  data_temp = MAILBOX_MPU2DSP1A_REG;
  break;
  case MAILBOX_MPU2DSP1B:
  data_temp = MAILBOX_MPU2DSP1B_REG;
  break;
  case MAILBOX_MPU2DSP2A:
  data_temp = MAILBOX_MPU2DSP2A_REG;
  break;
  case MAILBOX_MPU2DSP2B:
  data_temp = MAILBOX_MPU2DSP2B_REG;
  break;
  case MAILBOX_DSP2MPU1A:
  data_temp = MAILBOX_DSP2MPU1A_REG;
  break;
  case MAILBOX_DSP2MPU1B:
  data_temp = MAILBOX_DSP2MPU1B_REG;
  break;
  case MAILBOX_DSP2MPU2A:
  data_temp = MAILBOX_DSP2MPU2A_REG;
  break;
  case MAILBOX_DSP2MPU2B:
  data_temp = MAILBOX_DSP2MPU2B_REG;
  default:
  break;
}

return(data_temp);
}

//=====================================================================//
//mail box write                                                       //
//=====================================================================//
void MAILBOX_Write(int mailbox_name, short data_a, short data_b)
{
switch(mailbox_name)
{
  case MAILBOX_MPU2DSP1:
  MAILBOX_MPU2DSP1A_REG = data_a;
  MAILBOX_MPU2DSP1B_REG = data_b;
  break;
  case MAILBOX_MPU2DSP2:
  MAILBOX_MPU2DSP2A_REG = data_a;
  MAILBOX_MPU2DSP2B_REG = data_b;
  default:
  break;
}
}

//=====================================================================//
//mail box flag check                                                  //
//=====================================================================//
short MAILBOX_GetFlag(int mailbox_name)
{
switch(mailbox_name)
{
  case MAILBOX_MPU2DSP1:
  return(MAILBOX_MPU2DSP1_FLAG_REG & 0x0001);
  case MAILBOX_MPU2DSP2:
  return(MAILBOX_MPU2DSP2_FLAG_REG & 0x0001);
  default:
  break;
}
return(0);
}

//=====================================================================//
//mail box interrpt process                                            //
//=====================================================================//
void MAILBOX_InthProcess()
{
MAILBOX_Read(MAILBOX_DSP2MPU1A);
MAILBOX_Read(MAILBOX_DSP2MPU1B);

//get peripherals
OCP_UART2_SSW_MPU_CONF_REG |= 0x0001;
OCP_MCBSP1_SSW_MPU_CONF_REG |= 0x0001;
OCP_I2C_1_SSW_MPU_CONF_REG |= 0x0001;
OCP_I2C_2_SSW_MPU_CONF_REG |= 0x0001;
OCP_SPI_SSW_MPU_CONF_REG |= 0x0001;
TIPB_MCSI1_RHSW_MPU_CNF_REG |= 0x0001;
TIPB_MCSI2_RHSW_MPU_CNF_REG |= 0x0001;
TIPB_USIM_RHSW_MPU_CNF_REG |= 0x0001;

DSP_status = 1;
}

//=====================================================================//
//wait DSP run                                                         //
//=====================================================================//
void WaitDSPRun()
{
MAILBOX_IntCfg();
while(!DSP_status);
}

⌨️ 快捷键说明

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