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.

AM2434: AM243x LP board commucation question

Part Number: AM2434
Other Parts Discussed in Thread: SYSCONFIG

Hello. I am FW engineer working at Autonics.

The information about the TI product I am using is as follows.

  1. MCU : AM2434 LP Board
  2. IND SDK :  ind_comms_sdk_am243x_2025_00_00_08
  3. MCU PLUS SDK : mcu_plus_sdk_am243x_11_01_00_19

The concept of our commincation is as follows.

  1. Our product supports three communication protocols: EtherNet/IP, ProfiNet, and Modbus TCP.
  2. EtherNet/IP and ProfiNet are classified according to the product line during initialization, and they must be ported within a single application FW.

  3.  Modbus TCP must be supported in all product lines (EtherNet/IP and ProfiNet). 

I linked the library in my code to execute concept 2.

image.png

Howerever, An error message occurred indicating that RRU0_Firmware and PRU1_Firmware were declared multiple 

[5]error #10056: symbol "PRU0_FIRMWARE" redefined: first defined in "C:/ti/ind_comms_sdk_am243x_2025_00_00_08/source/industrial_comms/ethernetip_adapter/stack/lib/ethernetipadapter_mii.am243x.r5f.ti-arm-clang.release.lib<pru_EthernetIPFreeRTOS.c.obj>"; redefined in "C:/ti/ind_comms_sdk_am243x_2025_00_00_08/source/industrial_comms/profinet_device/icss_fwhal/lib/profinet_device_irt_mii_icss_fwhal.am243x.r5f.ti-arm-clang.release.lib<iPNDrv.obj>"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[6]error #10056: symbol "PRU1_FIRMWARE" redefined: first defined in "C:/ti/ind_comms_sdk_am243x_2025_00_00_08/source/industrial_comms/ethernetip_adapter/stack/lib/ethernetipadapter_mii.am243x.r5f.ti-arm-clang.release.lib<pru_EthernetIPFreeRTOS.c.obj>"; redefined in "C:/ti/ind_comms_sdk_am243x_2025_00_00_08/source/industrial_comms/profinet_device/icss_fwhal/lib/profinet_device_irt_mii_icss_fwhal.am243x.r5f.ti-arm-clang.release.lib<iPNDrv.obj>"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Is there a way to declare them together without causing a duplicate declaration error?

Although our product supports both EtherNet/IP and ProfiNet, only one communication protocol will actually be used in operation. (Either EtherNet/IP or ProfiNet)

And can Modbus TCP be used while other communication protocols (such as EtherNet/IP or Profin) are in operation?  

In my opinion, it should be possible because they operate on different layers. However, after reviewing the actual example code, I am concerned that it might not be possible. And in that case, how should the PRU firmware be configured? 

Thanks 

  • Hi, 

    In general we have not tested to run two ethernet protocol stacks which are using PRU at the same core. Nevertheless if you only initialize one, that should be possible.

    Because we have not tested that, you see that linking issue. This one you can fix by yourself. Just give PRU0_FIRMWARE/PRU1_FIRMWARE a unique name in the sources from source/industrial_comms/profinet_device/icss_fwhal. The lib you can recompile and that should be fine. 

    Modbus TCP is independent from PRU. It just needs LWIP. LWIP is already available in PROFINET and Ethernet/IP. so you just can use the modbus lib together with the modbus specific initialization of the example and you can run it on top of the fieldbus stack LWIP. 

    Regards

    Christof

  • Hello. Thank you for your prompt response.

    I have a few more questions.

    In '.sysconfig', when using the Industrial SDK SysConfig, we can select the type of communication.

    I would like to set the default communication to EtherNet/IP. Currently, when I configure it that way, my code runs without any issues

    ...

    If I change the communication to ProfiNet during initialization (without using EtherNet/IP), how should I configure SysConfig?

    I would like to keep SysConfig as it is and change the communication mode in the code.

    From what I have checked, I need to be changed are PRUICSS_Firmware, initialization(EIP or PN), and the stack.
    Are there any other parts that also need to be modified?

    Please check it.

    Thanks. Best regards.

  • Hi, 

    The loading of the PRU firmware is part of the protocol initialization. So this party can just be switched by calling the corresponding protocol specific functions. 

    The more critical part is the sysconfig. You can only select one protocol in the sysconfig and the configuration is done for this protocol. If you want to switch during runtime you must implement the different initialization in software. To see what is required, I would recommend to generate sysconfig for all variants, generate the output and see what is the diff. 

    A easier approach for your use case would be that you do a independent application for each protocol. (like all our examples). You can than adapt the bootloader and decide on bootloader level which application you want to load. This approach would be much easier and was already tested from our side. 

    Regards

    Christof