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.

[参考译文] AM2432:将 LLD(低级驱动程序)函数与 AM243x 上的工业通信 SDK 11.00.00.08 链接时未解析的符号

Guru**** 2675505 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1593252/am2432-unresolved-symbols-when-linking-lld-low-level-driver-functions-with-industrial-communications-sdk-11-00-00-08-on-am243x

器件型号: AM2432

我正在使用处理 AM243x 工业通信 SDK 11.00.00.08 第三方 EtherNet/IP 协议栈

EtherNet/IP 协议栈通过基于套接字的接口运行、因此在第 2 层实现工作协议(例如 LLDP)时、我需要在 L2 处处理原始以太网帧、并将其与协议栈的接口集成。
为此、我尝试使用 SDK 中提供的多个函数  LLD(低级驱动器)
(我正在尝试使用它来访问和传输 LLDP 所需的原始以太网帧。)

我打算使用的功能是:

  • cb_lld_recv

  • cb_lld_sendto

  • cb_lld_set_rxnotify

  • cb_rawsock_open

为了启用这些函数、我链接了以下库:

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

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

但是、在构建过程中、我遇到了许多问题 未解析的符号 错误、包括:

未解析的符号 EnetSoc_getCoreId、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用 
未解析的符号 EnetQueue_initQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetQueue_getQCount、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetQueue_enq、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetQueue_DEQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tsnp/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetQueue_append、首先在 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 中引用
未解析的符号 EnetMem_allocEthPkt、首先在 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 中引用
未解析的符号 EnetDma_submitTxPktQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetDma_submitRxPktQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetDma_retrieveTxPktQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetDma_retrieveRxPktQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetDma_enableTxEvent、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetAppUtils_validatePacketState、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetAppUtils_freePktInfoQ、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetAppUtils_freeMac、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetAppUtils_assertLocal、首先在 ind_comms_sdk_am243x_11_00_00_08/MCU_PLUS_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetAppUtils_allocMac、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_getTxDmaHandle、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_getRxDmaHandle、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_filterPriorityPacketsCfg、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_coreDetach、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_coreAttach、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_closeTxDma、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_closeRxDma、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_applyClassifier、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用
未解析的符号 EnetApp_acquireHandleInfo、首先在 ind_comms_sdk_am243x_11_00_00_08/mcu_plus_sdk/source/networking/tns/lib/tsn_icssg_combase-freertos.am243x.r5f.ti-arm-clang.debug.lib 中引用

我的问题:

  1. 要使用 LLD 函数、需要链接哪些额外的库?

  2. 是否有任何所需的预定义符号/编译器定义 才能启用这些 Enet LLD 功能?

  3. 在带有 SDK 11.00.00.08 的 AM243x R5F 上使用 LLD 进行原始以太网帧访问的正确过程是什么?
    由于我使用的是第三方 EtherNet/IP 协议栈、因此我不能依赖 TI EtherNet/IP 适配器示例、因此我需要了解哪些模块和设置是绝对必要的。

如果需要、我可以提供完整的构建配置、链接器命令文件或完整构建日志。

非常感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    为了帮助我们更好地回答您的问题、请确认以下事项:

    1. 您使用哪种硬件 IP 进行交换机- 可编程实时单元和工业通信子系统 (PRU-ICSS)  或 通用平台以太网交换机 (CPSW)
    2. 您的链路速度要求是什么 — 是 10/100 Mbps、还是扩展到 1 Gbps?

    根据这些信息、我可以就需要哪种以太网驱动程序以及如何集成它提出更好的建议。

    此致
    Archit

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Archit Dev 、

    感谢您的答复。

    1. 不同应用 PRU-ICSS 用于以太网接口。

    2. 我们的链路速度要求是 10/100Mbps

    如果需要其他信息、请告知我。

    此致、
    A.Tamura

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    田村明弘 

    感谢您分享详细信息。

    根据您的要求、您应该使用 ICSS_EMAC 作为以太网驱动程序: icsdk_install_path\source\networking\ICSS_emac。

    您还应使用 EthernetIP 固件 HAL、其地址为:icsdk_install_path\source\industrial_comms\EthernetIP_adapter\ICSS_fwhal。

    要通过 ICSS_EMAC 驱动程序从 EthernetIP 协议栈传输帧、可以使用以下 API 函数: ICSS_EMAC_txPacket ()

    以下文档对您的案例也很有帮助:

    1. ICSS_EMAC 使用情况
    2. ICSS_EMAC 设计
    3. e2e.ti.com/.../Profinet-and-Ethernet_5F00_IP-Initialization-Guide.pdf — 请参阅第 1 节和第 3 节、分别了解 ICSS_EMAC 和 EthernetIP 初始化流程。

    此致
    Archit