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

📄 api.h

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 H
字号:
//===============================================================================
//            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.
//
//   Description          : Header file for the Arm Port Interface
//
//   Project              : OMAP3
//
//   FUNCTIONS PROVIDED	:
//
//===============================================================================

#ifndef _API_H
#define _API_H

// include files
#include "global_types.h"
#include "mem.h"

// define registers mapping
#define API_CTRL_OFFSET		0x0000
#define API_DEBUG_ADDR_OFFSET	0x0004
#define API_DEBUG_DATA_OFFSET	0x0008
#define API_DEBUG_FLAG_OFFSET	0x000C
#define API_STATUS_OFFSET	0x0010
#define API_DSP_STATUS_OFFSET	0x0014
#define API_DSP_BOOT_OFFSET	0x0018
#define API_DSP_API_OFFSET	0x001C
#define API_DSP_MISC_OFFSET	0x0020
#define API_ENH_CTL_OFFSET	0x0024

#define API_CTRL_ADDR		(MPUI_BASE_ADDRESS_DSP + API_CTRL_OFFSET)
#define API_DEBUG_ADDR_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DEBUG_ADDR_OFFSET)
#define API_DEBUG_DATA_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DEBUG_DATA_OFFSET)
#define API_DEBUG_FLAG_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DEBUG_FLAG_OFFSET)
#define API_STATUS_ADDR		(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_STATUS_OFFSET)
#define API_DSP_STATUS_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DSP_STATUS_OFFSET)
#define API_DSP_BOOT_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DSP_BOOT_OFFSET)
#define API_DSP_API_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DSP_API_OFFSET)
#define API_DSP_MISC_ADDR	(MEM_API_INTERFACE_SUPERVISOR_ADDR + API_DSP_MISC_OFFSET)

// define mask register
#define API_CTRL_MASK		0x007FFFFA
#define API_DEBUG_ADDR_MASK	0x00FFFFFF
#define API_DEBUG_DATA_MASK	0xFFFFFFFF
#define API_DEBUG_FLAG_MASK	0x0000FFFF
#define API_STATUS_MASK		0x00001FFF
#define API_DSP_STATUS_MASK	0x00000FFF
#define API_DSP_BOOT_MASK	0x0000FFFF
#define API_DSP_API_MASK	0x0000FFFF
#define API_DSP_MISC_MASK	0x00000100
#define API_ENH_CTL_MASK	0x00000001

// define reset value
#define API_CTRL_RESET_VALUE		0x0003FF1F
#define API_DEBUG_ADDR_RESET_VALUE	0x01FFFFFF
#define API_DEBUG_DATA_RESET_VALUE	0xFFFFFFFF
#define API_DEBUG_FLAG_RESET_VALUE	0x00001800
#define API_STATUS_RESET_VALUE		0x00001FFF
#define API_DSP_STATUS_RESET_VALUE	0x00000000
#define API_DSP_BOOT_RESET_VALUE	0x00000000
#define API_DSP_API_RESET_VALUE		0x0000FFFF
#define API_DSP_MISC_RESET_VALUE	0x00000000
#define API_ENH_CTL_RESET_VALUE		0x00000000

// define position bit fields
#define API_HIGH_FREQ_POSBIT		0
#define API_TIMEOUT_EN_POSBIT		1
#define API_API_ERR_EN_POSBIT		3
#define API_ACCESS_FACTOR_POSBIT	4
#define API_TIMEOUT_POSBIT		8
#define API_ENDIANISM_POSBIT		16
#define API_ACCESS_PRIORITY_POSBIT	18
#define API_WORD_SWAP_CTL_POSBIT	21


#define API_ABORT_FLAG_POSBIT		0
#define API_API_ERR_POSBIT		1
#define API_TIMEOUT_ERR_POSBIT		2
#define API_BURST_SIZE_ERR_POSBIT	3
#define API_BYTE_SAV_POSBIT		4
#define API_RNW_SAV_POSBIT		5
#define API_BURST_SIZE_SAV_POSBIT	6
#define API_CS_SAV_POSBIT		9
#define API_SMOD_SAV_POSBIT		11
#define API_HOST_ID_POSBIT		13
#define API_SEC_ABORT_POSBIT		15


