LPCOpen Platform
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
18xx/43xx EMAC driver for LWIP

Functions

void lpc_enetif_input (struct netif *netif)
 Attempt to read a packet from the EMAC interface.
 
s32_t lpc_rx_queue (struct netif *netif)
 Attempt to allocate and requeue a new pbuf for RX.
 
s32_t lpc_tx_ready (struct netif *netif)
 Polls if an available TX descriptor is ready.
 
void lpc_tx_reclaim (struct netif *netif)
 Call for freeing TX buffers that are complete.
 
err_t lpc_enetif_init (struct netif *netif)
 LWIP 18xx/43xx EMAC initialization function.
 
void lpc_emac_set_duplex (int full_duplex)
 Set up the MAC interface duplex.
 
void lpc_emac_set_speed (int mbs_100)
 Set up the MAC interface speed.
 
void lpc_mii_write_noblock (u32_t PhyReg, u32_t Value)
 Write a value via the MII link (non-blocking)
 
err_t lpc_mii_write (u32_t PhyReg, u32_t Value)
 Write a value via the MII link (blocking)
 
u32_t lpc_mii_is_busy (void)
 Reads current MII link busy status.
 
u32_t lpc_mii_read_data (void)
 Read current value in MII data register.
 
void lpc_mii_read_noblock (u32_t PhyReg)
 Starts a read operation via the MII link (non-blocking)
 
err_t lpc_mii_read (u32_t PhyReg, u32_t *data)
 Read a value via the MII link (blocking)
 
void msDelay (uint32_t ms)
 Millisecond Delay function.
 
static void lpc_rxqueue_pbuf (struct lpc_enetdata *lpc_netifdata, struct pbuf *p)
 
static err_t lpc_rx_setup (struct lpc_enetdata *lpc_netifdata)
 
static struct pbuf * lpc_low_level_input (struct netif *netif)
 
static err_t lpc_tx_setup (struct lpc_enetdata *lpc_netifdata)
 
static err_t lpc_low_level_output (struct netif *netif, struct pbuf *sendp)
 
static err_t lpc_etharp_output (struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr)
 
static portTASK_FUNCTION (vPacketReceiveTask, pvParameters)
 
static portTASK_FUNCTION (vTransmitCleanupTask, pvParameters)
 
static err_t low_level_init (struct netif *netif)
 
void ETH_IRQHandler (void)
 EMAC interrupt handler.
 
#define tskTXCLEAN_PRIORITY   (TCPIP_THREAD_PRIO - 1)
 Driver transmit and receive thread priorities Thread priorities for receive thread and TX cleanup thread. Alter to prioritize receive or transmit bandwidth. In a heavily loaded system or with LWIP_DEBUG enabled, the priorities might be better the same.
 
#define tskRECPKT_PRIORITY   (TCPIP_THREAD_PRIO - 1)
 
static struct lpc_enetdata lpc_enetdata
 
static uint32_t intMask
 

Detailed Description

This is the LPC18xx/43xx EMAC driver for LWIP. This driver supports both RTOS-based and no-RTOS operation with LWIP. WHen using an RTOS, several threads will be created for handling RX and TX packet fucntions.

Note that some LWIP examples may not necessarily use all the provided LWIP driver functions or may contain overriden versions of the functions. (For example, PHY drives may have their own implementation of the MII read/write functions).

Macro Definition Documentation

#define tskRECPKT_PRIORITY   (TCPIP_THREAD_PRIO - 1)

Definition at line 81 of file lpc18xx_43xx_emac.c.

#define tskTXCLEAN_PRIORITY   (TCPIP_THREAD_PRIO - 1)

Driver transmit and receive thread priorities Thread priorities for receive thread and TX cleanup thread. Alter to prioritize receive or transmit bandwidth. In a heavily loaded system or with LWIP_DEBUG enabled, the priorities might be better the same.

Definition at line 80 of file lpc18xx_43xx_emac.c.

Function Documentation

void ETH_IRQHandler ( void  )

EMAC interrupt handler.

Returns
Nothing This function handles the transmit, receive, and error interrupt of the LPC118xx/43xx. This is meant to be used when NO_SYS=0.

Definition at line 902 of file lpc18xx_43xx_emac.c.

static err_t low_level_init ( struct netif *  netif)
static

Definition at line 571 of file lpc18xx_43xx_emac.c.

void lpc_emac_set_duplex ( int  full_duplex)

Set up the MAC interface duplex.

Parameters
full_duplex: 0 = half duplex, 1 = full duplex
Returns
Nothing This function provides a method for the PHY to setup the EMAC for the PHY negotiated duplex mode.

Definition at line 937 of file lpc18xx_43xx_emac.c.

void lpc_emac_set_speed ( int  mbs_100)

Set up the MAC interface speed.

Parameters
mbs_100: 0 = 10mbs mode, 1 = 100mbs mode
Returns
Nothing This function provides a method for the PHY to setup the EMAC for the PHY negotiated bit rate.

Definition at line 948 of file lpc18xx_43xx_emac.c.

err_t lpc_enetif_init ( struct netif *  netif)

LWIP 18xx/43xx EMAC initialization function.

Parameters
netif: lwip network interface structure pointer
Returns
ERR_OK if the loopif is initialized, or ERR_* on other errors Should be called at the beginning of the program to set up the network interface. This function should be passed as a parameter to netif_add().

Definition at line 959 of file lpc18xx_43xx_emac.c.

void lpc_enetif_input ( struct netif *  netif)

Attempt to read a packet from the EMAC interface.

Parameters
netif: lwip network interface structure pointer
Returns
Nothing

Definition at line 780 of file lpc18xx_43xx_emac.c.

static err_t lpc_etharp_output ( struct netif *  netif,
struct pbuf *  q,
ip_addr_t *  ipaddr 
)
static

Definition at line 523 of file lpc18xx_43xx_emac.c.

static struct pbuf* lpc_low_level_input ( struct netif *  netif)
staticread

Definition at line 211 of file lpc18xx_43xx_emac.c.

static err_t lpc_low_level_output ( struct netif *  netif,
struct pbuf *  sendp 
)
static

Definition at line 365 of file lpc18xx_43xx_emac.c.

u32_t lpc_mii_is_busy ( void  )

Reads current MII link busy status.

Returns
Returns the current MII status value in the MAC controller

Definition at line 693 of file lpc18xx_43xx_emac.c.

err_t lpc_mii_read ( u32_t  PhyReg,
u32_t data 
)

Read a value via the MII link (blocking)

Parameters
PhyReg: PHY register address
data: Pointer to data area to populate
Returns
MII error code, ERR_OK on successful read

Definition at line 714 of file lpc18xx_43xx_emac.c.

u32_t lpc_mii_read_data ( void  )

Read current value in MII data register.

Returns
Returns the current MII data value

Definition at line 699 of file lpc18xx_43xx_emac.c.

void lpc_mii_read_noblock ( u32_t  PhyReg)

Starts a read operation via the MII link (non-blocking)

Parameters
PhyReg: PHY register address
Returns
Nothing Starts a MII read operation, but doesn't wait for it. Use lpc_mii_is_busy() to determine when operation is complete.

Definition at line 705 of file lpc18xx_43xx_emac.c.

err_t lpc_mii_write ( u32_t  PhyReg,
u32_t  Value 
)

Write a value via the MII link (blocking)

Parameters
PhyReg: PHY register address
Value: Value to write
Returns
Nothing Performs a MII write operation. Will block until completion.

Definition at line 665 of file lpc18xx_43xx_emac.c.

void lpc_mii_write_noblock ( u32_t  PhyReg,
u32_t  Value 
)

Write a value via the MII link (non-blocking)

Parameters
PhyReg: PHY register address
Value: Value to write
Returns
Nothing Starts a MII write operation, but doesn't wait for it. Use lpc_mii_is_busy() to determine when operation is complete.

Definition at line 655 of file lpc18xx_43xx_emac.c.

s32_t lpc_rx_queue ( struct netif *  netif)

Attempt to allocate and requeue a new pbuf for RX.

Parameters
netif: lwip network interface structure pointer
Returns
The number of new descriptors queued

Definition at line 743 of file lpc18xx_43xx_emac.c.

static err_t lpc_rx_setup ( struct lpc_enetdata lpc_netifdata)
static

Definition at line 175 of file lpc18xx_43xx_emac.c.

static void lpc_rxqueue_pbuf ( struct lpc_enetdata lpc_netifdata,
struct pbuf *  p 
)
static

Definition at line 140 of file lpc18xx_43xx_emac.c.

s32_t lpc_tx_ready ( struct netif *  netif)

Polls if an available TX descriptor is ready.

Parameters
netif: lwip network interface structure pointer
Returns
0 if no descriptors are read, or >0 Can be used to determine if the low level transmit function will block

Definition at line 891 of file lpc18xx_43xx_emac.c.

void lpc_tx_reclaim ( struct netif *  netif)

Call for freeing TX buffers that are complete.

Parameters
netif: lwip network interface structure pointer
Returns
Nothing

Definition at line 819 of file lpc18xx_43xx_emac.c.

static err_t lpc_tx_setup ( struct lpc_enetdata lpc_netifdata)
static

Definition at line 336 of file lpc18xx_43xx_emac.c.

void msDelay ( uint32_t  ms)

Millisecond Delay function.

Parameters
ms: Milliseconds to wait
Returns
None

Millisecond Delay function.

Parameters
ms: Number of milliSeconds to delay
Returns
Nothing Needed for some functions, do not use prior to FreeRTOS running

Definition at line 224 of file lwip_tcpecho_freertos.c.

static portTASK_FUNCTION ( vPacketReceiveTask  ,
pvParameters   
)
static

Definition at line 538 of file lpc18xx_43xx_emac.c.

static portTASK_FUNCTION ( vTransmitCleanupTask  ,
pvParameters   
)
static

Definition at line 557 of file lpc18xx_43xx_emac.c.

Variable Documentation

uint32_t intMask
static

Definition at line 120 of file lpc18xx_43xx_emac.c.

struct lpc_enetdata lpc_enetdata
static

Definition at line 118 of file lpc18xx_43xx_emac.c.