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

📄 bspcpusapi.c

📁 MPC8241:本程序是freescale的824*系列的BSP源程序
💻 C
字号:
/************************************************************************
* 版权所有 (C)2003, 深圳市中兴通讯股份有限公司。
* 
* 文件名称: BspCpusApi.c
* 文件标识: 
* 内容摘要: 提供824x子卡对外提供的所有函数
* 其它说明: 暂无
                 
* 当前版本: V1.0
* 作    者: 邹同亮
* 完成日期: 2003年1月11日
* 
* 修改记录1:
*    修改日期:
*    版 本 号:
*    修 改 人:
*    修改内容: 
* 修改记录2:…
************************************************************************/
#include "vxWorks.h"
#include "muxlib.h"
#include "etherLib.h"
#include "end.h"
#include "endLib.h"
#include "ifLib.h" 
#include "ipProto.h" 
#include "BspCpusApi.h"

unsigned char g_ucBoardReset =0; /* 上层是否调用过BoardReset函数,1表示调过 */
/************************************************************************
* 函数名称: NetIntAdd
* 功能描述: 加网口中断
* 输入参数: pNetAdded:加中断所需参数的结构指针            
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期:    版本号     修改人	      修改内容
* -----------------------------------------------
* 2002/12/24   V1.0        马书宇          创建
************************************************************************/
void  NetIntAdd(NET_ADD * pNetAdded)
{
    int i;
    unsigned long intreg;
    int externIntNum;    
    
    for(i = 0; i < pNetAdded->unit; i++)
    {
        pciConfigOutByte (0, pNetAdded->DevNum[i], 0, PCI_CFG_DEV_INT_LINE, pNetAdded->IntNum[i]);			
	externIntNum = pNetAdded->IntNum[i] - EXTERNAL_INTERRUPT_BASE;		
		
	intreg = sysPciInLong((UINT32)((UINT32)(EPIC_EXT_SRC0_VEC_PRI_REG) + externIntNum * 0x20));				
	sysPciOutLong((UINT32)((UINT32)(EPIC_EXT_SRC0_VEC_PRI_REG) + externIntNum * 0x20), (intreg & 0xfff0ffff) | ((pNetAdded->IntPri[i]<<16)&0x000f0000));		
    }
}


/************************************************************************
* 函数名称: GetPrPMCInfo
* 功能描述: 获得子卡类型
* 输入参数: pHardwareInfo:  结构指针,结构体为:
    typedef struct{
	    USHORT BoardType;       硬件单板类型
	    USHORT BoardVersion;    硬件单板版本号
    }T_HARDWARE_INFO;  
* 输出参数: 同输入
* 返 回 值: OK:    操作成功
            NULL: 操作不成功            
* 其它说明: 无
* 修改日期:    版本号     修改人	      修改内容
* -----------------------------------------------
* 2002/12/24   V1.0        马书宇          创建
************************************************************************/
unsigned long GetPrPMCInfo(T_HARDWARE_INFO *pHardwareInfo)
{
	if(NULL == pHardwareInfo)
		return NULL;
	
	pHardwareInfo->BoardType = PRPMC8245;
	pHardwareInfo->BoardVersion = *(UCHAR *)0xfff00002;	
	
	return OK;
}

/************************************************************************
* 函数名称: GetCom2Clk
* 功能描述: 获得串口2时钟
* 输入参数: 无    
* 返 回 值: 串口2时钟            
* 其它说明: 无
* 修改日期:    版本号     修改人	      修改内容
* -----------------------------------------------
* 2003/04/06   V1.0        邹同亮          创建
************************************************************************/
unsigned long GetCom2Clk(void) 
{
	return (sysGetBusSpdHertz());
}

/************************************************************************
* 函数名称: BoardReset
* 功能描述: 复位子卡
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无            
* 其它说明: 无
* 修改日期:    版本号     修改人	      修改内容
* -----------------------------------------------
* 
************************************************************************/
void BoardReset(void)
{
	unsigned char ucBSCR;	
	
	ucBSCR = *((unsigned char*)XPBCON_EPLD_REG5);
	*((unsigned char*)XPBCON_EPLD_REG5) = ucBSCR | 0x80; /* 使能看门狗 */
	g_ucBoardReset =1; /* 设置调用过此函数标志,喂狗函数据此不喂狗 */
	taskDelay(sysClkRateGet() * 2); /* 延时2秒 */	
}

/************************************************************************
* 函数名称: FeedWatchDog
* 功能描述: 喂狗
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无            
* 其它说明: 无
* 修改日期:    版本号     修改人	      修改内容
* -----------------------------------------------
* 
************************************************************************/
void watchDogFeed(void)
{
	unsigned char ucBSCR;			
	
	if(g_ucBoardReset)
	{
		return;
	}
		
	ucBSCR = *((unsigned char*)XPBCON_EPLD_REG0);
	/* 使WDI信号翻转 */
	*((unsigned char*)XPBCON_EPLD_REG0) = (ucBSCR & 0xdf) | ((ucBSCR & 0x20) ^ 0x20);	
}

/* 使能看门狗功能 */
void watchDogEnable(void)
{
	/* 使能前先喂狗,因为此时可能看门狗已经溢出 */
	watchDogFeed();
	taskDelay(1);
	watchDogFeed();
	(*((unsigned char *)XPBCON_EPLD_REG5)) |= 0x80;	
}

/* 禁止看门狗功能 */
void watchDogDisable(void)
{
	(*((unsigned char *)XPBCON_EPLD_REG5)) &= 0x7f;
}

/* 获取子卡硬件版本信息 */
UINT32 getHardwareVersion(void)
{
	return ( *((unsigned char *)XPBCON_EPLD_REG2) );
}


⌨️ 快捷键说明

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