www.pudn.com > MPC8241BSP.rar > BoardCtrl.c


#include  
#include  
#include  
#include  
#include  
#include "vxWorks.h" 
#include "muxLib.h" 
#include "ifLib.h" 
#include "BspCpusApi.h" 
#include "config.h" 
#include "vxWorks.h" 
#include "etherLib.h" 
#include "end.h" 
#include "endLib.h" 
#include "cacheLib.h" 
#include "rtlcpp.h"   
 
 
extern unsigned char g_ucTestNetUnit; 
 
/* add by zoutl for test 2003-4-4 9:48 */ 
extern unsigned char g_ucTestNetUnit; 
 
void Init8139_CHM(void) 
{ 
	int iDevNum[3]; 
    int iIntNum[3]; 
    int iIntPri[3]; 
	int NetMask =0xffff0000; 
	char aucAddr[8];   
    NET_ADD tNetPara; 
 
    
     
    /* 添加主备通信网口 */ 
 
    iDevNum[0] = 21; 
    iIntNum[0] = PMC_INTD_VEC; 
    iIntPri[0] = 10; 
     
/* 
    iDevNum[0] = 22; 
    iIntNum[0] = PMC_INTC_VEC; 
    iIntPri[0] = 10; 
*/     
 
    tNetPara.DevNum = iDevNum; 
    tNetPara.IntNum = iIntNum; 
    tNetPara.IntPri = iIntPri;   
    tNetPara.unit   = 1; 
     
    NetIntAdd(&tNetPara); 
     
     
   /* if(BSP_OK != init8139net(1, 0, 22, 0, 128)) */ 
   if(BSP_OK != init8139net(1, 0, 21, 0, 128)) 
    { 
             
           printf(" CHM 8139初始化失败\n"); 
           return; 
    }     
 
	 
	return; 
 
    if(ipAttach (1, "rtl")==ERROR) 
	{ 
		printf("ipAttach error\n"); 
		return; 
	} 
 
	if(ifMaskSet("rtl1",NetMask)==ERROR) 
	{ 
		printf("ifMaskSet error\n"); 
		return; 
	} 
   
	if(ifAddrSet("rtl1","10.48.1.2")==ERROR) 
	{ 
		printf("ifAddrSet error\n"); 
		return; 
	} 
 
    printf(" CHM 8139初始化成功\n"); 
    return; 
     
} 
 
/* 用于测试CCM上的8139网口 */ 
void Init8139_CCM(void) 
{ 
	int iDevNum[3]; 
    int iIntNum[3]; 
    int iIntPri[3]; 
	int NetMask =0xffff0000; 
	char aucAddr[8];   
    NET_ADD tNetPara; 
 
   g_ucTestNetUnit = 0 ; 
     
    /* 添加主备通信网口 */ 
#if 1 
    iDevNum[0] = 22; 
    iIntNum[0] = PMC_INTD_VEC; 
    iIntPri[0] = 10;     
     
 
    tNetPara.DevNum = iDevNum; 
    tNetPara.IntNum = iIntNum; 
    tNetPara.IntPri = iIntPri;   
    tNetPara.unit   = 1; 
     
    NetIntAdd(&tNetPara); 
     
     
   /* if(BSP_OK != init8139net(1, 0, 22, 0, 128)) */ 
 
   if(BSP_OK != init8139net(g_ucTestNetUnit, 0, 22, 0, 1000)) 
    { 
             
           printf(" CCM 8139初始化失败\n"); 
           return; 
    } 
#endif    	 
 
	/* 测试网口为1 */ 
	 
	 
    /* 设置rtl1为自环&100M工作状态(可选) */ 
   SetRtl8139State(g_ucTestNetUnit, 3); 
     
    printf(" CCM 8139初始化成功\n"); 
     
 
#if 0 
    if(ipAttach (0, "rtl")==ERROR) 
	{ 
		printf("ipAttach error\n"); 
		return; 
	} 
 
	if(ifMaskSet("rtl0",NetMask)==ERROR) 
	{ 
		printf("ifMaskSet error\n"); 
		return; 
	} 
   
	if(ifAddrSet("rtl0","10.51.49.251")==ERROR) 
	{ 
		printf("ifAddrSet error\n"); 
		return; 
	} 
 
    printf(" CCM 8139初始化成功\n"); 
#endif 
 
    return; 
     
} 
 
 
/* 用于测试CCM上的8139网口 */ 
void Init8139_CCM1(void) 
{ 
	int iDevNum[3]; 
    int iIntNum[3]; 
    int iIntPri[3]; 
	int NetMask =0xffff0000; 
	char aucAddr[8];   
    NET_ADD tNetPara; 
 
    
     
    /* 添加主备通信网口 */ 
 
    iDevNum[0] = 23; 
    iIntNum[0] = PMC_INTC_VEC; 
    iIntPri[0] = 10;     
     
 
    tNetPara.DevNum = iDevNum; 
    tNetPara.IntNum = iIntNum; 
    tNetPara.IntPri = iIntPri;   
    tNetPara.unit   = 1; 
     
    NetIntAdd(&tNetPara); 
     
     
   /* if(BSP_OK != init8139net(1, 0, 22, 0, 128)) */ 
   if(BSP_OK != init8139net(1, 0, 23, 0, 400)) 
    { 
             
           printf(" CCM 8139初始化失败\n"); 
           return; 
    }    	 
 
	/* 测试网口为1 */ 
	 
	 
    /* 设置rtl1为自环&100M工作状态(可选) */ 
    SetRtl8139State(1, 3); 
     
    printf(" CCM 8139初始化成功\n"); 
     
 
#if 0 
    if(ipAttach (1, "rtl")==ERROR) 
	{ 
		printf("ipAttach error\n"); 
		return; 
	} 
 
	if(ifMaskSet("rtl1",NetMask)==ERROR) 
	{ 
		printf("ifMaskSet error\n"); 
		return; 
	} 
   
	if(ifAddrSet("rtl1","10.48.1.3")==ERROR) 
	{ 
		printf("ifAddrSet error\n"); 
		return; 
	} 
 
    printf(" CCM 8139初始化成功\n"); 
#endif 
 
    return; 
     
} 
 
 
 
