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; }