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

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

?? 8019as.c

?? dsp下網絡通信實驗,很有用哦.平臺為DSP54
?? C
?? 第 1 頁 / 共 2 頁
字號:
	
	/*9. init CURR */
	PG1_CURR = NIC_RCV_MIN_PG;

	/*10. put NIC in START mode and for page 0(=22h) */
	PG0123_CMD = 0x22;

	/*11. init Transmit Cfg Reg */
	PG0_TCR = 0xE0;

	/*12. disable NIC LOOPBACK mode */
	PG0_DCR = 0xCB;
	
	/*13. now the NIC rdy for tx and rcv */

	/* detemine NIC mode */
	PgSelect(3);
	
	if(PG3_CONFIG0 & 0x08){
		tt=tt;
		Msg("Jump mode");
	}else{  /*jumpless mode*/
		if(PG3_CONFIG0 & 0x10 || PG3_CONFIG3 & 0x80){
			Msg("PNP mode");
			tt=tt;
		}else{
			Msg("RT Jumpless mode");
			tt=tt;
		}
	}
	
	/* before writing to the Page3 Config1-3 registers, Bit7,6 of 9346CR must be 11b */
	PG3_9346CR = PG3_9346CR | 0xC0;
	
	/* IRQ enable,int0,base=0x300 */
	PG3_CONFIG1 = 0x80;
	
	/* Medium Type os TP/CX auto-detect(10BaseT link test is enable)*/
	PG3_CONFIG2 = 0x00;
	
	/* BSELB, This bit, when set, forces the BROM disabled */
	PG3_CONFIG2 = 0x20;/* make sure that NIC is not Sleep/PWRDN/ACTIVEB mode */
	PG3_CONFIG3 = 0x00;

	/* prevent writing to Page3 Config1-3 registers */
	PG3_9346CR = PG3_9346CR & 0x0F;
	Delay(0xf);		/* wait for NIC detecting medium type automatically */

	if(PG3_CONFIG3 & 0x40){
		Msg("NIC in full duplex mode");
		tt=tt;
	}else{
		Msg("NIC in half duplex mode");
		tt=tt;
	}
	
	Msg("NIC in auto detect mode");
	tt=tt;
	
	if(PG3_CONFIG0 & 0x04){
   	
		Msg("test failure,set medium type 10Base2 by default");
		tt=tt;
	}else{
		Msg("test success,medium type 10BaseT");
		tt=tt;
	}
	PgSelect(0);
	return 0;
}
/*
 ***********************************************************************************************
 *
 ***************************************************
*/
static void WaitRDMAOperationDone(void)
{
	int i = 0;
	PgSelect(0);

	while(!(PG0_ISR & PG0_ISR_RDC) && i < 300)
		i++;	/* loop until Remote DMA Reading done or force to break the loop */
	if (i <300)
		PG0_ISR = PG0_ISR_RDC;
	else {
		/* RDMA not complete */ 
		Msg("WaitRDMAOperationDone() >> force to brak loop due to i is 300 at least");
	}
}
/*
 ***********************************************************************************************
 * NIC_ISR,the interrupt handler
 ***************************************************
*/
interrupt void NIC_ISR(void){
//	unsigned char isr;
    unsigned int isr;

	PgSelect(0);
	isr = PG0_ISR;
	if(isr & PG0_ISR_OVER){
		tt=tt;
	}
	if(isr & PG0_ISR_TX_ERR){
		tt=tt;
	}
	if(isr & PG0_ISR_RX_ERR){
		tt=tt;
	}	
	if(isr & PG0_ISR_PRX){
	    NIC_RcvFrame();
	    tt=tt;
	}
	if(isr & PG0_ISR_PTX){
		IsTxOk=1;
	}	
	
	/* clear ISR */
	PgSelect(0);
	PG0_ISR = 0xFF;
 
	/* enable all intr */ 
/*	PgSelect(3);
	PG3_9346CR = PG3_9346CR | 0xC0;
	PG3_CONFIG1 = PG3_CONFIG1 | 0x80;
	PG3_9346CR = PG3_9346CR & 0x3F;

    PgSelect(0);
*/

}
/*
 *****************************************************************************************
 * NIC_TxFrame,transfer ethernet frame out
 ******************************************************************************************
*/
void NIC_TxFrame(void){
	int l,i;
	/* if NIC being Tx some frame ,return */
	if(PG0123_CMD & 0x04)
		return;
	/* if no data left to Tx,return */
	if(AppDataLen == 0)
		return;
	/* disable all interrupt */
//	DISABLE_INT;
	
	/* copy data from host mem to NIC local mem */
	PgSelect(0);
	PG0_RSARHI = NIC_TX_MIN_PG;
	PG0_RSARLO = 0x00;

	PG0_RBCRLO = (SendDataLen << 1);
	PG0_RBCRHI = 0x00;
	/* enable remote write */
	PG0123_CMD = (CR_PAGE0|CR_RWRITE|CR_START);
	l = SendDataLen;
	for(i=0;i<l;i++){
		port9310 = SendDataBuf[i];
	}
	
	/* wait for DMA operation done */
	WaitRDMAOperationDone();

	/* ok,now enable the NIC to Tx the data frame */ 
	PG0_TPSR = NIC_TX_MIN_PG;
	PG0_TBCRLO = SendDataLen << 1;
	PG0_TBCRHI = 0x00;
	/* NIC start transmission */
	PG0123_CMD = (CR_PAGE0 | CR_NODMA | CR_TRANS | CR_START);
	
	/* enable all intr */ 
/*	PgSelect(3);
	PG3_9346CR = PG3_9346CR | 0xC0;
	PG3_CONFIG1 = PG3_CONFIG1 | 0x80;
	PG3_9346CR = PG3_9346CR & 0x3B;
    	PgSelect(0);
    	*/

ENABLE_INT;
}
/*
 ****************************************************************************************
 * NIC_RcvFrame,receive frame in
 ****************************************************************************************
 */
