亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? macutil.c

?? 在4510板上開發(fā)的ucos+lwip 可以跑起來
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <string.h>

#include "std.h"
#include "sysconf.h"
#include "snds.h"
#include "isr.h"
#include "mac.h"

//下面是為協(xié)議棧的存在而添加的
#include "netif.h"
#include "eth4510if.h"

#include    "OS_CPU.h"
/*
#include <stdarg.h>
#include <stdio.h>
#include <ctype.h>


#include "uart.h"
#include "pollio.h"
#include "timer.h"
#include "memory.h"
#include "iic.h"
*/


sFrameDescriptor RxFDBaseAddr[MaxRxFrameDescriptors];   // Tx Frame Descriptor
sMACFrame RxFBABaseAddr[MaxRxFrameData];		// Tx Frame Buffer

sFrameDescriptor TxFDBaseAddr[MaxTxFrameDescriptors];   // Rx Frame Descriptor
sMACFrame TxFBABaseAddr[MaxTxFrameData];		// Rx Frame Buffer

// Global variables  used for MAC driver
volatile U32 gMacCon = FullDup ;
volatile U32 gMacTxCon = EnComp ;
volatile U32 gMacRxCon = RxEn | StripCRC ; 
volatile U32 gBdmaTxCon = BTxBRST | BTxMSL110 | BTxSTSKO ;

volatile U32 gBdmaRxCon = BRxDIE | BRxEn | BRxLittle | BRxMAINC | BRxBRST | \
                          BRxNLIE | BRxNOIE | BRxSTSKO ;
volatile U32 gCamCon = CompEn | BroadAcc | GroupAcc;

volatile U32 gDuplexValue = 0 ;

volatile U32 gCTxFDPtr, gWTxFDPtr ;
volatile U32 gCRxFDPtr, gPreviousFdp=0 ;
volatile U32 gCam0_Addr0 = 0 , gCam0_Addr1 = 0  ;
volatile U8 MyMacSrcAddr[6] ;
volatile int WatchDogTime = 0 ;
volatile int gErrorPacketCnt =0 ;
volatile int BdmaRxDoneFlagForLoopBackCheck = 0 ;
volatile int MacTxDoneFlagForLoopBackCheck = 0 ;

// Global variable structure for store status
pMACTxStatus gsMacTxStatus = {0,0,0,0,0,0,0,0,0,0,0} ;
pMACRxStatus gsMacRxStatus = {0,0,0,0,0,0,0,0,0} ;
pBDMATxStatus gsBdmaTxStatus = {0,0,0} ;
pBDMARxStatus gsBdmaRxStatus = {0,0,0,0,0} ;




//網(wǎng)絡(luò)初始化
void LanInitialize(void)
{
  //配置物理收發(fā)設(shè)備
	ResetPhyChip() ;

  //獲取MAC層網(wǎng)卡硬件物理地址
	GetMyMacAddr() ;

	// Initialize MAC and BDMA controller
	MacInitialize() ;
}

/*
 * void MacInitialize(void)
 * Initialize MAC and BDMA Controller
 */
void MacInitialize(void)
{

	/*-----------------------------------------------------------------*
	 * 1. Disable MAC and BDMA interrupts.                             *
	 *-----------------------------------------------------------------*/
	Disable_Int(nMAC_RX_INT) ;     // Disable MAC Rx Interrupt
	Disable_Int(nMAC_TX_INT) ;     // Disable MAC Tx Interrupt
	Disable_Int(nBDMA_RX_INT) ;    // Disable BDMA Rx Interrupt
	Disable_Int(nBDMA_TX_INT) ;    // Disable BDMA Tx Interrupt

	/*-----------------------------------------------------------------*
	 * 2. BDMA and MAC interrupt vector setup.                         * 
	 *-----------------------------------------------------------------*/
	SysSetInterrupt(nMAC_RX_INT, MAC_Rx_isr) ;
	SysSetInterrupt(nMAC_TX_INT, MAC_Tx_isr) ;
	SysSetInterrupt(nBDMA_RX_INT, BDMA_Rx_isr) ; 
	SysSetInterrupt(nBDMA_TX_INT, BDMA_Tx_isr) ;


	/*-----------------------------------------------------------------*
 	 * 3. Set the initial condition of the BDMA, and MAC               * 
 	 *-----------------------------------------------------------------*/
	BDMARXCON = BRxRS ;             // Reset BDMAC Receiver
	BDMATXCON = BTxRS ;             // Reset BDMAC Transceiver
	MACCON = SwReset ;
	BDMARXLSZ = MaxRxFrameSize+40 ;    // 1520
	MACCON = gMacCon ;

	/*-----------------------------------------------------------------*
 	 * 4. Set the BDMA Tx/Rx Frame Descriptor                          *
 	 *-----------------------------------------------------------------*/
	TxFDInitialize() ;
	RxFDInitialize() ;

	/*-----------------------------------------------------------------*
 	 * 5. Set the CAM Control register and the MAC address value       *
 	 *-----------------------------------------------------------------*/
 	// CAM0 register of CAM registers : 0x9100~0x9103, 0x9104, 0x9105
        CAM_Reg(0) =  gCam0_Addr0;
        CAM_Reg(1) =  gCam0_Addr1;

	// CAM Enable Register(CAMEN)
	CAMEN = 0x0001 ;
	CAMCON = gCamCon ;

	/*-----------------------------------------------------------------*
	 * 6. Enable interrupt BDMA Rx and MAC Tx interrupt.               *
	 *-----------------------------------------------------------------*/
	Enable_Int(nBDMA_RX_INT); 
	Enable_Int(nMAC_TX_INT);
	//Enable_Int(nMAC_RX_INT);

	/*-----------------------------------------------------------------*
 	 * 7. Configure the BDMA and MAC control registers.                *
 	 *-----------------------------------------------------------------*/
	ReadyMacTx() ;
	ReadyMacRx() ;
}



/*
 * void TxFDInitialize(void) ;
 *           Initialize Tx frame descriptor area-buffers.
 */
void TxFDInitialize(void)
{
	sFrameDescriptor *pFrameDescriptor;
	sFrameDescriptor *pStartFrameDescriptor;
	sFrameDescriptor *pLastFrameDescriptor = NULL;
	U32 FrameDataAddr;
	U32 i;

	// Get Frame descriptor's base address.   
	// +0x4000000 is for setting this area to non-cacheable area. 
	BDMATXPTR = (U32)TxFDBaseAddr + 0x4000000;
	gWTxFDPtr = gCTxFDPtr = BDMATXPTR;

	// Get Transmit buffer base address.
	FrameDataAddr = (U32)TxFBABaseAddr + 0x4000000;

	// Generate linked list.
	pFrameDescriptor = (sFrameDescriptor *) gCTxFDPtr;
	pStartFrameDescriptor = pFrameDescriptor;

	for(i=0; i < MaxTxFrameDescriptors; i++)  {
		if(pLastFrameDescriptor == NULL)
			pLastFrameDescriptor = pFrameDescriptor;
		else  	pLastFrameDescriptor->NextFrameDescriptor = (U32)pFrameDescriptor;

		pFrameDescriptor->FrameDataPtr = 
			(U32)(FrameDataAddr & fOwnership_CPU);
		pFrameDescriptor->Reserved = (U32)0x0;
		pFrameDescriptor->StatusAndFrameLength = (U32)0x0;
		pFrameDescriptor->NextFrameDescriptor = NULL;

		pLastFrameDescriptor = pFrameDescriptor;
		pFrameDescriptor++;
		FrameDataAddr += sizeof(sMACFrame);
	} // end for loop

	// Make Frame descriptor to ring buffer type.     
	pFrameDescriptor--; 
	pFrameDescriptor->NextFrameDescriptor = (U32)pStartFrameDescriptor;
}

/*
 * void RxFDInitialize(void) ;
 *           Initialize Rx frame descriptor area-buffers.
 */
