LPCOpen Platform  v1.03
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
17xx/40xx EMAC driver for LWIP

Detailed Description

Note
This is the LPC17xx/40xx 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).

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 17xx/40xx 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 msDelay (uint32_t ms)
 Millisecond Delay function.
 

Macro Definition Documentation

#define RXINTGROUP   (ENET_INT_RXOVERRUN | ENET_INT_RXERROR | ENET_INT_RXDONE)

Debug output formatter lock define When using FreeRTOS and with LWIP_DEBUG enabled, enabling this define will allow RX debug messages to not interleave with the TX messages (so they are actually readable). Not enabling this define when the system is under load will cause the output to be unreadable. There is a small tradeoff in performance for this so use it only for debug.

Receive group interrupts

Definition at line 94 of file lpc17xx_40xx_emac.c.

#define tskRECPKT_PRIORITY   (DEFAULT_THREAD_PRIO + 4)

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 76 of file lpc17xx_40xx_emac.c.

#define tskTXCLEAN_PRIORITY   (DEFAULT_THREAD_PRIO + 5)

Definition at line 77 of file lpc17xx_40xx_emac.c.

#define TXINTGROUP   (ENET_INT_TXUNDERRUN | ENET_INT_TXERROR | ENET_INT_TXDONE)

Transmit group interrupts.

Definition at line 98 of file lpc17xx_40xx_emac.c.

Function Documentation

ALIGNED ( )

LPC EMAC driver work data.

Definition at line 131 of file lpc17xx_40xx_emac.c.

void ETH_IRQHandler ( void  )

EMAC interrupt handler.

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

Definition at line 754 of file lpc17xx_40xx_emac.c.

STATIC err_t low_level_init ( struct netif *  netif)

Definition at line 594 of file lpc17xx_40xx_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
Note
This function provides a method for the PHY to setup the EMAC for the PHY negotiated duplex mode.

Definition at line 792 of file lpc17xx_40xx_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
Note
This function provides a method for the PHY to setup the EMAC for the PHY negotiated bit rate.

Definition at line 803 of file lpc17xx_40xx_emac.c.

err_t lpc_enetif_init ( struct netif *  netif)

LWIP 17xx/40xx EMAC initialization function.

Parameters
netif: lwip network interface structure pointer
Returns
ERR_OK if the loopif is initialized, or ERR_* on other errors
Note
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 814 of file lpc17xx_40xx_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 693 of file lpc17xx_40xx_emac.c.

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

Definition at line 643 of file lpc17xx_40xx_emac.c.

STATIC struct pbuf* lpc_low_level_input ( struct netif *  netif)
read

Definition at line 189 of file lpc17xx_40xx_emac.c.

STATIC err_t lpc_low_level_output ( struct netif *  netif,
struct pbuf *  p 
)

Definition at line 398 of file lpc17xx_40xx_emac.c.

STATIC s32_t lpc_packet_addr_notsafe ( void *  addr)

Definition at line 324 of file lpc17xx_40xx_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 658 of file lpc17xx_40xx_emac.c.

STATIC err_t lpc_rx_setup ( lpc_enetdata_t lpc_enetif)

Definition at line 174 of file lpc17xx_40xx_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
Note
Can be used to determine if the low level transmit function will block

Definition at line 738 of file lpc17xx_40xx_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 731 of file lpc17xx_40xx_emac.c.

STATIC void lpc_tx_reclaim_st ( lpc_enetdata_t lpc_enetif,
u32_t  cidx 
)

Definition at line 364 of file lpc17xx_40xx_emac.c.

STATIC err_t lpc_tx_setup ( lpc_enetdata_t lpc_enetif)

Definition at line 345 of file lpc17xx_40xx_emac.c.

void msDelay ( uint32_t  ms)

Millisecond Delay function.

Parameters
ms: Milliseconds to wait
Returns
None

Millisecond Delay function.

Parameters
ms: Delay period in milliseconds
Returns
None Delay for the specified number of milliSeconds. This function is used by LWIP stack in stand-alone configuration

Millisecond Delay function.

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 300 of file lpc43xx_systick.c.

STATIC portTASK_FUNCTION ( vPacketReceiveTask  ,
pvParameters   
)

Definition at line 529 of file lpc17xx_40xx_emac.c.

STATIC portTASK_FUNCTION ( vTransmitCleanupTask  ,
pvParameters   
)

Definition at line 545 of file lpc17xx_40xx_emac.c.