I found the MAC address from the label on the bottom of the L137 EVM board. Is below the correct procedure for configuring EMAC frame? Thank you!
//MAC Addr, from EVM Board Label 00-03-99-02-55-57
// Fixed Priority Queue, Ch7 highest priority, copy Addr across unused Channels 0-6
EMAC_MACINDEX = 0x00; EMAC_MACADDRHI = 0x000e9902; // Needs to be written only the first time EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x01; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x02; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x03; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x04; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x05; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x06; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x07; EMAC_MACADDRLO = 0xff57;
... ...
// MAC Source Addr, should be same as the EMAC Addr
EMAC_MACSRCADDRHI = 0x000e9902; /* bytes 2-5 */ EMAC_MACSRCADDRLO = 0xff57; /* bytes 0,1 */
Hello,
You should try:
for MAC address = a.b.c.d.e.f = 00.03.99.02.55.57:
MACSRCADDRHI = f.e.d.c = 0x57550299; /* bytes 5..2 */
MACSRCADDRLO = b.a = 0x0300; /* bytes 1..0 */
By convention, MAC addresses (like IPv4 ones) are written in the transmitting order, but unfortunatly MAC addresses are little endian (bit level) and IPv4 ones are big endian (byte level); perhaps TI guys could have recalled this in the EMAC docs.
With MACSRCADDRLO odd (ie first byte of MAC address odd, or first bit transmitted set to 1) you specify an Ethernet group address, therefore explaining the loopback multicast receive problem in your precedent post.
Regards,
Jakez
Jakez, thank you for your response. In above example, are you saying the sequence from MSB to LSB is a.b.c.d.e.f?
Also, do you know where the Destination Address is defined in Transmitting Packet? According to Transmit Buffer Descriptor Format, it is only related with payload (e.g. the Buffer Pointer points to the pure data packet). But I don't know where the Destination Address is defined.
Thanks,
Sean
Sean,
Trying to be more clear:
a.b.c.d.e.f standed for the 6-byte Ethernet address (also noted a-b-c-d-e-f), from least to most significant byte (a is byte 0, the first byte transmitted).
The header of an Ethernet packet contains at byte level (see IEEE802 or p17 of EMAC UG sprufl5b.pdf):
- 6-byte destination address (ie as,bs,cs,ds,es,fs starting with as)
- 6-byte source adress (ad,bd,cd,dd,ed,fd)
- 2-byte length or type packet tag for higher level protocols (if greather than 0x600, for example 0x0806 for ARP packet; 0x0800 for IP packet; ...), most significant byte first
Jakez,
My code works. Thanks a lot!