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