void Init8139_RMM(void) 
{ 
	int iDevNum[3]; 
    int iIntNum[3]; 
    int iIntPri[3]; 
	int NetMask =0xffff0000; 
	char aucAddr[8];   
    NET_ADD tNetPara; 
 
    
     
    /* 添加主备通信网口 */ 
 
    iDevNum[0] = 22; 
    iIntNum[0] = PMC_INTC_VEC; 
    iIntPri[0] = 10; 
 
    tNetPara.DevNum = iDevNum; 
    tNetPara.IntNum = iIntNum; 
    tNetPara.IntPri = iIntPri;   
    tNetPara.unit   = 1; 
     
    NetIntAdd(&tNetPara); 
     
    /* if(BSP_OK != init8139net(1, 0, 21, 0, 128)) */ 
    if(BSP_OK != init8139net(0, 0, 22, 0, 128)) 
    { 
             
           printf(" CHM 8139初始化失败\n"); 
           return; 
    }     
    if(ipAttach (1, "rtl")==ERROR) 
	{ 
		printf("ipAttach error\n"); 
		return; 
	} 
 
	if(ifMaskSet("rtl1",NetMask)==ERROR) 
	{ 
		printf("ifMaskSet error\n"); 
		return; 
	} 
   
	if(ifAddrSet("rtl1","10.48.1.2")==ERROR) 
	{ 
		printf("ifAddrSet error\n"); 
		return; 
	} 
 
    printf(" CHM 8139初始化成功\n"); 
    return; 
     
} 
 
 
/* add by zoutl for test 2003-4-4 9:48 */ 
void Init8139_824x(void) 
{ 
	int iDevNum[3]; 
    int iIntNum[3]; 
    int iIntPri[3]; 
	int NetMask =0xffff0000; 
	char aucAddr[8];   
    NET_ADD tNetPara; 
 
    
     
    /* 添加主备通信网口 */ 
 
    iDevNum[0] = 16; 
    iIntNum[0] = PCI_8139_INT_VEC; 
    iIntPri[0] = 10; 
 
    tNetPara.DevNum = iDevNum; 
    tNetPara.IntNum = iIntNum; 
    tNetPara.IntPri = iIntPri;   
    tNetPara.unit   = 1; 
     
    NetIntAdd(&tNetPara); 
     
    /* if(BSP_OK != init8139net(1, 0, 21, 0, 128)) */ 
    if(BSP_OK != init8139net(0, 0, 16, 0, 128)) 
    { 
             
           printf(" CHM 8139初始化失败\n"); 
           return; 
    }     
    if(ipAttach (0, "rtl")==ERROR) 
	{ 
		printf("ipAttach error\n"); 
		return; 
	} 
 
	if(ifMaskSet("rtl0",NetMask)==ERROR) 
	{ 
		printf("ifMaskSet error\n"); 
		return; 
	} 
   
	if(ifAddrSet("rtl0","10.48.1.2")==ERROR) 
	{ 
		printf("ifAddrSet error\n"); 
		return; 
	} 
 
    printf(" 子卡8139初始化成功\n"); 
    return; 
     
} 
 
