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

📄 net_nic.h

📁 ucos下的dm9000EP的tcp-ip驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
#define RCR_ALL              (1 << 3)
#define RCR_RUNT             (1 << 2)
#define RCR_PRMSC            (1 << 1)
#define RCR_RXEN             (1 << 0)

                                                                        /* Defines for register [0x06]                              */
#define RSR_RF               (1 << 7)
#define RSR_MF               (1 << 6)
#define RSR_LCS              (1 << 5)
#define RSR_RWTO             (1 << 4)
#define RSR_PLE              (1 << 3)
#define RSR_AE               (1 << 2)
#define RSR_CE               (1 << 1)
#define RSR_FOE              (1 << 0)
#define RSR_ERRORS             (0xBF)

                                                                        /* Defines for register [0x08]                              */
#define BPTR_BPHW(x)       (((x) & 0x0F) << 4)
#define BPTR_JPT_5u            (0x00)
#define BPTR_JPT_10u           (0x01)
#define BPTR_JPT_15u           (0x02)
#define BPTR_JPT_25u           (0x03)
#define BPTR_JPT_50u           (0x04)
#define BPTR_JPT_100u          (0x05)
#define BPTR_JPT_150u          (0x06)
#define BPTR_JPT_200u          (0x07)
#define BPTR_JPT_250u          (0x08)
#define BPTR_JPT_300u          (0x09)
#define BPTR_JPT_350u          (0x0A)
#define BPTR_JPT_400u          (0x0B)
#define BPTR_JPT_450u          (0x0C)
#define BPTR_JPT_500u          (0x0D)
#define BPTR_JPT_550u          (0x0E)
#define BPTR_JPT_600u          (0x0F)

                                                                        /* Defines for register [0x09]                              */
#define FCTR_HWOT(x)       (((x) & 0x0F) << 4)
#define FCTR_LWOT(x)        ((x) & 0x0F)

                                                                        /* Defines for register [0x0A]                              */
#define FCR_TXP0             (1 << 7)
#define FCR_TXPF             (1 << 6)
#define FCR_TXPEN            (1 << 5)
#define FCR_BKPA             (1 << 4)
#define FCR_BKPM             (1 << 3)
#define FCR_RXPS             (1 << 2)
#define FCR_RXPCS            (1 << 1)
#define FCR_FLCE             (1 << 0)

                                                                        /* Defines for register [0x0B]                              */
#define EPCR_REEP            (1 << 5)
#define EPCR_WEB             (1 << 4)
#define EPCR_EPOS            (1 << 3)
#define EPCR_ERPRR           (1 << 2)
#define EPCR_ERPRW           (1 << 1)
#define EPCR_ERRE            (1 << 0)

                                                                        /* Defines for register [0x1F]                              */
#define GPR_PHYPD            (1 << 0)
#define GPR_PHYPU            (0 << 0)

                                                                        /* Defines for register [0x39]                              */
#define INTCR_INT_TYPE       (1 << 1)
#define INTCR_INT_POL        (1 << 0)

                                                                        /* Defines for register [0xFE]                              */
#define IMR_PAR              (1 << 7)
#define IMR_LNKCHGI          (1 << 5)
#define IMR_UDRUNI           (1 << 4)
#define IMR_ROOI             (1 << 3)
#define IMR_ROI              (1 << 2)
#define IMR_PTI              (1 << 1)
#define IMR_PRI              (1 << 0)
#define IMR_ALL                (0x3F)

                                                                        /* Defines for register [0xFF]                              */
#define ISR_IOMODE_MASK      (3 << 7)
#define ISR_ROO              (1 << 3)
#define ISR_ROS              (1 << 2)
#define ISR_PT               (1 << 1)
#define ISR_PR               (1 << 0)
#define ISR_ALL                (0x0F)


/*
*********************************************************************************************************
*                                NIC DRIVER LAYER / ETHERNET ERROR CODES
*
* Note(s) : (1) ALL NIC-independent          error codes #define'd in      'net_err.h';
*               ALL DM9000EP_EMAC-specific error codes #define'd in this 'net_nic.h'.
*
*           (2) Network error code '10,000' series reserved for NIC drivers.
*********************************************************************************************************
*/

