Nxp semiconductors, Chapter 11: lpc24xx ethernet – NXP Semiconductors LPC24XX UM10237 User Manual

Page 262

Advertising
background image

UM10237_4

© NXP B.V. 2009. All rights reserved.

User manual

Rev. 04 — 26 August 2009

262 of 792

NXP Semiconductors

UM10237

Chapter 11: LPC24XX Ethernet

After reset, the values of the DMA registers will be zero. During initialization, the device
driver will allocate the descriptor and status array in memory. In this example, an array of
four descriptors is allocated; the array is 4x2x4 bytes and aligned on a 4 byte address
boundary. Since the number of descriptors matches the number of statuses, the status
array consists of four elements; the array is 4x2x4 bytes and aligned on a 8 byte address
boundary. The device driver writes the base address of the descriptor array
(0xFEED B0EC) in the RxDescriptor register, and the base address of the status array
(0xFEED B1F8) in the RxStatus register. The device driver writes the number of
descriptors and statuses minus 1 (3) in the RxDescriptorNumber register. The descriptors
and statuses in the arrays need not be initialized yet.

After allocating the descriptors, a fragment buffer needs to be allocated for each of the
descriptors. Each fragment buffer can be between 1 byte and 2 k bytes. The base
address of the fragment buffer is stored in the Packet field of the descriptors. The number
of bytes in the fragment buffer is stored in the Size field of the descriptor Control word.
The Interrupt field in the Control word of the descriptor can be set to generate an interrupt
as soon as the descriptor has been filled by the receive process. In this example the
fragment buffers are 8 bytes, so the value of the Size field in the Control word of the
descriptor is set to 7. Note that in this example, the fragment buffers are actually a

Fig 31. Receive Example Memory and Registers

PACKET

0x7FE01409

RxStatus

0x7FE011F8

RxDescriptor

0x7FE010EC

0x

7F

E

0

1411

0x

7F

E

0

1418

0x

7F

E

01409

0x

7F

E

01410

0x7FE010EC

0x7FE010F0

0x7FE010F4

0x7FE010F8

0x7FE010FC

0x7FE01100

0x7FE01104

0x7FE01108

0x7FE011F8

0x7FE01200

0x7FE01208

0x7FE01210

PACKET

0x7FE01411

PACKET

0x7FE01419

PACKET

0x7FE01325

0x

7

F

E

0

1325

0

x7F

E

013

2C

descriptor array

D

e

sc

ri

pt

or

0

De

sc

ri

p

to

r 1

D

e

scr

ip

to

r 2

D

e

sc

ri

pt

or

3

d

e

s

cr

ip

to

r a

rra

y

fragment buffers

RxProduceIndex

RxConsumeIndex

RxDescriptorNumber = 3

S

ta

tu

s

1

S

ta

tu

s 0

St

a

tu

s

3

S

ta

tu

s

2

st

at

us

ar

ra

y

status array

FRAGMENT 1 BUFFER

(8 bytes)

FRAGMENT 0 BUFFER

(8 bytes)

FRAGMENT 2 BUFFER

(3 bytes)

FRAGMENT 3 BUFFER

(8 bytes)

0x

7F

E

01419

0x

7F

E

0

141B

1

7

CONTROL

1

7

CONTROL

1

7

CONTROL

1

7

CONTROL

StatusInfo 7

StatusHashCRC

StatusInfo 7

StatusHashCRC

StatusInfo 7

StatusHashCRC

StatusInfo 2

StatusHashCRC

Advertising