Texas Instruments TMS320C645x DSP Benutzerhandbuch

Seite von 148
www.ti.com
2.5.5
Receive Buffer Descriptor Format
EMAC Functional Architecture
A receive (RX) buffer descriptor (
is a contiguous block of four 32-bit data words aligned on a
32-bit boundary that describes a packet or a packet fragment.
shows the receive descriptor described by a C structure.
Figure 10. Receive Descriptor Format
(a) Word 0
31
0
Next Descriptor Pointer
(b) Word 1
31
0
Buffer Pointer
(c) Word 2
31
16
15
0
Buffer Offset
Buffer Length
(d) Word 3
31
30
29
28
27
26
25
24
SOP
EOP
OWNER
EOQ
TDOWNCMPLT
PASSCRC
JABBER
OVERSIZE
23
22
21
20
19
18
17
16
FRAGMENT
UNDERSIZED
CONTROL
OVERRUN
CODEERROR
ALIGNERROR
CRCERROR
NOMATCH
15
0
Packet Length
Example 2. Receive Descriptor in C Structure Format
/*
// EMAC Descriptor
//
// The following is the format of a single buffer descriptor
// on the EMAC.
*/
typedef struct _EMAC_Desc {
struct _EMAC_Desc *pNext;
/* Pointer to next descriptor in chain
*/
Uint8
*pBuffer;
/* Pointer to data buffer
*/
Uint32
BufOffLen;
/* Buffer Offset(MSW) and Length(LSW)
*/
Uint32
PktFlgLen;
/* Packet Flags(MSW) and Length(LSW)
*/
} EMAC_Desc;
/* Packet Flags
*/
#define EMAC_DSC_FLAG_SOP
0x80000000u
#define EMAC_DSC_FLAG_EOP
0x40000000u
#define EMAC_DSC_FLAG_OWNER
0x20000000u
#define EMAC_DSC_FLAG_EOQ
0x10000000u
#define EMAC_DSC_FLAG_TDOWNCMPLT
0x08000000u
#define EMAC_DSC_FLAG_PASSCRC
0x04000000u
#define EMAC_DSC_FLAG_JABBER
0x02000000u
#define EMAC_DSC_FLAG_OVERSIZE
0x01000000u
#define EMAC_DSC_FLAG_FRAGMENT
0x00800000u
#define EMAC_DSC_FLAG_UNDERSIZED
0x00400000u
#define EMAC_DSC_FLAG_CONTROL
0x00200000u
#define EMAC_DSC_FLAG_OVERRUN
0x00100000u
#define EMAC_DSC_FLAG_CODEERROR
0x00080000u
#define EMAC_DSC_FLAG_ALIGNERROR
0x00040000u
#define EMAC_DSC_FLAG_CRCERROR
0x00020000u
#define EMAC_DSC_FLAG_NOMATCH
0x00010000u
SPRU975B – August 2006
Ethernet Media Access Controller (EMAC)/Management Data Input/Output (MDIO)
33