#define  DM9000EP_EMAC_ERR_RX_BUSY  10700
#define  DM9000EP_EMAC_ERR_TX_BUSY  10701


/*
*********************************************************************************************************
*                                           GLOBAL VARIABLES
*********************************************************************************************************
*/

NET_NIC_EXT  CPU_BOOLEAN  NetNIC_ConnStatus;                            /* NIC's connection status : DEF_ON/DEF_OFF.           */

#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)                                /* ------------------- NET DRV STATS ----------------- */
NET_NIC_EXT  NET_CTR      NetNIC_StatRxPktCtr;
NET_NIC_EXT  NET_CTR      NetNIC_StatTxPktCtr;
#endif

#if (NET_CTR_CFG_ERR_EN  == DEF_ENABLED)                                /* ------------------- NET DRV ERRS ------------------ */
NET_NIC_EXT  NET_CTR      NetNIC_ErrRxPktDiscardedCtr;
NET_NIC_EXT  NET_CTR      NetNIC_ErrTxPktDiscardedCtr;
#endif


/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*********************************************************************************************************
*/

void         NetNIC_Init            (NET_ERR     *perr);

void         NetNIC_IntEn           (NET_ERR     *perr);

                                                                        /* ------------------- STATUS FNCTS ------------------ */
CPU_BOOLEAN  NetNIC_ConnStatusGet   (void);

void         NetNIC_ISR_Handler     (void);                             /* Decode & handle rx/tx ISRs.                         */

                                                                        /* --------------------- RX FNCTS -------------------- */
CPU_INT16U   NetNIC_RxPktGetSize    (void);                             /* Get NIC rx pkt size.                                */

void         NetNIC_RxPkt           (void        *ppkt,                 /* Rx pkt from NIC.                                    */
                                     CPU_INT16U   size,
                                     NET_ERR     *perr);

void         NetNIC_RxPktDiscard    (CPU_INT16U   size,                 /* Discard rx pkt in NIC.                              */
                                     NET_ERR     *perr);

                                                                        /* --------------------- TX FNCTS -------------------- */
void         NetNIC_TxPktPrepare    (void        *ppkt,
                                     CPU_INT16U   size,
                                     NET_ERR     *perr);

void         NetNIC_TxPkt           (void        *ppkt,
                                     CPU_INT16U   size,
                                     NET_ERR     *perr);

                                                                        /* ------------------- PHYTER FNCTS ------------------ */
void         NetNIC_PhyInit         (NET_ERR     *perr);

CPU_INT16U   NetNIC_PhyRegRd        (CPU_INT08U   phy,
                                     CPU_INT08U   reg,
                                     NET_ERR    *perr);

void         NetNIC_PhyRegWr        (CPU_INT08U   phy,
                                     CPU_INT08U   reg,
                                     CPU_INT16U   val,
                                     NET_ERR    *perr);

void         DumpRegs               (void);

/*
*********************************************************************************************************
*                                          FUNCTION PROTOTYPES
*                                       DEFINED IN OS'S  net_os.c
*********************************************************************************************************
*/

void         NetOS_NIC_Init         (NET_ERR     *perr);                /* Create Drv objs & start Drv tasks.                  */

void         NetOS_NIC_TxRdyWait    (NET_ERR     *perr);                /* Wait on drv tx empty signal from NIC.               */

void         NetOS_NIC_TxRdySignal  (void);                             /* Post    drv tx empty signal from NIC.               */


/*
*********************************************************************************************************
*                                          FUNCTION PROTOTYPES
*                                    DEFINED IN PRODUCT'S  net_bsp.c
*********************************************************************************************************
*/

#if (NET_NIC_CFG_RD_WR_SEL == NET_NIC_RD_WR_SEL_FNCT)
void         NetNIC_WrReg_8         (CPU_INT08U reg,
                                     CPU_INT08U data);
CPU_INT08U   NetNIC_RdReg_8         (CPU_INT08U reg);

