📄 rtl8019a.h
字号:
#define PAGE 0x44
/*register declarations for RTL8019AS */
/*Page0(PS1=0,PS0=0) */
/*RD */
#define CR port2000
/*Command*/
#define CLDA0 port2001
/*Curent Local DMA Address 0*/
#define CLDA1 port2002
/*Curent Local DMA Address 1*/
#define BNRY port2003
/*Boundary Pointer*/
#define TSR port2004
/*Transmit Status Register*/
#define NCR port2005
/*Number of Collisions Register*/
#define FIFO port2006
#define ISR port2007
/*Interrupt Status Register*/
#define CRDA0 port2008
/*Current Remote DMA Address 0*/
#define CRDA1 port2009
/*Current Remote DMA Address 1*/
#define CRD0 port200A
/*Configuration Register A*/
#define CRD1 port200B
/*Configuration Register B*/
#define RSR port200C
/*Receive status Register*/
#define CNTR0 port200D
/*Tally Counter 0(Frame Alignment Errors)*/
#define CNTR1 port200E
/*Tally Counter 1(CRC Errors)*/
#define CNTR2 port200F
/*Tally Counter 2(Missed packet Errors)*/
/*WR */
#define PSTART port2001
/*Page Start Register*/
#define PSTOP port2002
/*Page stop Regiser*/
#define TPSR port2004
/*Transmit Page Start Address*/
#define TBCR0 port2005
/*Transmit Byte Count Register 0*/
#define TBCR1 port2006
/*Transmit Byte Count Register 1*/
#define RSAR0 port2008
/*Remote Start Address Register 0*/
#define RSAR1 port2009
/*Remote Start Address Register 1*/
#define RBCR0 port200A
/*Remote Byte Count Register 0*/
#define RBCR1 port200B
/*Remote Byte Count Register 1*/
#define RCR port200C
/*Receive Configuration Register*/
#define TCR port200D
/*Transmit Configuration Register*/
#define DCR port200E
/*Data Configuration Register*/
#define IMRR port200F
/*Interrupt Mask Register*/
/*Page1(PS1=0,PS0=1) */
#define CR port2000
/*Command*/
#define PAR0 port2001
/*Physical Address Register 0*/
#define PAR1 port2002
/*Physical Address Register 1*/
#define PAR2 port2003
/*Physical Address Register 2*/
#define PAR3 port2004
/*Physical Address Register 3*/
#define PAR4 port2005
/*Physical Address Register 4*/
#define PAR5 port2006
/*Physical Address Register 5*/
#define CURR port2007
/*Current Page Register */
#define MAR0 port2008
/*Multicast Address Register 0*/
#define MAR1 port2009
/*Multicast Address Register 1*/
#define MAR2 port200A
/*Multicast Address Register 2*/
#define MAR3 port200B
/*Multicast Address Register 3*/
#define MAR4 port200C
/*Multicast Address Register 4*/
#define MAR5 port200D
/*Multicast Address Register 5*/
#define MAR6 port200E
/*Multicast Address Register 6*/
#define MAR7 port200F
/*Multicast Address Register 7*/
/*Page 2(PS1=1,PS0=0)*/
/*page 3(PS1=1,PS0=0)*/
#define DMA port2010
#define ARP 1
#define UDP 2
#define IGMP 3
#define LSS 4
#define BROADCAST 1
#define REC_ARP 2
#define NOD 3
/*Configuration Register D*/
/*NOTE: */
/* Some registers in page 2 are complementary to the registers in */
/* page 0. */
/* Page0 RD WR */
/* 0X01 CLDA0 PSTART */
/* 0X02 CLDA1 PSTOP */
/* 0X04 TPSR */
/* 0X0C RCR */
/* 0X0D TCR */
/* 0X0E DCR */
/* 0X0F IMR */
struct ipaddr
{
unsigned short addr2_1;
unsigned short addr4_3;
};
struct mac
{
unsigned short addr2_1;
unsigned short addr4_3;
unsigned short addr6_5;
};
struct iphdr
{
unsigned short tos_version;
unsigned short tol_len;
unsigned short id;
unsigned short frag_off;
unsigned short protocal_ttl;
unsigned short chksum;
struct ipaddr saddr;
struct ipaddr daddr;
};
struct udphdr
{
unsigned short sport;
unsigned short dport;
unsigned short length;
unsigned short chksum;
};
struct igmphdr
{
unsigned short type_mrt;
unsigned short chksum;
struct ipaddr groupaddr;
};
struct pre_udphdr
{
struct ipaddr saddr;
struct ipaddr daddr;
unsigned short protocal_value;
unsigned short length;
};
struct arp
{
unsigned short hard_type;
unsigned short proto_type;
unsigned short proto_hard_length;
unsigned short op_code;
struct mac send_macaddr;
struct ipaddr send_ipaddr;
struct mac rec_macaddr;
struct ipaddr rec_ipaddr;
};
ioport unsigned short CR;
ioport unsigned short CLDA0;
ioport unsigned short CLDA1;
ioport unsigned short BNRY;
ioport unsigned short TSR;
ioport unsigned short NCR;
ioport unsigned short FIFO;
ioport unsigned short ISR;
ioport unsigned short ISR;
ioport unsigned short CRDA0;
ioport unsigned short CLDA1;
ioport unsigned short CRD0;
ioport unsigned short CRD1;
ioport unsigned short RSR;
ioport unsigned short CNTR0;
ioport unsigned short CNTR1;
ioport unsigned short CNTR2;
ioport unsigned short PSTART;
ioport unsigned short PSTOP;
ioport unsigned short TPSR;
ioport unsigned short TBCR0;
ioport unsigned short TBCR1;
ioport unsigned short RSAR0;
ioport unsigned short RSAR1;
ioport unsigned short RBCR0;
ioport unsigned short RBCR1;
ioport unsigned short RCR;
ioport unsigned short TCR;
ioport unsigned short DCR;
ioport unsigned short IMRR;
/*Page1(PS1=0,PS0=1) */
ioport unsigned short PAR0;
ioport unsigned short PAR1;
ioport unsigned short PAR2;
ioport unsigned short PAR3;
ioport unsigned short PAR4;
ioport unsigned short PAR5;
ioport unsigned short CURR;
ioport unsigned short MAR0;
ioport unsigned short MAR1;
ioport unsigned short MAR2;
ioport unsigned short MAR3;
ioport unsigned short MAR4;
ioport unsigned short MAR5;
ioport unsigned short MAR6;
ioport unsigned short MAR7;
/*page 3(PS1=1,PS0=0)*/
ioport unsigned short CR93C46;
ioport unsigned short CONFIG3;
ioport unsigned short DMA;
void init_protocal();
void load_udp(unsigned short *buf,unsigned short *length);
void load_ip(unsigned short *buf,unsigned short *length);
void send_frame(unsigned short *buf,unsigned short MAC_type,unsigned short PROTO_type,unsigned short length);
void send_arp(struct ipaddr *ip,unsigned short arp_type);
unsigned short checksum(unsigned short *buffer, short size);
unsigned short change_byte(unsigned short value);
void send_igmp(unsigned short type);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -