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

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

?? ne2kif.c

?? 自已寫的lwip+ucos程序已調通
?? C
?? 第 1 頁 / 共 2 頁
字號:
//yangye , 2003-1-21
//ne2k driver for lwip(OS independent)

#include "debug.h"
#include "opt.h"
#include "def.h"
#include "ip.h"
#include "mem.h"
#include "pbuf.h"
#include "sys.h"
#include "cc.h"
#include "ne2kif.h"
#include "etharp.h"
#include "../uhal/uhal.h"
#define __arch_putb(v,a)        (*(volatile unsigned char *)(a) = (v))
#define __arch_putl(v,a)        (*(volatile unsigned int  *)(a) = (v))
#define __arch_getb(a)          (*(volatile unsigned char *)(a))
#define __arch_getl(a)          (*(volatile unsigned int  *)(a))

#define outb(v,a)  __arch_putb(v,a)
#define inb(a)     __arch_getb(a)
//struct eth_hdr *ethhdr1;

struct RTL8019if {
  struct eth_addr *ethaddr;
  /* Add whatever per-interface state that is needed here. */
		 		 };
// qhy const struct eth_addr ethbroadcast = {0xff,0xff,0xff,0xff,0xff,0xff};
const struct eth_addr ethbroadcast = {0xff,0xff,0xff,0xff,0xff,0xff};
struct netif *rtl8019if_netif;   //points to the real netif ,used by ne2k_isr

static void ne2k_copyin(u16_t count, u8_t *buf);
static void ne2k_copyout(u16_t count, u8_t *buf);
static void ne2k_discard(u16_t count);
void ne2k_isr(void);
void qhyne2k(void);
static void low_level_init(struct netif * netif);
static struct pbuf * low_level_receive(struct RTL8019if *rtl8019if);
static err_t low_level_send(struct RTL8019if *rtl8019if,struct pbuf *p);
INT8U AA,BB,CC;
//INT8U TEMPHEAD[20];
//u8_t PDHeader[18];
/*
 * Read the specified number of bytes from the device DMA port into
 * the supplied buffer.
 */
static void ne2k_copyin(u16_t count, u8_t *buf)
{
  while(count--) {
   				 *buf++  = inb(NE_DMA);
  				 }
}

/*
 * Write the specified number of bytes from the device DMA port into
 * the supplied buffer.
 */ 
static void ne2k_copyout(u16_t count, u8_t *buf)
{
	while(count--) {
		outb(*buf++,NE_DMA);
				   }
}

/*
 * Pull the specified number of bytes from the device DMA port,
 * and throw them away.
 */
static void ne2k_discard(u16_t count)
{
	u8_t tmp;
	while(count--) {
		tmp = inb(NE_DMA);
	     		   }
}
void qhyne2k(void)
{

outb(0xff,NE_ISR);

}

// void NICISR(void) interrupt 
void ne2k_isr(void)
{
	u8_t  isr,curr,bnry;
	struct netif *netif;
	
	//close nic
	outb(CMD_PAGE0 | CMD_NODMA | CMD_STOP,NE_CR);

//uHALr_printf("QHY NE2K INTERUPT NE_CR=%x\n",inb(NE_CR));
	//in PAGE0
	isr = inb(NE_ISR);
 //uHALr_printf("NE_ISR=%x\n",isr);
	// ram overflow interrupt
	if (isr & ISR_OVW) {
		outb(ISR_OVW,NE_ISR);		// clear interrupt
	//	ne2k_overflowProcess();              //yangye :no overflow now 
	}
	
	// error transfer interrupt ,NIC abort tx due to excessive collisions	
	if (isr & ISR_TXE) {
		outb(ISR_TXE,NE_ISR);		// clear interrupt
	 	//temporarily do nothing
	}

	// Rx error , reset BNRY pointer to CURR (use SEND PACKET mode)
	if (isr & ISR_RXE) {
		outb(ISR_RXE,NE_ISR);		// clear interrupt
		
		outb(CMD_PAGE1 | CMD_NODMA | CMD_STOP,NE_CR);
		curr = inb(NE_CURR);
		outb(CMD_PAGE0 | CMD_NODMA | CMD_STOP,NE_CR);
		outb(curr, NE_BNRY);
	}
	
	//got packet with no errors
	if (isr & ISR_PRX) {
		// uHALr_printf("aaaaaaaaaaaaaa is isr_prx\n");
		
		outb(ISR_PRX, NE_ISR);		// clear interrupt

		outb(CMD_PAGE1 | CMD_NODMA | CMD_STOP, NE_CR);
		curr  =  inb(NE_CURR);
		outb(CMD_PAGE0 | CMD_NODMA | CMD_STOP, NE_CR);
		bnry = inb(NE_BNRY);
		//yangye 2003-1-21
		//get more than one packet until receive buffer is empty
		while(curr != bnry){
			// uHALr_printf("aaaaaaaaaaaaaa is isr_prx\n");

			ne2k_recv_packet(rtl8019if_netif);
			 //uHALr_printf("bbbbbbbbbbbbbbbb  is \n");

			outb(CMD_PAGE1 | CMD_NODMA | CMD_STOP, NE_CR);
			curr =  inb(NE_CURR);
			outb(CMD_PAGE0 | CMD_NODMA | CMD_STOP, NE_CR);
			bnry = 	inb(NE_BNRY);			
			}
	}
	
	
	//Transfer complelte, do nothing here
	if( isr & ISR_PTX){
		uHALr_printf("ne2k_isr: is ISR_PTX\n");
		outb(ISR_PTX, NE_ISR);          // clear interrupt
	}
		
	outb(CMD_PAGE0 | CMD_NODMA | CMD_STOP, NE_CR);
	outb(0xff, NE_ISR);			// clear ISR	
	
	//open nic for next packet
	outb(CMD_PAGE0 | CMD_NODMA | CMD_RUN, NE_CR);

	// uHALr_printf("the progame is NE2000CARD INTERUPTT \n");


}



/**
 * Initialize the rtk8019as, resetting the interface and getting the ethernet
 * address.
 */
static void SetRegPage(u8_t PageIdx)
{
	u8_t temp;
	temp=inb(NE_CR);
	temp=(temp&0x3b)|(PageIdx<<6);
	outb(temp,NE_CR);
}


static void low_level_init(struct netif * netif)
{
	u8_t i;
	struct RTL8019if *rtl8019if;
	u8_t mac_addr[6];
	
	outb(0x22, NE_CR);



	rtl8019if = netif->state;
	netif->hwaddr_len=6;
	netif->hwaddr[0]=0x03;
	netif->hwaddr[1]=0x01;
	netif->hwaddr[2]=0x00;
	netif->hwaddr[3]=0xea;
	netif->hwaddr[4]=0x48;
	netif->hwaddr[5]=0xf3;
	netif->mtu=1500;
	
	//netif->hwaddr_len=6;
	//yangye 2003-1-21
	//get mac addr from ne2k PROM
	//ft! sim_ne2k not support dma read now!
	//hack : manual write mac addr
	//{
	   mac_addr[0] = 0x03;
	   mac_addr[1] = 0x01;
	   mac_addr[2] = 0x00;
	   mac_addr[3] = 0xea;
	   mac_addr[4] = 0x48;
	   mac_addr[5] = 0xf3;
	//}
	//to do: add dam read for sim_ne2k
  	/* make up an address. */
  	rtl8019if->ethaddr->addr[0] = mac_addr[0];
  	rtl8019if->ethaddr->addr[1] = mac_addr[1];
  	rtl8019if->ethaddr->addr[2] = mac_addr[2];
  	rtl8019if->ethaddr->addr[3] = mac_addr[3];
  	rtl8019if->ethaddr->addr[4] = mac_addr[4];
  	rtl8019if->ethaddr->addr[5] = mac_addr[5];
	uHALr_printf("\nISEN2000MACADDR\n");

	
/*
 * Initialize physical device
 */
	//write and read 0x1f to reset the nic
	outb(0, NE_RESET);
	inb(NE_RESET);            
	for(i=0; i < 40; i++)		//delay at least 10ms
		;

	//in PAGE0
	outb(CMD_PAGE0 | CMD_NODMA | CMD_STOP, NE_CR);

	/* FIFO threshold = 8 bytes, normal operation, 8-bit byte write DMA, BOS=0 */
	outb(DCR_LS | DCR_FIFO8, NE_DCR);
	
	outb(0, NE_RBCR0);
	outb(0, NE_RBCR1);
	
#if	0   //yangye: don't use in skyeye , maybe later
/*
 * Promicuous receive(receive all the packets), including bad packets.
 */
	outb(RCR_AB | RCR_AM | RCR_SEP | RCR_PRO, NE_RCR);
#else
/*
 * Allow broadcast packets, in addition to packets unicast to us.
 * Multicast packets that match MAR filter bits will also be
 * allowed in.
 */
	outb(RCR_AB, NE_RCR);
#endif

	//Place the SNIC in LOOPBACK mode 1 or 2 (Transmit Configuration Register e 02H or 04H)
	outb(TCR_LOOP_INT, NE_TCR);

	outb(XMIT_START >> 8, NE_TPSR);
	outb(RECV_START >> 8, NE_PSTART);
	outb(RECV_START >> 8, NE_BNRY);
	outb(RECV_STOP >> 8, NE_PSTOP);
	//in PAGE1
	outb(CMD_PAGE1 | CMD_NODMA | CMD_STOP, NE_CR);
	outb(RECV_START >> 8, NE_CURR);

/*
 * Set physical address here.(not use 93c46)
 */

//SetRegPage(1);
	outb(0x03, NE_PAR0);
	outb(0x01, NE_PAR1);
	outb(0x00, NE_PAR2);
	outb(0xea, NE_PAR3);
	outb(0x48, NE_PAR4);
	outb(0xf3, NE_PAR5);

	
	//Clear multicast filters.(reject all multicast)
	//outb(0, NE_MAR0); outb(0, NE_MAR1);
	//outb(0, NE_MAR2); outb(0, NE_MAR3);
	//outb(0, NE_MAR4); outb(0, NE_MAR5);
	//outb(0, NE_MAR6); outb(0, NE_MAR7);
	
	//select PAGE0 and start the nic
	outb(CMD_PAGE0 | CMD_NODMA | CMD_RUN, NE_CR);
	//set Interrupt mask reg
	outb(ISR_OVW | ISR_TXE | ISR_PTX | ISR_PRX, NE_IMR);
	
	outb(TCR_LOOP_NONE, NE_TCR);
	//clear all interrupts
	outb(0xff, NE_ISR);

 	//enable at91 int 16 for sim_ne2k
	//enbale_net_irq;
	
 	rtl8019if_netif = netif;
}



