?? rtl8019a.h
字號:
/*************************************
Copyright 2001 by Haia Tech
海佳科技有限公司
www.haia2004.com
Email:haia2004@vip.sina.com
Tel:0731-4552122 4553216
*************************************/
#define PAGE 0x44
/*register declarations for RTL8019AS */
/*Page0(PS1=0,PS0=0) */
/*RD */
#define CR port0000
/*Command*/
#define CLDA0 port0100
/*Curent Local DMA Address 0*/
#define CLDA1 port0200
/*Curent Local DMA Address 1*/
#define BNRY port0300
/*Boundary Pointer*/
#define TSR port0400
/*Transmit Status Register*/
#define NCR port0500
/*Number of Collisions Register*/
#define FIFO port0600
#define ISR port0700
/*Interrupt Status Register*/
#define CRDA0 port0800
/*Current Remote DMA Address 0*/
#define CRDA1 port0900
/*Current Remote DMA Address 1*/
#define CRD0 port0A00
/*Configuration Register A*/
#define CRD1 port0B00
/*Configuration Register B*/
#define RSR port0C00
/*Receive status Register*/
#define CNTR0 port0D00
/*Tally Counter 0(Frame Alignment Errors)*/
#define CNTR1 port0E00
/*Tally Counter 1(CRC Errors)*/
#define CNTR2 port0F00
/*Tally Counter 2(Missed packet Errors)*/
/*WR */
#define PSTART port0100
/*Page Start Register*/
#define PSTOP port0200
/*Page stop Regiser*/
#define TPSR port0400
/*Transmit Page Start Address*/
#define TBCR0 port0500
/*Transmit Byte Count Register 0*/
#define TBCR1 port0600
/*Transmit Byte Count Register 1*/
#define RSAR0 port0800
/*Remote Start Address Register 0*/
#define RSAR1 port0900
/*Remote Start Address Register 1*/
#define RBCR0 port0A00
/*Remote Byte Count Register 0*/
#define RBCR1 port0B00
/*Remote Byte Count Register 1*/
#define RCR port0C00
/*Receive Configuration Register*/
#define TCR port0D00
/*Transmit Configuration Register*/
#define DCR port0E00
/*Data Configuration Register*/
#define IMRR port0F00
/*Interrupt Mask Register*/
/*Page1(PS1=0,PS0=1) */
#define CR port0000
/*Command*/
#define PAR0 port0100
/*Physical Address Register 0*/
#define PAR1 port0200
/*Physical Address Register 1*/
#define PAR2 port0300
/*Physical Address Register 2*/
#define PAR3 port0400
/*Physical Address Register 3*/
#define PAR4 port0500
/*Physical Address Register 4*/
#define PAR5 port0600
/*Physical Address Register 5*/
#define CURR port0700
/*Current Page Register */
#define MAR0 port0800
/*Multicast Address Register 0*/
#define MAR1 port0900
/*Multicast Address Register 1*/
#define MAR2 port0A00
/*Multicast Address Register 2*/
#define MAR3 port0B00
/*Multicast Address Register 3*/
#define MAR4 port0C00
/*Multicast Address Register 4*/
#define MAR5 port0D00
/*Multicast Address Register 5*/
#define MAR6 port0E00
/*Multicast Address Register 6*/
#define MAR7 port0F00
/*Multicast Address Register 7*/
/*Page 2(PS1=1,PS0=0)*/
/*page 3(PS1=1,PS0=0)*/
#define CR93C46 port0100
#define CONFIG3 port0600
#define DMA port1000
#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 + -