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.

TMS320F28388D: F2838X Ethernet

Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE

Hello.

We are checking F28388D's Ethernet capabilities, and we saw that Lwip and Low Level Ethernet Driver implmentations could be used.

Which are the benefits of each them? 

Which is the fastest?

On the other hand, on the Ethernet_ipc_  example there is  a Ethernet_sendPacket, what is the difference between this functiona and the sendpacket of Low Level Eth program? 

Could the IPC be a bottleneck here, or is it faster than Ethernet? Is Ethernet DMA enabled by default?

Thank you

  • Hi,

    PAk said:

    we saw that Lwip and Low Level Ethernet Driver implmentations could be used.

    Which are the benefits of each them? 

    The Lwip is an Ethernet protocol stack and it used the low lewel Ethernet Driver. If you want to use TCP/IP or any such standard features you will require a stack which is provided by Lwip or other such stacks. It will be written independent of the underlying peripheral driver. There is a lwip port layer provided by TI which bridges the lwip and low level Ethernet Driver. The Low level Ethernet driver is written generic for the Ethernet module of F2838x. 

    If you do not want specific stack capabilities like TCP/IP,etc and just want to use Ethernet for higher speed data communication low level Ethernet driver would suffice.

    PAk said:
    Which is the fastest?

    I presume, you mean throughput by fast/speed. Naturally the low level Ethernet driver will be faster, since it does not have more overhead. But if you add stack as you would need typically you would get lesser throughput. The low level driver throughput is ~97mbps, while with the LWIP stack it is ~33mbps

    PAk said:
    On the other hand, on the Ethernet_ipc_  example there is  a Ethernet_sendPacket, what is the difference between this functiona and the sendpacket of Low Level Eth program? 

    the Ethernet_sendPacket in the example you mentioned is the Low level Ethernet Driver's sendPacket function. 

    PAk said:
    Could the IPC be a bottleneck here, or is it faster than Ethernet? Is Ethernet DMA enabled by default?

    What is the use case you are targeting? what is the throughput expected? What is the application running on C28x side and the nature of application?

    Yes F2838x device Ethernet operates only on the internal DMA. 

    Regards,

    Sudharsanan

  • Thank you  for that detailed answer.

    We are developing a small radar for vital signs, and we run a complex parallel processing. The Ethernet comm port is used as a high speed FFT debugging and logging port, besides from a remote connection controller. Both an external app and control center communicate wih the chip. Our throughput is around 25Mbps to 50Mbps depending on configuration.We use a UDP protocol.

    Do you have an example of UDP protocol on low lewel Ethernet Driver?  A ping response would be interesting as well to check if the device is alive and connected.

    This processing is done on both DSPs CPU1 and CPU2 cores, and communication is sent to a PC via ethernet like in this picture (this was using an Tivaware M4 Launchpad):

    Sudharsanan said:

    the Ethernet_sendPacket in the example you mentioned is the Low level Ethernet Driver's sendPacket function. 

    On the other hand, Ethernet_sendPacket uses Ethernet_addPacketsIntoTxQueue, while SendPacket calls Ethernet_writeTxDescTailPointer.I don't see they are the same function. 

    Finally, 

    Sudharsanan said:
    PAk
    Could the IPC be a bottleneck here, or is it faster than Ethernet? Is Ethernet DMA enabled by default?

    What is the use case you are targeting?

    What is the maximum IPC packet length, throughput/bandwidth? I am worried it could cope up to the Low Level Eth, with all the signaling between processors.

    Thank you again

  • Hi,

    Thanks for the details. I think we were two different low level Ethernet driver. The driver routines in ethernet.c of driverlib like Ethernet_SendPacket is what I mean by Low level Ethernet driver. 

    PAk said:
    Do you have an example of UDP protocol on low lewel Ethernet Driver?  A ping response would be interesting as well to check if the device is alive and connected.

    We have only tried it with TCP/IP application not with UDP. 

    PAk said:
     Ethernet_sendPacket uses Ethernet_addPacketsIntoTxQueue, while SendPacket calls Ethernet_writeTxDescTailPointer.I don't see they are the same function. 

    The throughput figures I quoted last are all using the low level ethernet driver in ethernet.c of driverlib. SendPacket is in lowlatency interrupt example, it is meant for low latency use cases where the buffer handling is to be handled by the application. 

    PAk said:
    What is the maximum IPC packet length, throughput/bandwidth? I am worried it could cope up to the Low Level Eth, with all the signaling between processors.

    The IPC Message RAM is 2K byte long big enough to house standard Ethernet packets.The data can be put in message ram and its address can be transferred with IPC Command. With the raw driver we have definitely seen > 70 Mbps throughput with IPC.  you can evaluate with the stack you intend to use in your application. 

    Regards,

    Sudharsanan

     

  • Thank you for your answer.

    Sudharsanan said:

    We have only tried it with TCP/IP application not with UDP.

    Is the example with TCP/IP version provided?
    Sudharsanan said:

    The throughput figures I quoted last are all using the low level ethernet driver in ethernet.c of driverlib. SendPacket is in lowlatency interrupt example, it is meant for low latency use cases where the buffer handling is to be handled by the application. 

    Ok, that is clear now. Is there a buffer implemented on your lwIP example?
    Sudharsanan said:
    The IPC Message RAM is 2K byte long big enough to house standard Ethernet packets.The data can be put in message ram and its address can be transferred with IPC Command. With the raw driver we have definitely seen > 70 Mbps throughput with IPC.  you can evaluate with the stack you intend to use in your application. 
    Those 70 Mbps should be enough for our application.  
    Thank you.
  • Hi,

    PAk said:
    Is the example with TCP/IP version provided?

    Yes. There is a http webserver example in the C2000Ware. 

    PAk said:
    Ok, that is clear now. Is there a buffer implemented on your lwIP example?

    No. The Lwip example provided works only on CM core and not no communication with C28x side is done in that example. 

    Regards,

    Sudharsanan