/*
 * Function to do the actual writing of a packet into the devices
 * transmit buffer.  INT is disable during the function!!!!
 */
static err_t 
low_level_send(struct RTL8019if *rtl8019if,struct pbuf *p)
{
	struct pbuf *q;
	u8_t isr;

	u16_t padLength,packetLength;

/*
 * Set up to transfer the packet contents to the NIC RAM.
 */
	padLength = 0;
	packetLength = p->tot_len;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区喷汁尤物| 日韩三级中文字幕| 国产经典欧美精品| 狠狠色狠狠色合久久伊人| 天天色图综合网| 午夜伦欧美伦电影理论片| 午夜视频久久久久久| 亚洲午夜精品网| 天天爽夜夜爽夜夜爽精品视频| 午夜精品免费在线观看| 日韩av一区二区在线影视| 丝袜美腿亚洲综合| 麻豆91在线播放免费| 国内久久精品视频| 成人黄色在线看| 欧美专区在线观看一区| 在线不卡中文字幕| 精品久久久三级丝袜| 欧美激情中文不卡| 亚洲综合一区二区精品导航| 日韩精品1区2区3区| 久久精品国产一区二区三| 国产高清不卡二三区| 99精品视频在线观看免费| www.欧美日韩| 欧美丝袜第三区| 精品国产制服丝袜高跟| 国产精品乱码一区二三区小蝌蚪| 一二三区精品福利视频| 美国毛片一区二区| 99久久国产免费看| 欧美巨大另类极品videosbest | 777久久久精品| 国产校园另类小说区| 一区二区高清在线| 国产精品亚洲午夜一区二区三区| 色成年激情久久综合| 欧美不卡视频一区| 尤物av一区二区| 国产乱一区二区| 欧美美女网站色| 国产精品久久久久一区二区三区 | ●精品国产综合乱码久久久久| 亚洲高清免费视频| 顶级嫩模精品视频在线看| 一本大道久久a久久综合| 精品国产乱码久久久久久图片| 亚洲色图在线视频| 国产麻豆日韩欧美久久| 91麻豆精品久久久久蜜臀| 中文字幕欧美一| 狠狠狠色丁香婷婷综合久久五月| 欧美午夜影院一区| 1区2区3区国产精品| 精品一区二区三区日韩| 91九色02白丝porn| 国产精品短视频| 国产一区二区h| 久久综合色婷婷| 奇米777欧美一区二区| 欧美影视一区二区三区| 国产精品欧美一级免费| 国内精品视频一区二区三区八戒| 91麻豆精品国产91久久久久| 亚洲制服欧美中文字幕中文字幕| 成人久久18免费网站麻豆| 欧美一级爆毛片| 日韩电影在线观看一区| 欧美日韩一区小说| 亚洲一区二区三区国产| 91视频你懂的| 中文字幕字幕中文在线中不卡视频| 粉嫩久久99精品久久久久久夜| 久久一区二区视频| 国产精品中文字幕欧美| 久久久久久久av麻豆果冻| 国产一区二区女| 91麻豆精品国产自产在线观看一区| 亚洲一区二区偷拍精品| 日本高清视频一区二区| 依依成人综合视频| 欧美在线视频全部完| 亚洲一区二区三区四区在线观看| 精品视频999| 日韩av在线免费观看不卡| 欧美一级xxx| 日本不卡一区二区| 欧美精品一区二区三区蜜臀 | 欧美激情一区二区三区不卡| 国产精品乡下勾搭老头1| 国产欧美一区二区三区沐欲| 成人激情免费电影网址| 亚洲视频免费在线观看| 欧美日韩国产高清一区二区| 日韩成人伦理电影在线观看| 欧美成人在线直播| 国产精品538一区二区在线| 国产精品国产三级国产普通话三级| 91蜜桃网址入口| 亚洲成人精品影院| 精品国产免费一区二区三区四区| 国产一区不卡视频| 中文字幕一区二区三区在线不卡| 欧美亚洲国产一区二区三区va | 日韩一级大片在线| 精品在线免费观看| 欧美国产1区2区| 欧美日韩性生活| 国产又黄又大久久| 亚洲欧美电影一区二区| 337p亚洲精品色噜噜| 成人性生交大片免费看视频在线 | 国产欧美一区二区精品久导航 | 2020国产精品自拍| 色噜噜偷拍精品综合在线| 麻豆一区二区99久久久久| 国产精品欧美一级免费| 欧美久久免费观看| 国产精品1区2区3区在线观看| 一区二区欧美在线观看| 国产色产综合产在线视频| 欧美少妇xxx| 成人性生交大片免费看在线播放| 日韩电影在线观看一区| 亚洲伦理在线精品| 久久综合国产精品| 6080午夜不卡| 色天天综合色天天久久| 国产高清在线精品| 捆绑变态av一区二区三区| 一区二区久久久| 成人免费在线视频观看| 久久久久久久久久久久久夜| 欧美精品日韩一区| 在线视频一区二区三| www.欧美色图| 国产精品1区二区.| 黄页网站大全一区二区| 免费高清在线视频一区·| 亚洲午夜一区二区三区| 亚洲三级在线播放| 中文字幕一区在线| 国产精品视频线看| 欧美韩国日本一区| 国产午夜精品久久| 国产亚洲精品bt天堂精选| 欧美成人精品福利| 日韩视频中午一区| 欧美一区日本一区韩国一区| 欧美日韩和欧美的一区二区| 欧美视频一区二区三区在线观看| 色综合久久综合| 色综合天天综合网天天看片| 91色视频在线| 在线观看国产精品网站| 欧洲一区二区av| 欧美日韩中文字幕精品| 911精品国产一区二区在线| 欧美日韩国产123区| 欧美日韩精品是欧美日韩精品| 91久久精品一区二区三区| 日本韩国一区二区| 欧美日本一道本| 欧美mv日韩mv国产| 久久久欧美精品sm网站| 国产欧美日韩精品a在线观看| 国产女人18毛片水真多成人如厕| 国产精品毛片高清在线完整版| 国产精品情趣视频| 亚洲久本草在线中文字幕| 亚洲高清免费一级二级三级| 激情六月婷婷久久| 国产精品一区二区果冻传媒| av在线播放不卡| 欧美视频精品在线| 精品国产一区二区亚洲人成毛片 | 欧美在线观看视频一区二区| 欧美精品日韩一区| 久久网站热最新地址| 亚洲色图一区二区| 午夜精品123| 国产精品一品二品| 色视频欧美一区二区三区| 欧美成人精品福利| 亚洲欧美日韩国产成人精品影院| 免费高清在线视频一区·| 波多野结衣中文字幕一区二区三区| 欧美熟乱第一页| 国产欧美一区二区在线观看| 亚州成人在线电影| 国产麻豆精品一区二区| 欧美吻胸吃奶大尺度电影| 日韩欧美精品在线| 亚洲女人****多毛耸耸8| 久久精品免费看| 在线观看一区日韩| 国产精品欧美一区喷水| 日本成人在线不卡视频| 色先锋aa成人| 国产欧美日韩在线观看|