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.

TMS570LS3137-EP: TMS570LS3137-EP

Part Number: TMS570LS3137-EP
Other Parts Discussed in Thread: HALCOGEN

Hi, 

As per the processor data sheet, there are 2 different set of registers available to configure the MAC address.

1. MACSRCADDRLO and MACSRCADDRHI

2. MACADDRLO and MACADDRHI for each channel.

Are these addresses same? If not, what does the sender. that is connected with this DSP, populate in the MAC destination address? How the received messages are filtered using these registers?

Thanks,

Sundaram

  • Are these addresses same?

    From a quick read of the TMS570LS31x/21x 16/32-Bit RISC Flash Microcontroller Technical Reference Manual my understanding is:

    1. The MACADDRLO and MACADDRHI for each channel are used for Receive Address Matching
    2. The MACSRCADDRLO and MACSRCADDRHI are used for pause frames on transmit.
  • Thanks for your quick response.

    If MACSRCADDRLO and MACSRCADDRHI are used for pause frames on transmit, what will be the MAC source address in the normal frames that are transmitted from the DSP?

    -Sundaram

  • what will be the MAC source address in the normal frames that are transmitted from the DSP?

    The MAC source address in the normal frames is placed in the Packet Buffer which the software programs into memory, and points at in a Transmit Buffer Descriptor.

    From the HALCoGen emac.h include file:

    /* Struct used to take packet data input from the user for transmit APIs. */
    typedef struct pbuf_struct {
      /** next pbuf in singly linked pbuf chain */
      struct pbuf_struct *next;
    
      /**
      * Pointer to the actual ethernet packet/packet fragment to be transmitted.
      * The packet needs to be in the following format:
      * |Destination MAC Address (6 bytes)| Source MAC Address (6 bytes)| Length/Type (2 bytes)| Data (46- 1500 bytes)
      * The data can be split up over multiple pbufs which are linked as a linked list.
      **/
      uint8 *payload;
    
      /**
       * total length of this buffer and all next buffers in chain
       * belonging to the same packet.
       *
       * For non-queue packet chains this is the invariant:
       * p->tot_len == p->len + (p->next? p->next->tot_len: 0)
       */
      uint16 tot_len;
    
      /** length of this buffer */
      uint16 len;
    
    }pbuf_t;