void NIC_RcvFrame(void)
{
	int l,i;
	int bCanReadNICData=1;
	u16_t Pg1CurrValue,Pg0BoundaryValue,framelen;
	typedef	struct _ethh{
		u16_t	nextpage_status;
		u16_t	lenhighbyte_lenlowbyte;
	}ethh;
	ethh ethhh;
	/* get NIC write and read Ptr */ 
	PgSelect(1);
	Pg1CurrValue = PG1_CURR;
	PgSelect(0);
	Pg0BoundaryValue = PG0_BNDRY;
	
	/* now,check if there have data come in */
	while(1){
		/* Rcv buf is empty ? */
		if(Pg0BoundaryValue == Pg1CurrValue){
		 	break;
		}
		
		/* ok,have data in,then get the NIC Rcv buf index */
		PG0_RSARLO = 0x00;
		PG0_RSARHI = Pg0BoundaryValue;
		PG0_RBCRHI = 0x00;
		/* 4 byte ,|Status(first)|NextPage(second)|LenLowByte(third)|LenHighByte(...)| */
		PG0_RBCRLO = 0x04;
		PG0123_CMD = CR_PAGE0|CR_RREAD|CR_START;

		ethhh.nextpage_status=port9310;
		ethhh.lenhighbyte_lenlowbyte=port9310;
		framelen=ethhh.lenhighbyte_lenlowbyte-4;//discard the first 4 byte;

		/* check NextPage */
		if((ethhh.nextpage_status>>8) > NIC_RCV_MAX_PG || (ethhh.nextpage_status>>8) <NIC_RCV_MIN_PG){
			/* error */
			if(bCanReadNICData){
				/* try to read rcv data again */
				bCanReadNICData=0;
				continue;
			}else{
				/* ignor all frame */
				PG0_BNDRY = Pg1CurrValue;
				return;
			}
		}
		
		/* wait for DMA operaiton done */
		
		/* check data len */
		if(framelen> ETH_FRAME_LEN){
			/* len error,then discard the current rcved frame */
			PG0_BNDRY = ethhh.nextpage_status >> 8;
			Pg0BoundaryValue=(ethhh.nextpage_status>>8);
			continue;
		}
		
		/* ok,copy rcved Ethernet frame to host mem */ 
		PG0_RSARLO = 0x00 + 0x04;	//discard the 4 byte above
		PG0_RSARHI = Pg0BoundaryValue;
		PG0_RBCRHI = framelen >> 8;
		PG0_RBCRLO = framelen & 0x00FF;

		PG0123_CMD = CR_PAGE0|CR_RREAD|CR_START;
		l=framelen;
		l=l+1;
		l=l >> 1;l=l;l=l;
		l=l; 
		for(i=0;i<l;i++){
			RcvDataBuf[i]=port9310;
		}
		RcvDataLen = framelen;
		for(i = 0;i<l;i++){
			RcvDataBuf[i] = ntohs(RcvDataBuf[i]);
		}
		/* wait for DMA operation done */
	    WaitRDMAOperationDone();
	    /* now the Ethernet frame have put in the host mem,then careful analysis it */
	    parseit();	
	    /* next */
	    Pg0BoundaryValue=(ethhh.nextpage_status>>8);
	    PG0_BNDRY = (ethhh.nextpage_status>>8);
	    bCanReadNICData=1;
	}	/* end while(1) */
}
	
/*
 ***************************************************************************************
 * main,the program entry point
 ***************************************************************************************
*/
void main(){

    int nettemp;
    
	cpu_ini();
//	StartTimer();
	//write then read i/o port 8009h to reset NIC
	  
//--------- 
	port800d = 0xffff;
	Delay(0x2);
	nettemp = port800d;
	Delay(0x2);
	NIC_reset();
	
	NIC_init();
	while(1){
		application();
	}
}
/*
 * ********************************************************************
 * SendData,user application call it to send data
 * pappdata --->the application data buf
 * paadatalen ---->application data len
 * return send ok?
 * depend on AppSendDataID,SendDabaBuf,SendDataLen,IsTxOk,
 * ********************************************************************
 */
#define	UDP_MAX_LEN	10


u16_t SendData(u16_t *pappdata,u16_t appdatalen){
	long	timeout = 0;
	u16_t	appdata_len_left;
	u16_t	cnt = 0;
	u16_t	token[3];
	appdata_len_left = appdatalen;

	//1, send the TOKEN_SEND_DATA

	token[0] = TOKEN_SEND_DATA;
	token[1] = appdatalen << 1;
	token[2] = AppSendDataID;	//indicate whick app data
	SendDataLen = totalmake(&SendDataBuf[0],&token[0],3,NULL,0);
DISABLE_INT;
	NIC_TxFrame();
//	while(IsTxOk == 0){
//		;
//	}
	IsTxOk = 0;
	AppSendDataID++;
	
	//2, send data
	while(appdata_len_left > 0){
		if(appdata_len_left >= UDP_MAX_LEN){
			appdatalen = UDP_MAX_LEN;
		}else
			appdatalen = appdata_len_left;
		//construct protocoled data
		token[0] = TOKEN_DATA;
		token[1] = cnt;
		token[2] = appdatalen << 1;//the true application data length
		SendDataLen = totalmake(&SendDataBuf[0],pappdata,appdatalen,&token[0],3);
		//send it
DISABLE_INT;
		NIC_TxFrame();
//		while(IsTxOk == 0){
//			;
//		}
		IsTxOk = 0;
		cnt++;
		if(appdata_len_left >= UDP_MAX_LEN){
			appdata_len_left -= UDP_MAX_LEN;
			pappdata += UDP_MAX_LEN;
		}else
			break;
	}

	//3,wait for status return,are it send ok,are the app data id ok?
//	timeout = time;
	while(!SendOk){
		if(timeout++ > 0xff)
			return 1;
	}
	return 1;	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲少妇30p| 成人avav影音| 色噜噜狠狠成人网p站| 国产精品青草久久| 激情文学综合丁香| 精品国产伦一区二区三区观看方式| 久久先锋影音av| 一区二区在线观看av| 不卡电影一区二区三区| 中文字幕欧美三区| 成人精品高清在线| 国产精品美日韩| 99久久综合国产精品| 亚洲欧美另类小说视频| 99精品国产99久久久久久白柏| 国产精品久久三区| 国产又粗又猛又爽又黄91精品| 日韩欧美成人一区二区| 韩国v欧美v日本v亚洲v| 日韩一区二区在线播放| 久久99精品国产.久久久久| 欧美v亚洲v综合ⅴ国产v| 国产一区二区三区在线观看免费| 久久精品网站免费观看| 国产麻豆精品95视频| 日本一区二区动态图| 色综合久久久久综合99| 国产精品久久久久久久久快鸭| av成人老司机| 亚洲成av人片在线| 久久综合久久综合久久综合| 成人一区二区三区中文字幕| 亚洲精品中文字幕乱码三区| 色噜噜夜夜夜综合网| 日本特黄久久久高潮| 日韩免费视频一区| 成人福利视频网站| 亚洲精品五月天| 91精品蜜臀在线一区尤物| 日韩高清不卡在线| 国产日韩精品一区| 欧美v国产在线一区二区三区| 91在线国内视频| 国产综合久久久久久久久久久久| 亚洲综合免费观看高清完整版 | 色成人在线视频| 国产专区欧美精品| 日韩制服丝袜先锋影音| 亚洲日本在线天堂| 国产日韩精品久久久| 欧美成人aa大片| 欧美伦理电影网| 色婷婷av一区二区三区gif| 国产精品1区2区3区| 麻豆成人在线观看| 午夜精品久久久久久久 | 91黄色免费版| 国产91丝袜在线观看| 激情综合五月婷婷| 日本怡春院一区二区| 亚洲国产成人高清精品| 亚洲精品一二三| 亚洲免费观看高清完整版在线观看 | 国产精品卡一卡二| 久久久久久97三级| 久久亚洲一区二区三区四区| 欧美一卡二卡三卡| 欧美一三区三区四区免费在线看| 欧美无砖专区一中文字| 色婷婷久久综合| 99久久99久久免费精品蜜臀| 东方欧美亚洲色图在线| 国产成人自拍在线| 成人做爰69片免费看网站| 粉嫩av一区二区三区粉嫩| 春色校园综合激情亚洲| 成人午夜在线视频| a亚洲天堂av| 色综合av在线| 欧美性xxxxxx少妇| 欧美日韩一级黄| 欧美一级理论片| 精品国产免费视频| 国产欧美一区二区在线| 亚洲天堂精品视频| 一区二区三区资源| 视频一区二区三区入口| 久久国产精品色| 成人理论电影网| 91在线视频18| 欧美日韩国产在线观看| 日韩欧美在线一区二区三区| 久久久久久综合| 国产精品成人午夜| 亚洲综合区在线| 久久激五月天综合精品| 国产在线视视频有精品| 懂色av一区二区三区免费看| 91蜜桃传媒精品久久久一区二区| 日本高清免费不卡视频| 91精品国产aⅴ一区二区| 国产亚洲精品超碰| 亚洲精品免费在线| 日本va欧美va精品发布| 国产精品一区二区无线| 91色porny| 91精品国产综合久久精品| 久久久一区二区| 亚洲精品五月天| 久久精品国产秦先生| youjizz久久| 日韩三级视频在线看| 国产精品女主播在线观看| 亚洲福利视频三区| 国产精品影视网| 欧美日精品一区视频| 26uuu精品一区二区| 亚洲美女区一区| 国产中文一区二区三区| 在线观看日韩精品| 久久一留热品黄| 亚洲gay无套男同| 高清不卡一区二区在线| 欧美一级在线免费| 亚洲欧美日韩国产一区二区三区| 精油按摩中文字幕久久| 91福利在线免费观看| 日本一区二区三区四区| 日本午夜精品一区二区三区电影| www.欧美日韩国产在线| 日韩欧美在线影院| 亚洲成人免费在线| 成人美女视频在线看| 欧美不卡123| 亚洲国产精品久久一线不卡| 国产高清不卡一区| 精品三级av在线| 亚洲不卡一区二区三区| 岛国av在线一区| 精品国产免费人成电影在线观看四季 | 国产午夜亚洲精品不卡| 日本不卡一二三| 欧美日韩五月天| 亚洲欧美视频在线观看视频| 国产成人三级在线观看| 欧美一级黄色片| 日韩精品免费专区| 99精品一区二区三区| 欧美极品xxx| 看片的网站亚洲| 在线播放中文一区| 亚洲成av人综合在线观看| 色嗨嗨av一区二区三区| 亚洲男人的天堂av| 91色|porny| 中文字幕在线观看不卡视频| 国产91在线看| 国产精品久久久久影院色老大| 国产伦精品一区二区三区免费迷 | 国产麻豆成人传媒免费观看| 欧美videos中文字幕| 日韩二区在线观看| 欧美日韩高清一区| 日日骚欧美日韩| 欧美一区二区精品在线| 奇米亚洲午夜久久精品| 欧美一区二区在线看| 青青草精品视频| 欧美成人综合网站| 久久丁香综合五月国产三级网站| 91精品国产综合久久久蜜臀粉嫩| 水蜜桃久久夜色精品一区的特点 | 欧美一级免费大片| 精品亚洲porn| 精品不卡在线视频| 国产精品亚洲视频| 国产精品乱码妇女bbbb| 99热在这里有精品免费| 自拍视频在线观看一区二区| 在线亚洲免费视频| 午夜av一区二区三区| 精品美女在线播放| 国产不卡视频一区| 日韩毛片一二三区| 欧洲一区在线电影| 日本欧美韩国一区三区| 久久久亚洲综合| 99久久99久久精品国产片果冻 | 首页国产欧美日韩丝袜| 精品乱码亚洲一区二区不卡| 高清在线成人网| 亚洲国产日韩a在线播放性色| 4438x亚洲最大成人网| 国内成人精品2018免费看| 欧美激情一区二区三区四区 | 国产一区二区0| 亚洲男女一区二区三区| 91精品国产91久久久久久一区二区| 国内精品伊人久久久久av一坑 | 中文字幕av一区二区三区高 |