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

📄 mac.c

📁 ~{WwU_J9SC5D~}ucos~{T4Bk#,1`RkA4=S5wJT>y?IRT#,4x~}uart~{2bJT~}
💻 C
字号:
#include "uart.h"
#include "mac.h"


/*
 * Global Variable for MAC/BDMA and CAM Configuration
 */
extern volatile U32 gMacCon ;
extern volatile U32 gMacTxCon ;
extern volatile U32 gMacRxCon ;
extern volatile U32 gBdmaTxCon ; 
extern volatile U32 gBdmaRxCon ;
extern volatile U32 gCamCon ;
extern volatile U32 CntlPktTxDone ;		/* Control Packet Tx Done Flag */
extern volatile U32 gCam0_Addr0 ;
extern volatile U32 gCam0_Addr1 ;
extern volatile U32 gCRxFDPtr ;


/*
 * variable for capture frame
 */
volatile U32 gCapture_Addr0 ;
volatile U32 gCapture_Addr1 ;


/*
 * Function : void MacTest(void)
 * Description : Main function for MAC Block test
 */
void MacTest(void)
{
}


/*
 * Function : void MacLoopBackTest(void)
 * Description : MAC LoopBack Test
 */
void MacLoopBackTest(void)
{
}


/*
 * Function : void PhyNoColLoopBack(void)
 * Description : Loopback Test by PHY without collision
 */
void PhyNoColLoopBack(void)
{
   	MiiStationWrite(PHY_CNTL_REG, PHYHWADDR, PHY_FULLDUPLEX | \
			DR_100MB | ENABLE_LOOPBACK) ;
			/* ENABLE_LOOPBACK) ;*/

	InterruptLoopBackTest() ;
	ResetPhyChip() ;
}


/*
 * Function : void PhyColLoopBack(void)
 * Description : Loopback Test by PHY without collision
 */
void PhyColLoopBack(void)
{
   	MiiStationWrite(PHY_CNTL_REG, PHYHWADDR, PHY_FULLDUPLEX | \
			DR_100MB | PHY_COL_TEST | ENABLE_LOOPBACK) ;
	InterruptLoopBackTest() ;
	ResetPhyChip() ;
}


/*
 * Function : void MacPollLoopBack(void)
 * Description : MAC Polling LoopBack Test
 */
void MacPollLoopBack(void)
{
	int LoopCnt = 5 ;
	while( LoopCnt-- ) PollingLoopBackTest() ;
}


/*
 * Function : void MacAllLoopBack(void)
 * Description : MAC All LoopBack Test
 */
void MacAllLoopBack(void)
{
	MacInternalLoopBack() ;
	PhyNoColLoopBack() ;
	PhyColLoopBack() ;
}


/*
 * Function : SingleTransfer
 * Description : Transfer a Frame Data to another Host
 */
void SingleTransfer(void)
{
	char TransferPacket ;
	int i = 0 ;

	do 
	{
		TransferPacket = get_byte() ;
		if ( (TransferPacket == 'T') || (TransferPacket == 't') )
			Random_Pkt_Transmit(i++) ;
	} while ( (TransferPacket != 'Q') && (TransferPacket != 'q') ) ;
}


/*
 * Function : void MacEtcTest(void)
 * Description : Other MAC Function
 */
void MacEtcTest(void)
{
}


/*
 * Function : void CaptureCntlFrame(void)
 * Description : Capture Control Rx Frame
 */
void CaptureCntlFrame(void)
{
	gCapture_Addr0 = 0x0 ; gCapture_Addr1 = 0x0 ;
	gCamCon = CompEn | StationAcc | GroupAcc | BroadAcc | NegCAM ;
#ifdef LITTLE
	gBdmaRxCon = BRxDIE | BRxEn | BRxLittle | BRxMAINC | BRxBRST ; 
#else
	gBdmaRxCon = BRxDIE | BRxEn | BRxBig | BRxMAINC | BRxBRST ; 
#endif
	gMacRxCon = RxEn | EnAlign | EnCRCErr | EnOver | EnLongErr | \
			EnRxPar | PassCtl  ;

	CaptureRxFrame() ;

	gMacRxCon = RxEn | StripCRC ; 
#ifdef LITTLE
	gBdmaRxCon = BRxDIE | BRxEn | BRxLittle | BRxMAINC | BRxBRST | \
                          BRxNLIE | BRxNOIE | BRxSTSKO ;
#else
	gBdmaRxCon = BRxDIE | BRxEn | BRxBig | BRxMAINC | BRxBRST | \
                          BRxNLIE | BRxNOIE | BRxSTSKO ;
#endif

	gCamCon = CompEn | BroadAcc ;
}


⌨️ 快捷键说明

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