#define API_HOMNSAM_FLAG_POSBIT		0
#define API_ACCESS_DONE_POSBIT		1
#define API_CS_EN_POSBIT		2
#define API_TIMEOUT_VAL_POSBIT		3
#define API_ACCESS_STATUS_POSBIT	11

#define API_RESET_POSBIT		0
#define API_RESET_MCU_POSBIT		1
#define API_CPUXF_POSBIT		2
#define API_CPUAVIS_POSBIT		3
#define API_CPUIACK_POSBIT		4
#define API_PEIDLEPERIPH_POSBIT		5
#define API_PEIDLEDPLL_POSBIT		6
#define API_PEIDLE6_POSBIT		7
#define API_PEIDLE7_POSBIT		8
#define API_PENRESETDPLL_POSBIT		9
#define API_HAHOMNSAM_POSBIT		10
#define API_HRHOMNSAM_POSBIT		11

#define API_DSP_BOOT_MODE_POSBIT	0
#define API_BOOT_RHEA_PTR1_POSBIT	4
#define API_BOOT_RHEA_PTR2_POSBIT	10

#define API_CPUBIOB_POSBIT		8

#define API_DSP_EN_POSBIT		0

// define types

typedef enum
{
  API_HIGH_FREQ_LOW = 0,
  API_HIGH_FREQ_HIGH = 1
} API_HighFreq_t;

typedef enum
{
  API_TIMEOUT_DIS = 0,
  API_TIMEOUT_EN =1
} API_TimeoutEn_t;

typedef enum
{
  API_API_ERR_DIS = 0,
  API_API_ERR_EN =1
} API_ApiErrEn_t;

typedef enum
{
  API_ACCESS_FACTOR_0 = 0,
  API_ACCESS_FACTOR_1,
  API_ACCESS_FACTOR_2,
  API_ACCESS_FACTOR_3,
  API_ACCESS_FACTOR_4,
  API_ACCESS_FACTOR_5,
  API_ACCESS_FACTOR_6,
  API_ACCESS_FACTOR_7,
  API_ACCESS_FACTOR_8,
  API_ACCESS_FACTOR_9,
  API_ACCESS_FACTOR_10,
  API_ACCESS_FACTOR_11,
  API_ACCESS_FACTOR_12,
  API_ACCESS_FACTOR_13,
  API_ACCESS_FACTOR_14,
  API_ACCESS_FACTOR_15
} API_AccessFactor_t;

typedef enum
{
  API_TIMEOUT_MIN = 0,
  API_TIMEOUT_MAX = 255
} API_Timeout_t;

typedef enum
{
  API_ENDIANISM_NO_CONVERT = 0,
  API_ENDIANISM_CONVERT_ALL_ACCESS = 2,
  API_ENDIANISM_CONVERT_API_MEM_ONLY = 3
} API_Endianism_t;

typedef enum
{
  API_ACCESS_PRIORITY_ARM_DMA_HSAB = 0,
  API_ACCESS_PRIORITY_ARM_HSAB_DMA,
  API_ACCESS_PRIORITY_DMA_ARM_HSAB,
  API_ACCESS_PRIORITY_HSAB_ARM_DMA,
  API_ACCESS_PRIORITY_DMA_HSAB_ARM,
  API_ACCESS_PRIORITY_HSAB_DMA_ARM
} API_AccessPriority_t;

typedef enum
{
  API_DSP_BOOT_INTERNAL = 5,
  API_DSP_BOOT_EXTERNAL = 4,
  API_DSP_BOOT_EMIF16 = 3,
  API_DSP_BOOT_IDLE = 2,
  API_DSP_BOOT_PSEUDO_EXT = 1,
  API_DSP_BOOT_MPNMC = 0
} API_DSPBootMode_t;