void RxFDInitialize(void)
{
	sFrameDescriptor *pFrameDescriptor;
	sFrameDescriptor *pStartFrameDescriptor;
	sFrameDescriptor *pLastFrameDescriptor = NULL;
	U32 FrameDataAddr;
	U32 i;

	// Get Frame descriptor's base address.  
	// +0x4000000 is for setting this area to non-cacheable area. 
	BDMARXPTR = (U32)RxFDBaseAddr + 0x4000000;
	gCRxFDPtr = BDMARXPTR;
	
	// Get Transmit buffer base address.  
	FrameDataAddr = (U32)RxFBABaseAddr + 0x4000000;

	// Generate linked list. 
	pFrameDescriptor = (sFrameDescriptor *) gCRxFDPtr;
	pStartFrameDescriptor = pFrameDescriptor;
	
	for(i=0; i < MaxRxFrameDescriptors; i++)  {
		if(pLastFrameDescriptor == NULL)
			pLastFrameDescriptor = pFrameDescriptor;
		else  	pLastFrameDescriptor->NextFrameDescriptor = (U32)pFrameDescriptor;

		pFrameDescriptor->FrameDataPtr =
		(U32)(FrameDataAddr | fOwnership_BDMA | 0x4000000 );
		pFrameDescriptor->Reserved = (U32)0x0;
		pFrameDescriptor->StatusAndFrameLength = (U32)0x0;
		pFrameDescriptor->NextFrameDescriptor = NULL;
		
		pLastFrameDescriptor = pFrameDescriptor;
		pFrameDescriptor++;
		FrameDataAddr += sizeof(sMACFrame); 
	} // end for loop
      
	// Make Frame descriptor to ring buffer type.     
	pFrameDescriptor--; 
	pFrameDescriptor->NextFrameDescriptor = (U32)pStartFrameDescriptor;
}



/*
 * Function : ReadyMacTx
 * Description : set Tx Registers related with BDMA & MAC to transmit
 *               packet.
 */
void ReadyMacTx(void)
{
	BDMATXCON = gBdmaTxCon ;
	MACTXCON =  gMacTxCon ;
}

/*
 * Function : ReadyMacRx
 * Description : set Rx Registers related with BDMA & MAC to Receive packet.
 */
void ReadyMacRx(void)
{
	BDMARXCON = gBdmaRxCon ;
	MACRXCON = gMacRxCon ;
}

/*
 * Function : MacTxGo
 * Description : MAC Transfer Start for interactive mode
 */
void MacTxGo(void)
{
	// Enable MAC and BDMA Transfer
	if (!(BDMATXCON & BTxEn))  BDMATXCON |= BTxEn ;
	MACTXCON |= TxEn  ;
}



/*
 * Function : GetMyMacAddr 
 * Description : Get MAC Address From IIC EEPROM
 */
	
