📄 net_nic.h
字号:
#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 + -