typedef enum
{
  API_API_SIZE_MIN = 0,
  API_API_SIZE_MAX = 0xFFFF
} API_ApiSize_t;


//-------------------------------------------------------------------------------
// NAME        : API_TestRegisters.						-
// DESCRIPTION : Test the reset default values of the api registers.		-
//               Test the access of the register to the API module.		-
// PARAMETERS  : None.								-
// RETURN VALUE: Return the result of the test OK or BAD.			-
// LIMITATIONS : To invoke on Reset only.					-
//-------------------------------------------------------------------------------
UWORD16 API_TestRegisters(void);


//-------------------------------------------------------------------------------
// NAME	     : API_CtrlSetup.							-
// DESCRIPTION : Setup the configuration of the API.				-
// PARAMETERS  :								-
//   high_freq		=> frequency mode.					-
//   timeout_en		=> enable or disable the timeout feature.		-
//   api_err_en		=> enable the s_nabort signal.				-
//   access_factor	=> division factor for the access frequency.		-
//   timeout		=> timeout value.					-
//   endianism		=> endianism conversion.				-
//   access_priority	=> APIF access priority.				-
// RETURN VALUE: None.								-
// LIMITATIONS : None.								-
//-------------------------------------------------------------------------------
void API_CtrlSetup (API_HighFreq_t high_freq,
		    API_TimeoutEn_t timeout_en,
		    API_ApiErrEn_t api_err_en,
		    API_AccessFactor_t access_factor,
		    API_Timeout_t timeout,
		    API_Endianism_t endianism,
		    API_AccessPriority_t access_priority);


//-------------------------------------------------------------------------------
// NAME	     : API_DspBootConfig.						-
// DESCRIPTION : Setup the boot configuration of the DSP.			-
// PARAMETERS  :								-
//   dsp_boot_mode	=> DSP boot mode.					-
//   boot_rhea_ptr1	=> pointer to rhea.					-
//   boot_rhea_ptr2	=> pointer to rhea.					-
// RETURN VALUE: None.								-
// LIMITATIONS : None.								-
//-------------------------------------------------------------------------------
void API_DspBootConfig (API_DSPBootMode_t dsp_boot_mode);


//-------------------------------------------------------------------------------
// NAME	     : API_ApiSize.							-
// DESCRIPTION : Specified which blocks of SARAM are accessible in HOM mode.	-
// PARAMETERS  :								-
//   api_size	=> size.							-
// RETURN VALUE: None.								-
// LIMITATIONS : None.								-
//-------------------------------------------------------------------------------
void API_ApiSize (API_ApiSize_t api_size);

//-------------------------------------------------------------------------------
// NAME	     : API_CtrlReadCompare
// DESCRIPTION : Read the APIF Control Register and compare it with Golden
//               values (passed on as variables)
// PARAMETERS  :								-
//   high_freq		=> frequency mode.					-
//   timeout_en		=> enable or disable the timeout feature.		-
//   api_err_en		=> enable the s_nabort signal.				-
//   access_factor	=> division factor for the access frequency.		-
//   timeout		=> timeout value.					-
//   endianism		=> endianism conversion.				-
//   access_priority	=> APIF access priority.				-
// RETURN VALUE: 								-
//   integer            => 1=> PASS, 0=> FAIL
// LIMITATIONS : None.								-
//-------------------------------------------------------------------------------
int API_CtrlReadCompare (API_HighFreq_t high_freq,
		    API_TimeoutEn_t timeout_en,
		    API_ApiErrEn_t api_err_en,
		    API_AccessFactor_t access_factor,
		    API_Timeout_t timeout,
		    API_Endianism_t endianism,
		    API_AccessPriority_t access_priority);


void API_TestRWAccessRegs(UWORD16 START_ERROR_CODE);

void API_TestApiMemoryAccessSaram(UWORD16 START_ERROR_CODE);

void API_TestEndianism(UWORD16 START_ERROR_CODE);

int  API_GetHomNSamModeMem();
int  API_GetHomNSamModePer();

#endif

⌨️ 快捷键说明

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