AM2432: Unresolved symbols when linking LLD (Low Level Driver) functions with Industrial Communications SDK 11.00.00.08 on AM243x

Part Number: AM2432


I am working on the AM243x using Industrial Communications SDK 11.00.00.08 together with a third-party EtherNet/IP stack.

The EtherNet/IP stack operates through a socket-based interface, so when implementing protocols that work at Layer 2, such as LLDP, I need to handle raw Ethernet frames at L2 and integrate that with the stack’s interface.
For this purpose, I am trying to use several functions provided in the SDK’s LLD (Low Level Driver).
(I am attempting to use it to access and transmit raw Ethernet frames required for LLDP.)

The functions I intend to use are:

  • cb_lld_recv

  • cb_lld_sendto

  • cb_lld_set_rxnotify

  • cb_rawsock_open

To enable these functions, I linked the following libraries:

  • tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib

  • tsn_unibase-freertos.am243x.r5f.ti-arm-clang.debug.lib

However, during the build, I encounter numerous unresolved symbol errors, including:

unresolved symbol EnetSoc_getCoreId, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetQueue_initQ, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetQueue_getQCount, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetQueue_enq, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetQueue_deq, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetQueue_append, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetMem_allocEthPkt, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetDma_submitTxPktQ, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetDma_submitRxPktQ, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetDma_retrieveTxPktQ, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetDma_retrieveRxPktQ, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetDma_enableTxEvent, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetAppUtils_validatePacketState, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetAppUtils_freePktInfoQ, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetAppUtils_freeMac, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetAppUtils_assertLocal, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetAppUtils_allocMac, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_getTxDmaHandle, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_getRxDmaHandle, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_filterPriorityPacketsCfg, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_coreDetach, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_coreAttach, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_closeTxDma, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_closeRxDma, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_applyClassifier, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>
unresolved symbol EnetApp_acquireHandleInfo, first referenced in ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsn/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib<lldenet.obj>

My questions:

  1. Which additional libraries need to be linked in order to use the LLD functions?

  2. Are there any required Predefined Symbols / compiler defines that must be set to enable these Enet LLD functions?

  3. What is the correct procedure for using LLD for raw Ethernet frame access on AM243x R5F with SDK 11.00.00.08?
    Because I am using a third-party EtherNet/IP stack, I cannot rely on the TI EtherNet/IP adapter example, so I need to understand which modules and settings are strictly necessary.

If needed, I can provide the complete build configuration, linker command file, or full build log.

Thank you very much for your assistance.

  • Hi

    In order to help us answer your query better, can you please confirm the following:

    1. Which hardware IP are you using for switch - Programmable Real-time Unit and Industrial Communication Subsystem (PRU-ICSS) or Common Platform Ethernet Switch (CPSW)?
    2. What are your link speed requirements - is it 10/100 Mbps, or does it extend to 1 Gbps?

    With this information, I can make better suggestion as to which Ethernet driver would be required and how to integrate it.

    Regards
    Archit

  • Hello  ,

    Thank you for your response.

    1. We are using PRU-ICSS for the Ethernet interface.

    2. Our link speed requirement is 10/100 Mbps.

    Please let me know if any additional information is needed.

    Regards,
    A.Tamura

  • Hi  

    Thanks for sharing the details.

    Based on your requirements, you should use ICSS_EMAC as the Ethernet Driver : ICSDK_INSTALL_PATH\source\networking\icss_emac .

    You should also use the EthernetIP firmware HAL from : ICSDK_INSTALL_PATH\source\industrial_comms\ethernetip_adapter\icss_fwhal.

    For transmitting frames from the EthernetIP stack via the ICSS_EMAC driver, you can use the following API function : ICSS_EMAC_txPacket()

    Following documentation would also be helpful for your case:

    1. ICSS_EMAC Usage
    2. ICSS_EMAC Design
    3. Profinet and Ethernet_IP Initialization Guide.pdf - Refer to sections 1 and 3 in order to understand ICSS_EMAC and EthernetIP initialization flow respectively.

    Regards
    Archit