⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hardware.h

📁 rtl8019的程序
💻 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 + -