📄 ne2000.h
字号:
/********************************************************************
* File: Ne2000.h
*
* Copyright: Peak Microtech Corporation
*
*******************************************************************/
#ifndef _NE2000_H#define _NE2000_H#define uint unsigned short#define uchar unsigned char#define ulong unsigned intunion u { unsigned int word; struct{unsigned char high;unsigned char low;}bytes; };union w { ulong dwords; struct {uint high ;uint low;}words; struct {uchar byte3;uchar byte2;uchar byte1;uchar byte0;}bytes; };union Ethernet_Address_Type{ uint words[3]; uchar bytes[6]; };union Ip_Address_Type{ unsigned int dwords; unsigned short words[2]; unsigned char bytes[4]; };struct ethernet { uchar RecStatus; uchar NextPage; uint length; uint DestMacId[3]; uint SourceMacId[3]; uint NextProtocal; uchar packet[1518]; } ;struct retransmit {uchar RtStatus; uchar timeout; uint length; uint DestMacId[3]; uint SourceMacId[3]; uint NextProtocal; uchar packet[1518]; } ;struct ip { uint EtherHead[9]; uchar VerandIphLen; uchar ServerType; uint TotalLen; uint FrameIndex; uint Segment; uchar ttl; uchar NextProtocal; uint Crc; uint SourceIp[2]; uint DestId[2]; uchar packet[1498]; };struct IpPacket { uint EtherHead[9]; uint IpPacket[720]; };struct arp { uint EtherHead[9]; uint HardwareType; uint ProtocalType; uchar HardwareLen; /*=0X06*/ uchar ProtocalLen; /*=0X04*/ uint Operation; uint SourceMacId[3]; uint SourceIp[2]; uint DestMacId[3]; uint DestId[2]; };struct icmp { uint EtherHead[9]; uint IpHead[10]; uchar type; uchar option; uint Crc; uint id; uint seq; uchar icmpdata[1478]; };struct tcp { uint EtherHead[9]; uint IpHead[10]; uint SourcePort; uint DestPort; ulong SeqNum; ulong AckNum; uchar offset; uchar control; uint window; uint Crc; uint urg; uchar tcpdata[1478]; };struct udp { uint EtherHead[9]; uint IpHead[10]; uint SourcePort; uint DestPort; uint length; uint Crc; uchar udpdata[1478]; }; union Netcard {struct {uchar bytebuf[1536];}bytes; struct {uint wordbuf[768];}words; struct ethernet EtherFrame; struct retransmit ResendFrame; struct arp ArpFrame; struct icmp IcmpFrame; struct tcp TcpFrame; struct ip IpFrame; struct udp UdpFrame; struct IpPacket IpPacket; };struct Socket_Type{ uint My_Port; uint Dest_Port; uint Dest_Ip[2]; uint Dest_Mac_Id[3]; ulong IRS; ulong ISS; ulong Rcv_Next; ulong Send_Next; ulong Sent_UnAck; uint Rcv_Window; uint Snd_Window; uint Dest_Max_Seg_Size; uint My_Max_Seg_Size; ulong My_Wl1; //seq ulong My_Wl2; //ack uchar State; uchar Open; };/*tcp state define */#define TCP_STATE_LISTEN 0#define TCP_STATE_SYN_RCVD 1#define TCP_STATE_SYN_SENT 2#define TCP_STATE_ESTABLISHED 3#define TCP_STATE_FIN_WAIT1 4#define TCP_STATE_FIN_WAIT2 5#define TCP_STATE_CLOSING 6#define TCP_STATE_CLOSE_WAIT 7#define TCP_STATE_LAST_ACK 8#define TCP_STATE_CLOSED 9#define TCP_STATE_TIME_WAIT 10//tcp connect flag#define TCP_FIN 0x01#define TCP_SYN 0x02#define TCP_RST 0x04#define TCP_PSH 0x08#define TCP_ACK 0x10#define TCP_URG 0x20
// About 8019as define// 8019 register base address#define REG_NET_BASE 0x01300000 // PCS3#/* Page 0 register offsets. */#define REG_NET_CR (0x00<<1)#define REG_NET_CLDA0 (0x01<<1)#define REG_NET_PSTART (0x01<<1)#define REG_NET_CLDA1 (0x02<<1)#define REG_NET_PSTOP (0x02<<1)#define REG_NET_BNRY (0x03<<1)#define REG_NET_TSR (0x04<<1)#define REG_NET_TPSR (0x04<<1)#define REG_NET_NCR (0x05<<1)#define REG_NET_TBCR0 (0x05<<1)#define REG_NET_FIFO (0x06<<1)#define REG_NET_TBCR1 (0x06<<1)#define REG_NET_ISR (0x07<<1)#define REG_NET_CRDA0 (0x08<<1)#define REG_NET_RSAR0 (0x08<<1)#define REG_NET_CRDA1 (0x09<<1)#define REG_NET_RSAR1 (0x09<<1)#define REG_NET_8019ID0 (0x0A<<1)#define REG_NET_RBCR0 (0x0A<<1)#define REG_NET_8019ID1 (0x0B<<1)#define REG_NET_RBCR1 (0x0B<<1)#define REG_NET_RSR (0x0C<<1)#define REG_NET_RCR (0x0C<<1)#define REG_NET_CNTR0 (0x0D<<1)#define REG_NET_TCR (0x0D<<1)#define REG_NET_CNTR1 (0x0E<<1)#define REG_NET_DCR (0x0E<<1)#define REG_NET_CNTR2 (0x0F<<1)#define REG_NET_IMR (0x0F<<1)#define REG_NET_DMAPORT (0x10<<1)#define REG_NET_RSTPORT (0x18<<1)/* Page 1 register offsets. */#define REG_NET_PAR0 (0x01<<1)#define REG_NET_PAR1 (0x02<<1)#define REG_NET_PAR2 (0x03<<1)#define REG_NET_PAR3 (0x04<<1)#define REG_NET_PAR4 (0x05<<1)#define REG_NET_PAR5 (0x06<<1)#define REG_NET_CURR (0x07<<1)#define REG_NET_MAR0 (0x08<<1)#define REG_NET_MAR1 (0x09<<1)#define REG_NET_MAR2 (0x0A<<1)#define REG_NET_MAR3 (0x0B<<1)#define REG_NET_MAR4 (0x0C<<1)#define REG_NET_MAR5 (0x0D<<1)#define REG_NET_MAR6 (0x0E<<1)#define REG_NET_MAR7 (0x0F<<1)/* Page 2 register offsets. */#define REG_NET_PSTART (0x01<<1)#define REG_NET_PSTOP (0x02<<1)#define REG_NET_TPSR (0x04<<1)#define REG_NET_RCR (0x0C<<1)#define REG_NET_TCR (0x0D<<1)#define REG_NET_DCR (0x0E<<1)#define REG_NET_IMR (0x0F<<1)/* Page 3 register offsets. */#define REG_NET_9346CR (0x01<<1)#define REG_NET_BPAGE (0x02<<1)#define REG_NET_CONFIG0 (0x03<<1)#define REG_NET_CONFIG1 (0x04<<1)#define REG_NET_CONFIG2 (0x05<<1)#define REG_NET_CONFIG3 (0x06<<1)#define REG_NET_TEST (0x07<<1)#define REG_NET_CSNSAV (0x08<<1)#define REG_NET_HLTCLK (0x09<<1)#define REG_NET_INTR (0x0B<<1)#define REG_NET_FMWP (0x0C<<1)#define REG_NET_CONFIG4 (0x0D<<1)/* Register accessed at REG_NET_CR , the 8019as control addr. */#define CR_STP 0x01 /* Stop and reset the chip */#define CR_STA 0x02 /* Start the chip, clear reset */#define CR_TXP 0x04 /* Transmit a frame */#define CR_RD0 0x08 /* Remote read */#define CR_RD1 0x10 /* Remote write */#define CR_RD2 0x20 /* Remote DMA */#define CR_PS0 0x40 /* Select page chip registers */#define CR_PS1 0x80 /* using the two high-order bits *//* Bits in REG_NET_ISR *//* |RST(7)|RDC(6)|CNT(5)|OVW(4)|TXE(3)|RXE(2)|PTX(1)|PRX(0)| */#define ISR_PRX 0x01 /* Receiver, no error */#define ISR_PTX 0x02 /* Transmitter, no error */#define ISR_RXE 0x04 /* Receiver, with error */#define ISR_TXE 0x08 /* Transmitter, with error */#define ISR_OVW 0x10 /* Receiver overwrote the ring */#define ISR_CNT 0x20 /* Counters need emptying */#define ISR_RDC 0x40 /* remote dma complete */#define ISR_RST 0x80 /* Reset completed *//* Bits in received packet status byte and REG_NET_RSR */#define RSR_PRX 0x01 /* Received a good packet */#define RSR_CRC 0x02 /* CRC error */#define RSR_FAE 0x04 /* frame alignment error */#define RSR_FO 0x08 /* FIFO overrun */#define RSR_MPA 0x10 /* missed pkt */#define RSR_PHY 0x20 /* physical/multicast address */#define RSR_DIS 0x40 /* receiver disable. set in monitor mode */#define RSR_DEF 0x80 /* deferring *//* Transmitted packet status, PG0_TSR. */#define TSR_PTX 0x01 /* Packet transmitted without error */#define TSR_ND 0x02 /* The transmit wasn't deferred. */#define TSR_COL 0x04 /* The transmit collided at least once. */#define TSR_ABT 0x08 /* The transmit collided 16 times, and was deferred. */#define TSR_CRS 0x10 /* The carrier sense was lost. */#define TSR_FU 0x20 /* A "FIFO underrun" occurred during transmit. */#define TSR_CDH 0x40 /* The collision detect "heartbeat" signal was lost. */#define TSR_OWC 0x80 /* There was an out-of-window collision. */// IO operation#define netreadb( _ADDR_ ) readb(REG_NET_BASE + _ADDR_ ) #define netwriteb( _ADDR_ , _DATA_ ) writeb( ( REG_NET_BASE + _ADDR_ ), _DATA_ )#define netreadw( _ADDR_ ) readw(REG_NET_BASE + _ADDR_ )#define netwritew( _ADDR_ , _DATA_ ) writew( ( REG_NET_BASE + _ADDR_ ) , _DATA_ )#define netreadl( _ADDR_ ) readl(REG_NET_BASE+ _ADDR_ )#define netwritel( _ADDR_ , _DATA_ ) writel( ( REG_NET_BASE + _ADDR_ ), _DATA_ )#endif /* _NE2000_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -