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.

MCU-PLUS-SDK-AM243X: Which function and buffer used to transmit and receive data with "EtherNet/IP Adapter Demos in MCU-PLUS-SDK-AM243X Version 08.06.00.43" example?

Part Number: MCU-PLUS-SDK-AM243X
Other Parts Discussed in Thread: AM2434

Hi team,
We are using  "EtherNet/IP Adapter Demos in MCU-PLUS-SDK-AM243X Version 08.06.00.43" example  and this is working perfectly, Please find attached the example output.

pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
pbuf_alloc failed on receiving nrt frame
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.
WARNING: Frame without ETHERTYPE received.

We tested between AM2434 EVM to PC as per the following connection and captured data with wireshark. I have successfully transmitted and received data

My query for this is

  • Which function is used to transmit and receive data?
  • How "EI_API_ADP_pruicssInit()" function works, where is the source code of this function?
  • If i want to transmit my own custom data, how could i do it?

Please help me out with my queries.

Waiting for your feedback.

--

Thanks & Regards,

Divyesh Patel

  • Hi Divyesh, 

    Due to holiday in India, please expect a delay in replies on this thread until 9/19.

    Regards,

    Brennan

  • Hi Brennan,

    Waiting for your feedback.

    --

    Thanks & Regards,

    Divyesh Patel

  • Hi Divyesh

    We were aware of issues (WARNING: Frame without ETHERTYPE received.) mentioned in this UART log for MCU+SDK 08.06.00.43 and they are fixed in INDUSTRIAL COMMs 09.00.00.03. The “pbuf_alloc failed on receiving nrt frame“ message is reported when POOL buffer of LWIP is full and can’t to allocate space for new frame. In such a case the frame is dropped and opposite side will repeat a request. This situation you can easily simulate by stopping on breakpoint and can always happen.

    About your questions:

    1) Which function is used to transmit and receive data?

    This is not possible from side of application. The receive and transmit is handled by stack library. Inside of stack library you can use following:
    RX: PRU_EIP_EmacNrtRxCallback for non-real time data or
    PRU_EIP_EmacRtRxCallback for real time data
    TX: PRU_EIP_sendTxPacket

    2) How "EI_API_ADP_pruicssInit()" function works, where is the source code of this function?

    This function is EtherNet/IP adapter stack interface function. Means is implemented on side of stack (library). The sequence of calls is:
    EI_API_ADP_pruicssInit → DTK_EI_API_ADP_pruicssInit → PRU_EIP_loadPru
    The PRU_EIP_loadPru function is making basic initialization of PRU-ICSS block and EthPhy’s and loads firmware inside.

    3) If i want to transmit my own custom data, how could i do it?

    If this is understood as that the customer wants to send his own frame, with or without EtherNet protocol header, it is not allowed to do that from side of application. The customer can configure only some specific parts of data which are belonging to specific protocol which is supported by our stack. A good example is CIP Identity, where it can be defined vendor specific data and than they are used in response frame, but ETHERNET header and other parts of response frame are created by stack layers (CIP Identity object and LWIP).