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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? macutil.c

?? 網絡服務器上實現操作系統和嵌入式協議棧的 結合
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <string.h>

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

//下面是為協議棧的存在而添加的
#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} ;




//網絡初始化
void LanInitialize(void)
{
  //配置物理收發設備
	ResetPhyChip() ;

  //獲取MAC層網卡硬件物理地址
	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 ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产综合精品女国产盗摄| 色网站国产精品| 国产日韩精品一区二区三区| 99热99精品| 美女视频一区在线观看| 亚洲激情一二三区| 26uuu国产日韩综合| 在线观看亚洲精品| 国产成人精品免费| 日本视频在线一区| 亚洲靠逼com| 国产精品无遮挡| 91精品国产综合久久精品| 成人福利视频在线看| 奇米精品一区二区三区在线观看一| 亚洲欧洲在线观看av| 久久久久久97三级| 欧美zozo另类异族| 91精品黄色片免费大全| 91福利区一区二区三区| 成人免费视频一区| 国产九色sp调教91| 蜜桃久久久久久| 性欧美大战久久久久久久久| 亚洲另类在线制服丝袜| 国产精品三级av| 久久你懂得1024| 欧美成人乱码一区二区三区| 91麻豆精品国产自产在线观看一区| 91精品办公室少妇高潮对白| 99久久99久久综合| 国产suv精品一区二区883| 最新中文字幕一区二区三区| 国产欧美日韩激情| 日韩成人一级大片| 中文字幕一区二区不卡| 中文欧美字幕免费| 国产精品国产三级国产aⅴ入口 | 亚洲久本草在线中文字幕| 国产精品亚洲成人| 国产色91在线| eeuss鲁片一区二区三区在线看| 中文字幕欧美三区| 99国产精品一区| 亚洲综合久久久| 欧美乱熟臀69xxxxxx| 日本不卡一二三| 久久中文字幕电影| 国产suv一区二区三区88区| 久久久精品天堂| 亚洲日本一区二区| 欧美午夜影院一区| 日韩精品免费专区| 亚洲另类一区二区| 成人高清免费在线播放| 亚洲精选视频在线| 欧美电影影音先锋| 国产精品18久久久久| 亚洲欧美一区二区在线观看| 91国模大尺度私拍在线视频| 天天综合网天天综合色| 日韩欧美中文一区| 成人晚上爱看视频| 午夜久久久久久| 久久久91精品国产一区二区精品 | 日韩影院精彩在线| 精品日韩在线观看| 成人激情小说网站| 欧美午夜精品久久久| 美女精品一区二区| 国产精品视频你懂的| 欧美日韩一区不卡| 国产69精品一区二区亚洲孕妇| 一区二区三区在线视频观看| 日韩欧美国产麻豆| 色婷婷亚洲精品| 国产一区999| 亚洲成av人片一区二区| 国产精品色在线| 日韩免费高清av| 91福利视频网站| 成人av在线观| 激情久久五月天| 肉肉av福利一精品导航| 国产精品国产精品国产专区不蜜 | 国产视频一区在线观看| 欧美系列亚洲系列| 处破女av一区二区| 久久99久久99小草精品免视看| 最新中文字幕一区二区三区| 久久精品日韩一区二区三区| 91精品国产高清一区二区三区蜜臀| gogo大胆日本视频一区| 久久99久久99精品免视看婷婷 | 国产精一区二区三区| 首页国产欧美日韩丝袜| 一区二区三区中文字幕电影 | 99re成人精品视频| 国产麻豆精品久久一二三| 日韩一区欧美二区| 亚洲成人tv网| 亚洲国产一二三| 亚洲男人的天堂在线aⅴ视频 | 精品国产乱码久久久久久浪潮| 欧美三电影在线| 色综合婷婷久久| 白白色亚洲国产精品| 国产精品一区二区无线| 国产乱码精品一区二区三区五月婷| 日本特黄久久久高潮| 视频一区视频二区在线观看| 亚洲综合免费观看高清完整版在线| 一区二区三区资源| 亚洲国产cao| 亚洲超丰满肉感bbw| 亚洲大片在线观看| 日韩一区精品字幕| 久久成人免费日本黄色| 国产一区二区三区免费观看| 久久www免费人成看片高清| 美女mm1313爽爽久久久蜜臀| 青草国产精品久久久久久| 日韩av午夜在线观看| 免费成人深夜小野草| 久久成人综合网| 国产一区二区调教| 成人黄色在线网站| 色播五月激情综合网| 久久精品人人做| 色狠狠桃花综合| 欧美日韩精品久久久| 男人的天堂久久精品| 久久99精品一区二区三区三区| 激情综合色综合久久| 国产精品一二三四五| av动漫一区二区| 91福利视频久久久久| 日韩一级大片在线观看| 精品久久久网站| 成人国产亚洲欧美成人综合网 | 久久日韩粉嫩一区二区三区| 中文无字幕一区二区三区| 亚洲激情图片qvod| 日韩精品一级中文字幕精品视频免费观看 | |精品福利一区二区三区| 亚洲精品欧美综合四区| 日韩综合小视频| 国产精品乡下勾搭老头1| 91视视频在线观看入口直接观看www | 最新热久久免费视频| 曰韩精品一区二区| 奇米综合一区二区三区精品视频 | 久久国产精品99精品国产| 成人综合婷婷国产精品久久蜜臀| 91麻豆产精品久久久久久| 91精品国产黑色紧身裤美女| 国产精品视频一区二区三区不卡| 亚洲国产精品久久不卡毛片 | 国模套图日韩精品一区二区| 91视视频在线直接观看在线看网页在线看| 亚洲综合男人的天堂| 国产一区二区看久久| 色婷婷亚洲综合| 国产丝袜在线精品| 一区二区三区在线高清| 国产一本一道久久香蕉| 欧美性猛交xxxxxxxx| 国产女同互慰高潮91漫画| 亚洲成人av一区二区| 丁香桃色午夜亚洲一区二区三区| 69堂成人精品免费视频| 亚洲人吸女人奶水| 国产精品伊人色| 日韩一区二区三区视频在线观看| 成人欧美一区二区三区小说| 国产精品一区二区在线播放 | 精品视频在线免费观看| 国产日产精品1区| 蜜桃视频一区二区| 7777精品伊人久久久大香线蕉完整版| 欧美韩国日本不卡| 精油按摩中文字幕久久| 欧美电影一区二区| 夜夜精品视频一区二区| 91在线看国产| 中文字幕一区二区三区在线不卡| 国产真实乱对白精彩久久| 欧美一级午夜免费电影| 亚洲国产精品自拍| 色狠狠色狠狠综合| 亚洲精品视频在线观看免费| fc2成人免费人成在线观看播放 | 亚洲人成亚洲人成在线观看图片 | 极品少妇xxxx偷拍精品少妇| 欧美日韩久久久| 一区二区在线观看不卡| 色综合天天综合| 亚洲丝袜自拍清纯另类| 成人黄色在线网站| 亚洲欧美经典视频|