?? bbu_dd_emifaadl.c
字號(hào):
/*******************************************************************************
* COPYRIGHT (C) 中國(guó)普天研究院 *
********************************************************************************
* 源文件名: BBU_DD_EmifaAdl.c *
* 功能描述:EMIFA Operation Module *
* 編寫者:louyajun *
* 版本:1.0.0 *
* 編制日期:07/27/2004 *
* 說(shuō)明: *
* 修改歷史: *
* *
*******************************************************************************/
#include "BBU_DD_EmifaCsl.h"
#include "BBU_DD_EdmaCsl.h"
#include "BBU_DD_Post.h"
/******************************************************************************\
* EMIFA Static Global Variable Definitions
\******************************************************************************/
#pragma DATA_SECTION(edmaEmifaWDpramHandle,".gvariable");
EDMA_Handle edmaEmifaWDpramHandle;
#pragma DATA_SECTION(edmaEmifaRDpramHandle,".gvariable");
EDMA_Handle edmaEmifaRDpramHandle;
#pragma DATA_SECTION(edmaEmifaWDpramCHandle1,".gvariable");
EDMA_Handle edmaEmifaWDpramCHandle1;
#pragma DATA_SECTION(edmaEmifaWDpramCHandle2,".gvariable");
EDMA_Handle edmaEmifaWDpramCHandle2;
#pragma DATA_SECTION(edmaEmifaRDpramCHandle1,".gvariable");
EDMA_Handle edmaEmifaRDpramCHandle1;
#pragma DATA_SECTION(edmaEmifaRDpramCHandle2,".gvariable");
EDMA_Handle edmaEmifaRDpramCHandle2;
#pragma DATA_SECTION(edmaEmifaWSdramHandle,".gvariable");
EDMA_Handle edmaEmifaWSdramHandle;
#pragma DATA_SECTION(edmaEmifaRSdramHandle,".gvariable");
EDMA_Handle edmaEmifaRSdramHandle;
#pragma DATA_SECTION(emifaConfig,".gvariable");
#if POST_TEST_MODE
/* EMIFA config structures for CPB */
static EMIFA_Config emifaConfig = {
/* AGBLCTL ACECTL0 ACECTL1 ACECTL2 */
0x000327F8, 0xFFFFFF43, 0xFFFFFF33, 0xFFFFFFFF,
/* ACECTL3 ACESEC0 ACESEC01 ACESEC2 */
0xFFFFFFFF, 0x00000002, 0x00000042, 0x00000002,
/* ACESEC3 ASDCTL ASDTIM ASDEXT */
0x00000002, 0x47116000, 0x00000186, 0x001B5F48 };
#else
/* EMIFA config structures for TMS320C6416 DSK */
static EMIFA_Config emifaConfig = {
/* AGBLCTL ACECTL0 ACECTL1 ACECTL2 */
0x000927F8, 0xFFFFFFD3, 0xFFFFFFFF, 0xFFFFFFFF,
/* ACECTL3 ACESEC0 ACESEC01 ACESEC2 */
0xFFFFFFFF, 0x00000042, 0x00000002, 0x00000002,
/* ACESEC3 ASDCTL ASDTIM ASDEXT */
0x00000002, 0x4748F000, 0x000005DC, 0x00175F3F };
#endif
/*----------------------------------------------------------------------------*/
/******************************************************************************\
* EMIFA API Function Declarations
\******************************************************************************/
CSLAPI void EMIFA_config(EMIFA_Config *config);
CSLAPI void EMIFA_getConfig(EMIFA_Config *config);
CSLAPI void EMIFA_init(void);
CSLAPI void EMIFA_startEdmaDpram(EDMA_Handle hEdma,EDMA_DpramConfig *config);
CSLAPI void EMIFA_startEdmaSdram(EDMA_Handle hEdma,EDMA_SdramConfig *config);
/******************************************************************************\
* EMIFA API Function Definitions
\******************************************************************************/
/*******************************************************************************
* 函數(shù)名稱: EMIFA_config *
* 函數(shù)描述: Setup the EMIFA Device using the configuration structure *
* 相關(guān)文檔: *
* 參數(shù)描述: *
* 參數(shù)名 類型 輸入/輸出 描述 *
* -------- ---- --------- ----------- *
* config EMIFA_Config* in Configuration structure for EMIFA *
* *
* 返回值: 無(wú) *
* 說(shuō)明: *
*******************************************************************************/
CSLAPI void EMIFA_config(EMIFA_Config *config)
{
Uint32 gie;
volatile Uint32 *base = (volatile Uint32 *)EMIFA_BASE_GLOBAL;
register int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11;
gie = IRQ_globalDisable();
/* the compiler generates more efficient code if the loads */
/* and stores are grouped together raher than intermixed */
x0 = config->gblctl;
x1 = config->cectl0;
x2 = config->cectl1;
x3 = config->cectl2;
x4 = config->cectl3;
x5 = config->sdctl;
x6 = config->sdtim;
x7 = config->sdext;
x8 = config->cesec0;
x9 = config->cesec1;
x10 = config->cesec2;
x11 = config->cesec3;
base[EMIFA_GBLCTL_OFFSET] = x0;
base[EMIFA_CECTL0_OFFSET] = x1;
base[EMIFA_CECTL1_OFFSET] = x2;
base[EMIFA_CECTL2_OFFSET] = x3;
base[EMIFA_CECTL3_OFFSET] = x4;
base[EMIFA_SDTIM_OFFSET] = x6;
base[EMIFA_SDEXT_OFFSET] = x7;
base[EMIFA_CESEC0_OFFSET] = x8;
base[EMIFA_CESEC1_OFFSET] = x9;
base[EMIFA_CESEC2_OFFSET] = x10;
base[EMIFA_CESEC3_OFFSET] = x11;
base[EMIFA_SDCTL_OFFSET] = x5;
IRQ_globalRestore(gie);
}
/*----------------------------------------------------------------------------*/
/*******************************************************************************
* 函數(shù)名稱: EMIFA_getConfig *
* 函數(shù)描述: Get a EMIFA Device Configuration *
* 相關(guān)文檔: *
* 參數(shù)描述: *
* 參數(shù)名 類型 輸入/輸出 描述 *
* -------- ---- --------- ----------- *
* config EMIFA_Config* out Configuration structure for EMIFA *
* *
* 返回值: 無(wú) *
* 說(shuō)明: *
*******************************************************************************/
CSLAPI void EMIFA_getConfig(EMIFA_Config *config)
{
Uint32 gie;
volatile Uint32 *base = (volatile Uint32 *)EMIFA_BASE_GLOBAL;
volatile EMIFA_Config* cfg = (volatile EMIFA_Config*)config;
register int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11;
gie = IRQ_globalDisable();
/* the compiler generates more efficient code if the loads */
/* and stores are grouped together raher than intermixed */
x0 = base[EMIFA_GBLCTL_OFFSET];
x1 = base[EMIFA_CECTL0_OFFSET];
x2 = base[EMIFA_CECTL1_OFFSET];
x3 = base[EMIFA_CECTL2_OFFSET];
x4 = base[EMIFA_CECTL3_OFFSET];
x6 = base[EMIFA_SDTIM_OFFSET];
x7 = base[EMIFA_SDEXT_OFFSET];
x8 = base[EMIFA_CESEC0_OFFSET];
x9 = base[EMIFA_CESEC1_OFFSET];
x10 = base[EMIFA_CESEC2_OFFSET];
x11 = base[EMIFA_CESEC3_OFFSET];
x5 = base[EMIFA_SDCTL_OFFSET];
cfg->gblctl = x0;
cfg->cectl0 = x1;
cfg->cectl1 = x2;
cfg->cectl2 = x3;
cfg->cectl3 = x4;
cfg->sdctl = x5;
cfg->sdtim = x6;
cfg->sdext = x7;
cfg->cesec0 = x8;
cfg->cesec1 = x9;
cfg->cesec2 = x10;
cfg->cesec3 = x11;
IRQ_globalRestore(gie);
}
/*----------------------------------------------------------------------------*/
/*******************************************************************************
* 函數(shù)名稱: EMIFA_init *
* 函數(shù)描述: EMIFA Operation Initialization *
* 相關(guān)文檔: *
* 參數(shù)描述: 無(wú) *
* *
* 返回值: 無(wú) *
* 說(shuō)明: *
*******************************************************************************/
CSLAPI void EMIFA_init(void)
{
/* Open EDMA and Chain Channel for EMIFA Writing and Reading DPRAM */
edmaEmifaWDpramHandle = EDMA_open(EDMA_CHA_CPU1);
edmaEmifaWDpramCHandle1 = EDMA_open(EDMA_CHA_CHAIN1);
edmaEmifaWDpramCHandle2 = EDMA_open(EDMA_CHA_CHAIN2);
edmaEmifaRDpramHandle = EDMA_open(EDMA_CHA_CPU2);
edmaEmifaRDpramCHandle1 = EDMA_open(EDMA_CHA_CHAIN3);
edmaEmifaRDpramCHandle2 = EDMA_open(EDMA_CHA_CHAIN4);
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -