📄 hardware.h
字号:
#ifndef _HARDWARE_H_
#define _HARDWARE_H_
/*
**************************************************
*
*
* rtl8019 hardware driver
* file:hardware.h
* created by gm
* data 2008.8.20
*
*
*
**************************************************
*/
#undef EXT
#ifdef HARDWARE_ENTITY
#define EXT
#else
#define EXT extern
#endif
#define RTL_BASEADDR 0x06000300
//00:50:c2:1e:af:fb
#define MY_MAC_ID {0x00,0x50,0xc2,0x1e,0xaf,0xfb}
#define IP_MASK {0xff,0xff,0xff,0x00}
#define MY_IP_ID {192,168,0,11}
#define MY_Gate_IP {192,168,0,1} //gate ip use --|-
#define MY_Gate_IP_Arp 192,168,0,1, //gate ip use --|
#define MAX_BUFF_NUM 0x04
#define MAX_ARP_NUM 0x04 //最大的arp表的数量
#define ARP_PACKED 0x01
#define IP_PACKED 0x02
//定义的数据接收缓冲区公用体
typedef union _REC_BUFF_UNION
{
INT32U Dwords[384];
INT16U words[768];
INT8U bytes[1536];
}REC_BUFF_UNION;
//用来发送时的数据结构
typedef struct __pkst{
struct __pkst * next;
unsigned int length;
unsigned char *pdata;
}_pkst;
//本机维护的arp表
typedef struct _a_t{
unsigned int TTL;
unsigned char IP_NUM[4];
unsigned char MAC_NUM[6];
}a_t;
EXT REC_BUFF_UNION REC_BUFF[MAX_BUFF_NUM]; //接收缓冲区
extern INT8U My_Mac[]; //我的mac地址
extern INT8U My_Ip[]; //我的ip地址
//定义的8019网络寄存器地址
#define ADDR_SFT 1
#define RTL8019_BASE 0x06000300 /* base address */
#define RTL8019_REG_00 (RTL8019_BASE + (0x00<<ADDR_SFT))
#define RTL8019_REG_01 (RTL8019_BASE + (0x01<<ADDR_SFT))
#define RTL8019_REG_02 (RTL8019_BASE + (0x02<<ADDR_SFT))
#define RTL8019_REG_03 (RTL8019_BASE + (0x03<<ADDR_SFT))
#define RTL8019_REG_04 (RTL8019_BASE + (0x04<<ADDR_SFT))
#define RTL8019_REG_05 (RTL8019_BASE + (0x05<<ADDR_SFT))
#define RTL8019_REG_06 (RTL8019_BASE + (0x06<<ADDR_SFT))
#define RTL8019_REG_07 (RTL8019_BASE + (0x07<<ADDR_SFT))
#define RTL8019_REG_08 (RTL8019_BASE + (0x08<<ADDR_SFT))
#define RTL8019_REG_09 (RTL8019_BASE + (0x09<<ADDR_SFT))
#define RTL8019_REG_0a (RTL8019_BASE + (0x0a<<ADDR_SFT))
#define RTL8019_REG_0b (RTL8019_BASE + (0x0b<<ADDR_SFT))
#define RTL8019_REG_0c (RTL8019_BASE + (0x0c<<ADDR_SFT))
#define RTL8019_REG_0d (RTL8019_BASE + (0x0d<<ADDR_SFT))
#define RTL8019_REG_0e (RTL8019_BASE + (0x0e<<ADDR_SFT))
#define RTL8019_REG_0f (RTL8019_BASE + (0x0f<<ADDR_SFT))
#define RTL8019_REG_10 (RTL8019_BASE + (0x10<<ADDR_SFT))
#define RTL8019_REG_1f (RTL8019_BASE + (0x1f<<ADDR_SFT))
#define RTL8019_COMMAND RTL8019_REG_00
#define RTL8019_PAGESTART RTL8019_REG_01
#define RTL8019_PAGESTOP RTL8019_REG_02
#define RTL8019_BOUNDARY RTL8019_REG_03
#define RTL8019_TRANSMITSTATUS RTL8019_REG_04
#define RTL8019_TRANSMITPAGE RTL8019_REG_04
#define RTL8019_TRANSMITBYTECOUNT0 RTL8019_REG_05
#define RTL8019_NCR RTL8019_REG_05
#define RTL8019_TRANSMITBYTECOUNT1 RTL8019_REG_06
#define RTL8019_INTERRUPTSTATUS RTL8019_REG_07
#define RTL8019_CURRENT RTL8019_REG_07
#define RTL8019_REMOTESTARTADDRESS0 RTL8019_REG_08
#define RTL8019_CRDMA0 RTL8019_REG_08
#define RTL8019_REMOTESTARTADDRESS1 RTL8019_REG_09
#define RTL8019_CRDMA1 RTL8019_REG_09
#define RTL8019_REMOTEBYTECOUNT0 RTL8019_REG_0a
#define RTL8019_REMOTEBYTECOUNT1 RTL8019_REG_0b
#define RTL8019_RECEIVESTATUS RTL8019_REG_0c
#define RTL8019_RECEIVECONFIGURATION RTL8019_REG_0c
#define RTL8019_TRANSMITCONFIGURATION RTL8019_REG_0d
#define RTL8019_FAE_TALLY RTL8019_REG_0d
#define RTL8019_DATACONFIGURATION RTL8019_REG_0e
#define RTL8019_CRC_TALLY RTL8019_REG_0e
#define RTL8019_INTERRUPTMASK RTL8019_REG_0f
#define RTL8019_MISS_PKT_TALLY RTL8019_REG_0f
#define RTL8019_PHYSICALADDRESS0 RTL8019_REG_01
#define RTL8019_PHYSICALADDRESS1 RTL8019_REG_02
#define RTL8019_PHYSICALADDRESS2 RTL8019_REG_03
#define RTL8019_PHYSICALADDRESS3 RTL8019_REG_04
#define RTL8019_PHYSICALADDRESS4 RTL8019_REG_05
#define RTL8019_PHYSICALADDRESS5 RTL8019_REG_06
#define RTL8019_MULTIADDRESS0 RTL8019_REG_08
#define RTL8019_MULTIADDRESS1 RTL8019_REG_09
#define RTL8019_MULTIADDRESS2 RTL8019_REG_0a
#define RTL8019_MULTIADDRESS3 RTL8019_REG_0b
#define RTL8019_MULTIADDRESS4 RTL8019_REG_0c
#define RTL8019_MULTIADDRESS5 RTL8019_REG_0d
#define RTL8019_MULTIADDRESS6 RTL8019_REG_0e
#define RTL8019_MULTIADDRESS7 RTL8019_REG_0f
#define RTL8019_DMA_DATA RTL8019_REG_10
#define RTL8019_RESET RTL8019_REG_1f
#define RTL8019_PAGE0 0x22
#define RTL8019_PAGE1 0x62
#define RTL8019_PAGE0DMAWRITE 0x12
#define RTL8019_PAGE2DMAWRITE 0x92
#define RTL8019_REMOTEDMAWR 0x12
#define RTL8019_REMOTEDMARD 0x0A
#define RTL8019_ABORTDMAWR 0x32
#define RTL8019_ABORTDMARD 0x2A
#define RTL8019_PAGE0STOP 0x21
#define RTL8019_PAGE1STOP 0x61
#define RTL8019_TRANSMIT 0x26
#define RTL8019_TXINPROGRESS 0x04
#define RTL8019_SEND 0x1A
#define RTL8019_PSTART 0x4c
#define RTL8019_PSTOP 0x80
#define RTL8019_TPSTART 0x40
#define PKTSIZE 1518
#define PKTSIZE_ALIGN 1536
/*
**************************************************
*函数:void Send_Packet(struct _pkst *TxData)
*功能:
* rtl发送数据的函数
* 由上层协议调用
*参数:
* TxData 发送数据的结构
*
*
*
**************************************************
*/
EXT int eth_send(_pkst *TxData);
EXT void rtl8019_get_enetaddr(unsigned char *addr);
/*
********************************************************
*函数:void InitNet(void)
*功能:
* 初始化rtl8019网络芯片
*
*
*
*
********************************************************
*/
EXT int eth_init (void);
/*
***********************************************************
*函数:INT8U Rec_Packet(void)
*功能:
* rtl8019接收函数
*返回值:
* 1 表示有接收数据返回
* 0
*
*注意:该函数又调用了上层的处理函数,上层的处理函数然后在通过信号量机制
* 进行调用imcp,还是tcp
*
************************************************************
*/
EXT int eth_rx (void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -