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

📄 boardctrl.c

📁 MPC8241:本程序是freescale的824*系列的BSP源程序
💻 C
字号:
#include <string.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}

⌨️ 快捷键说明

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