After ETHERC, EDMAC and PHY-LSI are reset in software, an auto negotiation of PHY-LSI is begun. Afterwards, the link signal change interrupt is permitted. Implements ether_api_t::open. More...
Receive Ethernet frame. Receives data to the location specified by the pointer to the receive buffer. In zero copy mode, the address of the receive buffer is returned. In non zero copy mode, the received data in the internal buffer is copied to the pointer passed by the argument. Implements ether_api_t::read. More...
Transmit Ethernet frame. Transmits data from the location specified by the pointer to the transmit buffer, with the data size equal to the specified frame length. In the non zero copy mode, transmits data after being copied to the internal buffer. Implements ether_api_t::write. More...
The setting of ETHERC is changed from normal sending and receiving mode to magic packet detection mode. Implements ether_api_t::wakeOnLANEnable. More...
Driver for the Ethernet peripheral on RZ MPUs. This module implements the Ethernet Interface.
Overview
This module performs Ethernet frame transmission and reception using an Ethernet controller and an Ethernet DMA controller.
Features
The Ethernet module supports the following features:
Transmit/receive processing
Callback function with returned event code
Auto negotiation support
Flow control support
Multicast filtering support
Broadcast filtering support
Promiscuous mode support
Configuration
Build Time Configurations for r_gether
The following build time configurations are defined in fsp_cfg/r_gether_cfg.h:
Configuration
Options
Default
Description
Parameter Checking
Default (BSP)
Enabled
Disabled
Default (BSP)
If selected code for parameter checking is included in the build.
ET0_LINKSTA Pin Status Flag
Fall -> Rise
Rise -> Fall
Fall -> Rise
Specify the polarity of the link signal output by the PHY-LSI. When 0 is specified, link-up and link-down correspond respectively to the fall and rise of the LINKSTA signal. When 1 is specified, link-up and link-down correspond respectively to the rise and fall of the LINKSTA signal.
Link Signal Change Flag
Unused
Used
Unused
Use LINKSTA signal for detect link status changes 0 = unused (use PHY-LSI status register) 1 = use (use LINKSTA signal)
Configurations for Networking > Gigabit Ethernet (r_gether)
This module can be added to the Stacks tab via New Stack > Networking > Gigabit Ethernet (r_gether).
Configuration
Options
Default
Description
General > Name
Name must be a valid C symbol
g_gether0
Module name.
General > Channel
0
1
1
Select the ether channel number.
General > MAC address
Must be a valid MAC address
00:11:22:33:44:55
MAC address of this channel.
General > Zero-copy Mode
Disable
Enable
Disable
Enable or disable zero-copy mode.
General > Flow control functionality
Disable
Enable
Disable
Enable or disable flow control.
Filters > Multicast Mode
Disable
Enable
Enable
Enable or disable multicast frame reception.
Filters > Promiscuous Mode
Disable
Enable
Disable
Enable this option to receive packets addressed to other NICs.
Filters > Broadcast filter
Must be a valid non-negative integer with maximum configurable value of 65535.
0
Limit of the number of broadcast frames received continuously
Buffers > Number of TX buffer
Must be an integer from 1 to 8
7
Number of transmit buffers
Buffers > Number of RX buffer
Must be an integer from 1 to 8
8
Number of receive buffers
Buffers > Allocate RX buffer
Disable
Enable
Enable
Allocates the RX buffer when generating the configuration structure
Buffers > Buffer size
Must be at least 1514 which is the maximum Ethernet frame size.
1514
Size of Ethernet buffer
Buffers > Padding
Disable
Enable
Disable
The padding size that is automatically inserted into the received packets
Interrupts > Interrupt priority
Value must be an integer between 0 and 31
24
Select the EDMAC interrupt priority.
Interrupts > Callback
Name must be a valid C symbol
NULL
Callback provided when an ISR occurs
Interrupt Configuration
The first R_GETHER_Open function call sets EINT interrupts. The user could provide callback function which would be invoked when EINT interrupt handler has been completed. The callback arguments will contain information about a channel number, the ETHERC and EDMAC status, the event code, and a pointer to the user defined context.
Callback Configuration
When the callback function is called, a variable in which the channel number for which the detection occurred and a constant shown in Table 2.4 are stored is passed as an argument. If the value of this argument is to be used outside the callback function, its value should be copied into, for example, a global variable.
Pin Configuration
To use the Ethernet module, input/output signals of the peripheral function have to be allocated to pins with the multi-function pin controller (MPC). Please perform the pin setting before calling the R_GETHER_Open function.
Usage Notes
Ethernet Frame Format
The Ethernet module supports the Ethernet II/IEEE 802.3 frame format.
Frame Format for Data Transmission and Reception
Frame Format Image
The preamble and SFD signal the start of an Ethernet frame. The FCS contains the CRC of the Ethernet frame and is calculated on the transmitting side. When data is received the CRC value of the frame is calculated in hardware, and the Ethernet frame is discarded if the values do not match. When the hardware determines that the data is normal, the valid range of receive data is: (transmission destination address) + (transmission source address) + (length/type) + (data).
PAUSE Frame Format
Pause Frame Format Image
The transmission destination address is specified as 01:80:C2:00:00:01 (a multicast address reserved for PAUSE frames). At the start of the payload the length/type is specified as 0x8808 and the operation code as 0x0001. The pause duration in the payload is specified by the value of the automatic PAUSE (AP) bits in the automatic PAUSE frame setting register (APR), or the manual PAUSE time setting (MP) bits in the manual PAUSE frame setting register (MPR).
Limitations
Memory alignment limitation for Ethernet buffer
The Ethernet Driver has several alignment constraints:
16-byte alignment for the descriptor
Examples
ETHER Basic Example
This is a basic example of minimal use of the ETHER in an application.
Note
In this example zero-copy mode is disabled and there are no restrictions on buffer alignment.
The example demonstrates using send and receive function in zero copy mode. Transmit buffers must be 32-byte aligned and the receive buffer must be released once its contents have been used.
After ETHERC, EDMAC and PHY-LSI are reset in software, an auto negotiation of PHY-LSI is begun. Afterwards, the link signal change interrupt is permitted. Implements ether_api_t::open.
Return values
FSP_SUCCESS
Channel opened successfully.
FSP_ERR_ASSERTION
Pointer to ETHER control block or configuration structure is NULL.
FSP_ERR_ALREADY_OPEN
Control block has already been opened or channel is being used by another instance. Call close() then open() to reconfigure.
Receive Ethernet frame. Receives data to the location specified by the pointer to the receive buffer. In zero copy mode, the address of the receive buffer is returned. In non zero copy mode, the received data in the internal buffer is copied to the pointer passed by the argument. Implements ether_api_t::read.
Return values
FSP_SUCCESS
Processing completed successfully.
FSP_ERR_ASSERTION
Pointer to ETHER control block is NULL.
FSP_ERR_NOT_OPEN
The control block has not been opened.
FSP_ERR_ETHER_ERROR_NO_DATA
There is no data in receive buffer.
FSP_ERR_ETHER_ERROR_LINK
Auto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE
As a Magic Packet is being detected, transmission and reception is not enabled.
Transmit Ethernet frame. Transmits data from the location specified by the pointer to the transmit buffer, with the data size equal to the specified frame length. In the non zero copy mode, transmits data after being copied to the internal buffer. Implements ether_api_t::write.
Return values
FSP_SUCCESS
Processing completed successfully.
FSP_ERR_ASSERTION
Pointer to ETHER control block is NULL.
FSP_ERR_NOT_OPEN
The control block has not been opened.
FSP_ERR_ETHER_ERROR_LINK
Auto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE
As a Magic Packet is being detected, transmission and reception is not enabled.
(end addtogroup GETHER) Updates the user callback with the option to provide memory for the callback argument structure. Implements ether_api_t::callbackSet.
Return values
FSP_SUCCESS
Callback updated successfully.
FSP_ERR_ASSERTION
A required pointer is NULL.
FSP_ERR_NOT_OPEN
The control block has not been opened.
FSP_ERR_NO_CALLBACK_MEMORY
p_callback is non-secure and p_callback_memory is either secure or NULL.