📄 api.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 + -