void GetMyMacAddr(void)
{
	U8 MacAddr[MAC_ADDR_SIZE];
	U8 TempAddr[MAC_ADDR_SIZE];
	int i;
	
	gCam0_Addr0 = gCam0_Addr1 = 0 ;

	MacAddr[0] = 0x55 ;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区久久久| 亚洲欧美一区二区久久| 亚洲一区二区三区四区的 | 国内不卡的二区三区中文字幕| 岛国精品一区二区| 日韩精品一区二区三区四区| 亚洲男人天堂一区| 国产999精品久久| 精品精品国产高清一毛片一天堂| 亚洲国产视频在线| 在线中文字幕一区二区| 国产精品天美传媒沈樵| 国产精品一二三四五| 精品成人一区二区三区四区| 亚洲va欧美va人人爽| 欧美日韩精品欧美日韩精品 | 精品国产凹凸成av人导航| 五月激情综合网| 91精品国产色综合久久久蜜香臀| 亚洲精品久久久蜜桃| 欧美午夜精品久久久久久孕妇| 1000部国产精品成人观看| 粉嫩av亚洲一区二区图片| 国产午夜精品美女毛片视频| 国产精品自拍av| 国产精品热久久久久夜色精品三区 | 午夜视黄欧洲亚洲| 欧美性视频一区二区三区| 亚洲国产欧美另类丝袜| 8x福利精品第一导航| 青青国产91久久久久久| 久久夜色精品一区| 99热99精品| 亚洲成a人片在线观看中文| 欧美一级免费大片| 成人18精品视频| 天天色天天操综合| 久久久www免费人成精品| av在线不卡电影| 婷婷综合另类小说色区| 精品毛片乱码1区2区3区| 国产成人精品免费在线| 亚洲欧洲日产国产综合网| 欧美日韩亚州综合| 成年人午夜久久久| 麻豆视频一区二区| 成人免费在线视频| 日韩精品中文字幕一区| 91亚洲精品久久久蜜桃| 日本在线播放一区二区三区| 国产精品美女久久久久av爽李琼| 欧美日韩1234| www.色综合.com| 国产一区亚洲一区| 日韩精品成人一区二区在线| 国产精品久久久久久亚洲伦| 欧美mv日韩mv亚洲| 欧美福利电影网| 成人动漫一区二区三区| 亚洲妇熟xx妇色黄| 国产日韩欧美亚洲| 欧美乱熟臀69xxxxxx| 欧美另类一区二区三区| 国产一区二区毛片| 亚洲综合视频在线观看| 中文字幕精品综合| 日韩欧美成人激情| 欧美色爱综合网| 91日韩在线专区| 成人高清免费观看| 国产精一品亚洲二区在线视频| 日日噜噜夜夜狠狠视频欧美人 | 看片的网站亚洲| 国产精品美女久久久久久久久 | 日韩欧美一级在线播放| 欧美性videosxxxxx| 99精品久久久久久| 成人黄色免费短视频| 麻豆精品一区二区三区| 三级精品在线观看| 五月综合激情网| 亚洲1区2区3区视频| 亚洲一区影音先锋| 亚洲成人你懂的| 视频一区欧美日韩| 日韩电影在线一区二区| 亚洲精品自拍动漫在线| 香蕉乱码成人久久天堂爱免费| 欧美丰满少妇xxxbbb| 国产成人综合在线| 国产精品18久久久久久久久久久久 | 欧美在线观看视频在线| 精品视频一区 二区 三区| 欧美色综合天天久久综合精品| 欧美精选一区二区| 欧美美女一区二区| 精品国产91乱码一区二区三区| 欧美高清视频一二三区 | 亚洲一区在线观看免费观看电影高清 | 欧美性视频一区二区三区| 欧美日韩免费电影| 欧美变态凌虐bdsm| 亚洲国产精品t66y| 亚洲小说春色综合另类电影| 1024成人网| 麻豆精品精品国产自在97香蕉| 国产伦精一区二区三区| 色偷偷久久一区二区三区| 91精品国产福利| 国产精品成人免费| 日产国产高清一区二区三区| 国产福利视频一区二区三区| 一本一道综合狠狠老| 日韩精品一区二区在线观看| 国产亚洲精品bt天堂精选| 亚洲综合一二区| 国产精品夜夜爽| 欧美在线一二三| 日韩欧美国产不卡| 亚洲一区二区三区影院| 日本中文字幕一区二区视频| 成人18精品视频| 久久久99久久精品欧美| 亚洲成人手机在线| 91在线视频网址| 久久久久久黄色| 三级在线观看一区二区| 欧美性大战久久久久久久| 国产女主播视频一区二区| 午夜av一区二区| 欧美午夜精品一区二区三区| 精品国产乱码久久久久久久久| 亚洲影视在线播放| 国产成人av福利| 欧美成人欧美edvon| 无吗不卡中文字幕| 精品视频色一区| 亚洲一线二线三线视频| 91色视频在线| 亚洲精品国产一区二区三区四区在线 | 色综合久久66| **性色生活片久久毛片| 九九精品一区二区| 日韩视频在线一区二区| 免费三级欧美电影| 精品国产三级a在线观看| 麻豆成人91精品二区三区| 91精品国产高清一区二区三区| 蜜桃久久精品一区二区| 成人美女在线视频| 精品第一国产综合精品aⅴ| 美女免费视频一区| 欧美一区二区三区在线电影| 日韩黄色免费网站| 日韩三区在线观看| 蜜桃视频在线观看一区| 欧美色大人视频| 日韩国产在线观看一区| www激情久久| av电影在线观看一区| 亚洲免费成人av| 日韩欧美国产综合一区| 国产精品一区免费在线观看| 综合久久久久久久| bt7086福利一区国产| 亚洲v中文字幕| 国产丝袜欧美中文另类| 91视频一区二区| 美女任你摸久久| 国产精品天干天干在线综合| 在线欧美日韩精品| 蜜臀av一区二区三区| 中文字幕日韩精品一区| 欧美人与性动xxxx| 91免费观看国产| 日本在线不卡视频| 1区2区3区国产精品| 日韩一区二区精品| 91网站黄www| 国产suv精品一区二区883| 丝袜美腿亚洲色图| 亚洲欧洲日产国码二区| 91精品国产综合久久久蜜臀粉嫩| 国产91精品免费| 精一区二区三区| 午夜精品久久久久久久99水蜜桃| 国产亚洲欧美一区在线观看| 欧美裸体一区二区三区| 99久久99久久精品免费观看| 国产一区激情在线| 日韩电影在线观看电影| 亚洲综合av网| 一区二区三区精品视频| 国产精品网站在线播放| 337p粉嫩大胆噜噜噜噜噜91av | 日韩av电影免费观看高清完整版| 亚洲欧洲一区二区在线播放| 中文字幕精品在线不卡| 久久色在线视频| 国产亚洲一区二区三区四区 |