
Fast Ethernet Controller (FEC)
MPC5566 Microcontroller Reference Manual, Rev. 2
Freescale Semiconductor
15-45
the data DMA is complete and the buffer descriptor status bits have been written by the DMA engine, the
RxBD[E] or TxBD[R] bit is cleared by hardware to signal that the buffer has been “consumed.” Software
can poll the BDs to detect when the buffers were consumed or can rely on the buffer/frame interrupts.
These buffers can then be processed by the driver and returned to the free list.
The ECR[ETHER_EN] signal operates as a reset to the BD/DMA logic. When ECR[ETHER_EN] is
deasserted the DMA engine BD pointers are reset to point to the starting transmit and receive BDs. The
buffer descriptors are not initialized by hardware during reset. At least one transmit and receive buffer
descriptor must be initialized by software before the ECR[ETHER_EN] bit is set.
The buffer descriptors operate as two separate rings. ERDSR defines the starting address for receive BDs
and ETDSR defines the starting address for transmit BDs. The last buffer descriptor in each ring is defined
by the wrap (W) bit. When set, W indicates that the next descriptor in the ring is at the location pointed to
by ERDSR and ETDSR for the receive and transmit rings, respectively. Buffer descriptor rings must start
on a 32-bit boundary; however, it is recommended they are made 128-bit aligned.
15.5.1.1
Driver/DMA Operation with Transmit BDs
Typically a transmit frame is divided between multiple buffers. An example is to have an application
payload in one buffer, TCP header in a second buffer, IP header in a third buffer, Ethernet/IEEE
®
802.3
header in a fourth buffer. The Ethernet MAC does not prepend the Ethernet header (destination address,
source address, length/type fields), so this must be provided by the driver in one of the transmit buffers.
The Ethernet MAC can append the Ethernet CRC to the frame. Whether the CRC is appended by the MAC
or by the driver is determined by the TC bit in the transmit BD which must be set by the driver.
The driver (TxBD software producer) must set up Tx BDs in such a way that a complete transmit frame is
given to the hardware at once. If a transmit frame consists of three buffers, the BDs must be initialized with
pointer, length and control (W, L, TC, ABC) and then the TxBD[R] bits must be set = 1 in reverse order
(3rd, 2nd, 1st BD) to insure that the complete frame is ready in memory before the DMA begins. If the
TxBDs are set up in order, the DMA Controller can DMA the first BD before the second becomes
available, potentially causing a transmit FIFO underrun.
In the FEC, the DMA is notified by the driver that new transmit frames are available by writing to the
TDAR register. When this register is written to (data value is not significant) the FEC sends a DMA request
to read the next transmit BD in the ring. Once started, the FEC and DMA continue to read and interpret
transmit BDs in order, and DMA the associated buffers, until a transmit BD is encountered with the R bit
= 0. At this point the FEC polls this BD one more time. If the R bit = 0 the second time, then the FEC stops
the transmit descriptor read process until software sets up another transmit frame and writes to TDAR.
When the DMA of each transmit buffer is complete, the DMA writes back to the BD to clear the R bit,
indicating that the hardware consumer is finished with the buffer.
15.5.1.2
Driver and DMA Operations with Receive BDs
Unlike transmit, the length of the receive frame is unknown by the driver ahead of time. Therefore the
driver must set a variable to define the length of all receive buffers. In the FEC, this variable is written to
the EMRBR register.
Summary of Contents for MPC5566
Page 81: ...Introduction MPC5566 Microcontroller Reference Manual Rev 2 1 24 Freescale Semiconductor...
Page 135: ...Signal Description MPC5566 Microcontroller Reference Manual Rev 2 2 54 Freescale Semiconductor...
Page 189: ...Reset MPC5566 Microcontroller Reference Manual Rev 2 4 20 Freescale Semiconductor...
Page 603: ...Flash Memory MPC5566 Microcontroller Reference Manual Rev 2 13 38 Freescale Semiconductor...
Page 609: ...SRAM MPC5566 Microcontroller Reference Manual Rev 2 14 6 Freescale Semiconductor...
Page 1073: ...MPC5566 Microcontroller Reference Manual Rev 2 22 36 Freescale Semiconductor...
Page 1185: ...Nexus MPC5566 Microcontroller Reference Manual Rev 2 25 92 Freescale Semiconductor...