This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to configure EMAC frame address for L137?

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

  • Jakez,

    My code works.  Thanks a lot!

    Sean