Motorola ColdFire MCF5281 User Manual page 402

Motorola microcontroller user's manual
Table of Contents

Advertisement

Buffer Descriptors
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) should 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 should be initialized with pointer, length and control (W, L, TC, ABC) and then
the TxBD[R] bits should 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 could DMA the first BD before the 2nd was made available,
potentially causing a transmit FIFO underrun.
In the FEC, the DMA is notified by the driver that new transmit frame(s) are available by
writing to the TDAR register. When this register is written to (data value is not significant)
the FEC RISC will tell the DMA to read the next transmit BD in the ring. Once started, the
RISC + DMA will 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 will poll this BD one more time. If the R bit = 0 the second time, then the RISC will
stop 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.
17.6.1.2 Driver/DMA Operation 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.
The driver (RxBD software producer) should set up some number of "empty" buffers for
the Ethernet by initializing the address field and the E and W bits of the associated receive
BDs. The hardware (receive DMA) will consume these buffers by filling them with data as
frames are received and clearing the E bit and writing to the L (1 indicates last buffer in
frame) bit, the frame status bits (if L = 1) and the length field.
If a receive frame spans multiple receive buffers, the L bit is only set for the last buffer in
the frame. For non-last buffers, the length field in the receive BD will be written by the
DMA (at the same time the E bit is cleared) with the default receive buffer length value.
For end of frame buffers the receive BD will be written with L = 1 and information written
to the status bits (M, BC, MC, LG, NO, CR, OV, TR). Some of the status bits are error
indicators which, if set, indicate the receive frame should be discarded and not given to
higher layers. The frame status/length information is written into the receive FIFO
following the end of the frame (as a single 32-bit word) by the receive logic. The length
17-46
MCF5282 User's Manual
MOTOROLA

Advertisement

Table of Contents
loading

This manual is also suitable for:

Coldfire mcf5282

Table of Contents