?? ecom8xx.c
字號:
addr=(UCHAR *)(CS4_BASE+Offset);
else if(Name == ECOM_DPRAM_DN)
addr = (UCHAR *)(CS5_BASE+Offset);
else
return FALSE;
for(i=0;i<DataLen;i++) BufAddr[i] = addr[i];
if (i == DataLen)
return TRUE;
else
return FALSE;
}
/*******************************************************************/
/* DpramWrite: This function is used to store data in the DPRAM. */
/* */
/* INPUTS : Name. : ECOM_DPRAM_UP, ECOM_DPRAM_DN;
Offset : 字節偏移地址。
DataLen : 要讀取數據的字節長度。
BufAddr : 緩沖區的指針
*/
/* OUTPUTS : Write operation successful (TRUE) or not (FALSE) */
/* */
/*******************************************************************/
int DpramWrite(int Name, ULONG Offset, ULONG DataLen, UCHAR *BufAddr)
{
UCHAR *addr;
int i;
if(Name == ECOM_DPRAM_UP)
addr = (UCHAR *)(CS4_BASE+Offset);
else if(Name == ECOM_DPRAM_DN)
addr=(UCHAR *)(CS5_BASE+Offset);
else
return FALSE;
for(i=0;i<DataLen;i++)
addr[i]=BufAddr[i];
if(i!=DataLen)
return FALSE;
else
{
return TRUE;
}
}
/*******************************************************************/
/* DpramReadW16: This function is used to read data in the DPRAM. */
/* */
/* INPUTS : Name. : ECOM_DPRAM_UP, ECOM_DPRAM_DN;
Offset : 字偏移地址(以16比特為單位)。
DataLen : 要讀取數據的字長度(以16比特為單位)。
BufAddr : 緩沖區的指針(內容為16比特的字)
*/
/* OUTPUTS : Write operation successful (TRUE) or not (FALSE) */
/* */
/*******************************************************************/
int DpramReadW16(int Name, ULONG Offset, ULONG DataLen, USHORT *BufAddr)
{
USHORT *addr;
int i;
if(Name == ECOM_DPRAM_UP)
addr=(USHORT *)(CS4_BASE+Offset*2);
else if(Name ==ECOM_DPRAM_DN)
addr=(USHORT *)(CS5_BASE+Offset*2);
else
return FALSE;
for(i=0;i<DataLen;i++)
BufAddr[i]=addr[i];
if (i == DataLen)
return TRUE;
else
return FALSE;
}
/*******************************************************************/
/* DpramWriteW16: This function is used to read data in the DPRAM. */
/* */
/* INPUTS : Name. : ECOM_DPRAM_UP, ECOM_DPRAM_DN;
Offset : 字偏移地址(以16比特為單位)。
DataLen : 要讀取數據的字長度(以16比特為單位)。
BufAddr : 緩沖區的指針(內容為16比特的字)
*/
/* OUTPUTS : Write operation successful (TRUE) or not (FALSE) */
/* */
/*******************************************************************/
int DpramWriteW16(int Name, ULONG Offset, ULONG DataLen, USHORT *BufAddr)
{
USHORT *addr;
int i;
if(Name ==ECOM_DPRAM_UP)
addr=(USHORT *)(CS4_BASE+Offset*2);
else if(Name ==ECOM_DPRAM_DN)
addr=(USHORT *)(CS5_BASE+Offset*2);
else
return FALSE;
for(i=0;i<DataLen;i++)
addr[i] = BufAddr[i];
if(i != DataLen)
return FALSE;
else
return TRUE;
}
/*******************************************************************/
/* GetBrdSideInfo: 獲取板位信息 .(pb16) */
/* */
/* INPUTS : */
/* */
/* OUTPUTS : ECOM_LEFT (=1), 表示ECOM板位在左; */
/* ECOM_RIGHT(=0), 表示ECOM板位在右; */
/* 其它情況,表示讀板位信息失敗。 */
/* */
/* */
/*******************************************************************/
int GetBrdSideInfo(void)
{
return (GET_PB_BIT(16)?ECOM_LEFT:ECOM_RIGHT);
}
/***********************************************************************/
/* GetMainMpInfo: 讀取MP的主備信息 .(pb17\pb18) */
/* */
/* INPUTS : */
/* */
/* OUTPUTS : MP_LEFT(=1), 表示左邊的MP為主用,右邊的MP為備用;*/
/* MP_RIGHT(=0), 表示右邊的MP為主用,左邊的MP為備用;*/
/* 其它情況,表示讀MP的主備信息失敗,一定是硬件有故障。*/
/* */
/***********************************************************************/
int GetMainMpInfo(void)
{
if(GET_PB_BIT(17)==0 && GET_PB_BIT(18)==1)return MP_LEFT;
else if(GET_PB_BIT(17)==1 && GET_PB_BIT(18)==0)return MP_RIGHT;
else return -1;
}
/***********************************************************************/
/* ReverseLED: 燈顯示反轉 */
/* */
/* INPUTS: LED_RUN 運行燈 */
/* LED_ALARM 告警燈 */
/* */
/***********************************************************************/
void ReverseLED(ULONG led)
{
/* PDA *pda= (PDA *)(GetIMMR() & IO_MAP_MASK); */
if((led&LED_RUN)==LED_RUN)INV_PB_BIT(26)
if((led&LED_ALARM)==LED_ALARM)INV_PB_BIT(27);
}
/***********************************************************************/
/* PollQMCClk: 檢測QMC時鐘 */
/* */
/* OUTPUTS: TRUE QMC時鐘正常 */
/* FALSE QMC時鐘出錯 */
/* */
/***********************************************************************/
int PollQMCClk(void)
{
if(GET_PB_BIT(28)==1)
{
SET_PB_BIT(30,0);
SET_PB_BIT(30,1);
return FALSE; /* QMC clock error */
}
else
return TRUE; /* QMC clock OK */
}
int Is2MHWInput(void)
{
if(GET_PB_BIT(31)==0)
{
return FALSE; /* input is 8M HW */
}
else
return TRUE; /* OK ,input is 2M HW */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -