English
Language : 

UM10430 Datasheet, PDF (517/1164 Pages) NXP Semiconductors – LPC18xx ARM Cortex-M3 microcontroller
UM10430 NXP SemiconductEIbtdDtrfhoeraxMetorhnatpsAreesmapfnaeTnepdlrrsdwl-raefoieonna:frrg-syBrfmseirgdaudeinamft,nfotbaetesrhure.utefodrrfneee.trsahtShdaeiietmdMtdDrilarTaMenrLslsAysTf,errtierashsane0dasxlmas0fsu0fittilv0lF3e30I20bFfu-FyObltFlei,tw2stdho(oaefroftdaertshx3teotf2rraol-tahbmbseitytadMttedrCaDaTsdtRhnaLrA(aestFbhTpsfTeuesrtDaresf0Rn)rair,xADsrs20aeFmRt2T0nAta:iD0dwFtlLTRs0Fo1AoPD0I5FFbRFCiTgADyObF1DFRtny0e,8TRAot,suxeAFDr)bnTexFsRTualdADenEtrD.FRseetTRwDATsheARFDhhediTFARteerTFADtinnsToDFReTRDAtARDFTFDARTRFADTADFRTFRDATADRF
Example: Buffer write
If the Receive buffer address is 0x0000FF2 (for 64-bit data bus) and 16 bytes of a
received frame need to be transferred, then the DMA writes 3 full words from address
0x00000FF0. But the first 2 bytes of first transfer and the last 6 bytes of the third transfer
have dummy data.
22.8.1.3
Buffer size calculations
The DMA does not update the size fields in the Transmit and Receive descriptors. The
DMA updates only the status fields (RDES and TDES) of the descriptors. The driver has
to perform the size calculations.
The transmit DMA transfers the exact number of bytes (indicated by buffer size field of
TDES1) towards the MAC core. If a descriptor is marked as first (FS bit of TDES1 is set),
then the DMA marks the first transfer from the buffer as the start of frame. If a descriptor is
marked as last (LS bit of TDES1), then the DMA marks the last transfer from that data
buffer as the end-of frame to the MTL.
The Receive DMA transfers data to a buffer until the buffer is full or the end-of frame is
received from the MTL. If a descriptor is not marked as last (LS bit of RDES0), then the
descriptor’s corresponding buffer(s) are full and the amount of valid data in a buffer is
accurately indicated by its buffer size field minus the data buffer pointer offset when the
FS bit of that descriptor is set. The offset is zero when the data buffer pointer is aligned to
the data bus width. If a descriptor is marked as last, then the buffer may not be full (as
indicated by the buffer size in RDES1). To compute the amount of valid data in this final
buffer, the driver must read the frame length (FL bits of RDES0[29:16]) and subtract the
sum of the buffer sizes of the preceding buffers in this frame. The Receive DMA always
transfers the start of next frame with a new descriptor.
Remark: Even when the start address of a receive buffer is not aligned to the system
bus’s data width, the system should allocate a receive buffer of a size aligned to the
system bus width. For example, if the system allocates a 1,024-byte (1 KB) receive buffer
starting from address 0x1000, the software can program the buffer start address in the
Receive descriptor to have a 0x1002 offset. The Receive DMA writes the frame to this
buffer with dummy data in the first two locations (0x1000 and 0x1001). The actual frame is
written from location 0x1002. Thus, the actual useful space in this buffer is 1,022 bytes,
even though the buffer size is programmed as 1,024 bytes, because of the start address
offset.
22.8.1.4
DMA arbiter for MAC-DMA and MAC-AHB cores
The arbiter inside the DMA module performs the arbitration between the Transmit and
Receive channel accesses to the AHB Master interface. Two types of arbitrations are
possible: round-robin, and fixed-priority.
<Document ID>
User manual
All information provided in this document is subject to legal disclaimers.
Rev. 00.13 — 20 July 2011
© NXP B.V. 2011. All rights reserved.
517 of 1164