unsigned long g_total0 =0; 
unsigned long g_totalErr0 =0; 
unsigned long g_total1 =0; 
unsigned long g_totalErr1 =0; 
void testLoopBack(void) 
{ 
	int i; 
	while(1) 
	{ 
		for(i =0; i<100;i++) 
		{ 
			if(sysChecki8139Loopback(0)) 
				g_totalErr0++;	 
 
			g_total0++; 
		} 
		taskDelay(50); 
 
		for(i =0; i<100;i++) 
		{ 
			if(sysChecki8139Loopback(1)) 
				g_totalErr1++;	 
 
			g_total1++; 
		} 
		 
		printf("\n g_total0    =%d\n", g_total0); 
		printf("\n g_totalErr0 =%d\n", g_totalErr0); 
		printf("\n g_total1    =%d\n", g_total1); 
		printf("\n g_totalErr1 =%d\n", g_totalErr1); 
	} 
} 
 
void SdramTest(void) 
{ 
	   unsigned long  i; 
       unsigned char  *temp; 
	   unsigned long templengh; 
	    
	    
	   		ENABLE_S_RUN_LED; 
	   		DISABLE_S_ALARM_LED; 
	    
	   		DISABLE_S_RUN_LED; 
	   		ENABLE_S_ALARM_LED; 
	   		 
	   		 
	   		ENABLE_S_RUN_LED; 
	   		DISABLE_S_ALARM_LED; 
	    
	   		DISABLE_S_RUN_LED; 
	   		ENABLE_S_ALARM_LED; 
	  	    
 
}  
 
unsigned long g_IntrNum =0; 
unsigned long g_IntrNumSec =0; 
void AuxClkIntr(int arg) 
{		 
	g_IntrNum ++; 
	if((g_IntrNum%sysAuxClkRateGet()) == 0) 
	{ 
		g_IntrNumSec++; 
	} 
} 
 
void TestAucClk(void) 
{ 
 
	if(sysAuxClk1Connect(AuxClkIntr, 0) ==OK) 
		printf("sysAuxClkConnect连接成功!\n"); 
	else 
		printf("sysAuxClkConnect连接失败!\n"); 
		 
	sysAuxClk1Enable(); 
	while(1)	 
	{		 
		printf("g_IntrNumSec:%d\n",g_IntrNumSec); 
		taskDelay(50); 
	} 
	 
} 
 
void ShowNetPool(int unit) 
{ 
    RTL81X9END_DEVICE 	*pDrvCtrl = NULL; 
 
printf("TxOk      = %08x%08x\n", 0x12345,0x123); 
     
    pDrvCtrl =(RTL81X9END_DEVICE *)endFindByName("rtl", unit); 
 
    netPoolShow(pDrvCtrl->end.pNetPool); 
} 
 
void testConfigReg(void) 
{ 
	UINT32 temp; 
	UINT16 temp2; 
	UINT8  temp1; 
 
	temp2 = sysPciConfigInWord ((UINT32*)(0x800000E2)); 
	temp = sysPciConfigInLong ((UINT32*)(0x800000E0)); 
	temp1 = sysPciConfigInByte ((UINT8*)0x800000E2); 
 
	temp = sysPciConfigInLong ((UINT32*)(0x80000000 + MPC8240_CFG_MEM_CNTL_CFG_REG2)); 
	temp = sysPciConfigInLong ((UINT32*)(0x80000050)); 
	sysPciConfigOutLong ((UINT32*)(0x80000050), 0xaaaa5555); 
	temp = sysPciConfigInLong ((UINT32*)(0x80000050)); 
	sysPciConfigOutLong ((UINT32*)(0x80000050), 0); 
		 
	 
	sysPciConfigOutByte ((UINT8*)0x8000000c, 0x04); 
	temp1 = sysPciConfigInByte ((UINT8*)0x8000000c);	 
	sysPciConfigOutByte ((UINT8*)0x8000000c, 0x00); 
	temp1 = sysPciConfigInByte ((UINT8*)0x8000000c);	 
} 
 
/* 测试电平中断 */ 
UINT32 g_dwInIntD =0; 
void IsrIntD(void) 
{ 
	g_dwInIntD++; 
	if(g_dwInIntD == 10000) 
{ 
	intDisable (PMC_INTD_LVL);  
} 
} 
void testLevelInt(void) 
{ 
	intConnect ( INUM_TO_IVEC ((unsigned int)PMC_INTD_LVL), IsrIntD, 0); 
    intEnable (PMC_INTD_LVL);  
} 
 
extern void FeedWatchDog(void); 
void taskFeedDog(void) 
{ 
	while(1)	 
	{ 
		watchDogFeed(); 
		taskDelay(sysClkRateGet()); 
	} 
} 
void WatchDogTest(void) 
{	 
	taskSpawn("FeedWatch",  
                  135,  
                  0, 
                  1000,  
                  (FUNCPTR)taskFeedDog, 
                  0,0,0,0,0,0,0,0,0,0); 
} 
 
void testLed(void) 
{ 
	ENABLE_S_RUN_LED; 
	DISABLE_S_RUN_LED; 
	ENABLE_S_RUN_LED; 
	 
	ENABLE_S_ALARM_LED; 
	DISABLE_S_ALARM_LED; 
	ENABLE_S_ALARM_LED; 
}