void         NetNIC_WrIx_8          (CPU_INT08U reg);
void         NetNIC_WrData_8        (CPU_INT08U  data);
CPU_INT08U   NetNIC_RdData_8        (void);
void         NetNIC_WrData_16       (CPU_INT16U  data);
CPU_INT16U   NetNIC_RdData_16       (void);
#endif


/*
*********************************************************************************************************
*                                          FUNCTION PROTOTYPES
*                                   DEFINED IN PRODUCT's  net_isr_a.s
*********************************************************************************************************
*/

void         NetNIC_ISR             (void);


/*
*********************************************************************************************************
*                                          FUNCTION PROTOTYPES
*                                    DEFINED IN PRODUCT'S  net_isr.c
*
* Note(s) : (1) See this 'net_nic.c  DM9000EP_EMAC_Init() Note #5'.
*
*           (2) See this 'net_nic.c  NetNIC_ISR_Handler()   Note #3'.
*********************************************************************************************************
*/

#if (NET_NIC_CFG_INT_CTRL_EN == DEF_ENABLED)
void         NetNIC_IntInit         (void);                             /* Init int ctrl'r        [see Note #1].               */

void         NetNIC_IntClr          (void);                             /* Clr  int ctrl'r src(s) [see Note #2].               */
#endif


/*
*********************************************************************************************************
*                                         CONFIGURATION ERRORS
*********************************************************************************************************
*/

#ifndef   NET_NIC_CFG_INT_CTRL_EN
#error   "NET_NIC_CFG_INT_CTRL_EN           not #define'd in 'net_cfg.h'"
#error   "                            [MUST be  DEF_DISABLED]"
#error   "                            [     ||  DEF_ENABLED ]"
#elif   ((NET_NIC_CFG_INT_CTRL_EN != DEF_DISABLED) && \
         (NET_NIC_CFG_INT_CTRL_EN != DEF_ENABLED ))
#error   "NET_NIC_CFG_INT_CTRL_EN           illegally #define'd in 'net_cfg.h'"
#error   "                            [MUST be  DEF_DISABLED]"
#error   "                            [     ||  DEF_ENABLED ]"
#endif

#ifndef   EMAC_CFG_MAC_ADDR_SEL
#error   "EMAC_CFG_MAC_ADDR_SEL  not #define'd in 'net_bsp.h'"
#error   "                            [MUST be  EMAC_MAC_ADDR_SEL_CFG   ]"
#error   "                            [     ||  EMAC_MAC_ADDR_SEL_EEPROM]"
#elif   ((EMAC_CFG_MAC_ADDR_SEL != EMAC_MAC_ADDR_SEL_CFG   ) && \
         (EMAC_CFG_MAC_ADDR_SEL != EMAC_MAC_ADDR_SEL_EEPROM))
#error   "EMAC_CFG_MAC_ADDR_SEL  illegally #define'd in 'net_bsp.h'"
#error   "                            [MUST be  EMAC_MAC_ADDR_SEL_CFG   ]"
#error   "                            [     ||  EMAC_MAC_ADDR_SEL_EEPROM]"
#endif

#ifndef   DM9000EP_IO_MODE
#error   "DM9000EP_IO_MODE                not #define'd in 'net_bsp.h'"
#elif    !((DM9000EP_IO_MODE == DM9000EP_IO_8_BITS) || (DM9000EP_IO_MODE == DM9000EP_IO_16_BITS))
#error   "DM9000EP_IO_MODE          illegally #define'd in 'net_bsp.h'"
#error   "                            [MUST be  DM9000EP_WORD_MODE or DM9000EP_BYTE_MODE]"
#endif

#if      NET_NIC_CFG_TX_PKT_PREPARE_EN > 0
#error  "NET_NIC_CFG_TX_PKT_PREPARE_EN must be set to DEF_DISABLED in net_cfg.h"
#endif


#endif
	 	 			 		    	 				 	    	 	 	 		    	     	 	 	 		 	  	  	  	     	 	      	   		 	 	 	   		   			 	  	  			      		   	 			       	  	 		  	 	  	 		 		   		  	  			 	  	 		 	 	 			 	 		 		 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -