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:【问题】SDK 中网络源和库定义重复–正确的用法是什么?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1536119/am2432-question-duplicate-networking-source-and-library-definitions-in-sdk-what-is-the-correct-usage

器件型号:AM2432

工具/软件:

我们目前正在使用的产品 INDUSTRIAL_COMMUNICATION_SDK_AM243X 11.00.00.08 、我们注意到 SDK 包含 两组并行的源代码和库 在以下目录下:

/source/networking/...
/MCU_PLUS_SDK/源/网络/...

例如、存在以下两种情况:

  • /source/networking/icss_emac
  • /mcu_plus_sdk/source/networking/ICSS_emac

同样适用于icss_timesync

此外、两棵树下还提供了预构建库:

/source/networking/icss_emac/lib/...
/mcu_plus_sdk/source/networking/ICSS_emac/lib/……

■问题

  1. 预期使用模式是什么?
    用户是否应该选择这两棵树之一?
    或者是否有两个原因存在,我们应该在特定条件下混合和匹配?
  2. 哪个版本(或下)/source/mcu_plus_sdk/source将与预建库一起用于生产中、例如:
    • icss_emac.am243x.r5f.ti-arm-clang.release.lib
    • icss_timesync.am243x.r5f.ti-arm-clang.release.lib
  3. 我们应如何在工程中配置包含路径和库路径以避免意外混合?
    我们是否应该完全排除一棵树?
    是否有这方面的官方指导?
  4. 未来的 SDK 版本是否会整合这些结构或阐明其预期用途?

■上下文:我们遇到的问题

在我们的项目中、我们链接了以下库:

${INDUSTRIAL_COMMUNICATION_SDK_PATH
}/source/networking/icss_emac/lib/icss_emac.am243x.r5f.ti-arm-clang.release.lib ${INDUSTRIAL_COMMUNICATION_SDK_PATH}/source/networking/icss_timesync/lib/icss_timesync.am243x.r5f.ti-arm-clang.release.lib

我们设置以下两个包含路径:

${INDUSTRIAL_COMMUNICATION_SDK_PATH
}/MCU_PLUS_SDK/source ${INDUSTRIAL_COMMUNICATION_SDK_PATH}/source

因此、编译器会拾取icss_timeSyncApi.h(来自)的意外版本/msu_plus_sdk/source/、导致TimeSync_Config_t结构不匹配。 这在运行时导致内存损坏。

通过更改包含路径顺序解决了该问题、但这揭示了更深层次的问题: 如何确定哪个源代码树与库二进制文件相匹配?

如有任何澄清或指导、将不胜感激。 我们希望使我们的工程与 SDK 的预期结构保持一致、并避免脆弱或不一致的配置。

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

    您好、

    感谢详细的主题并引起我们的注意。

    对于 AM243x、初始计划是将 ICSS Networking 组件专门移动到 MCU+ SDK、但发布后修复也需要在工业通信 SDK 中维护 ICSS_EMAC 和 Timesync。


    要回答您的问题:

    预期使用模式是什么?

    对于 AM243x、工业通信 SDK 中的所有工业协议示例都应使用 来自工业通信 SDK 的 ICSS EMAC/Timesync。

    MCU+ SDK 中的 ICSS_EMAC/Timesync 组件仍然有效未使用

    [引述 userid=“617515" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1536119/am2432-question-duplicate-networking-source-and-library-definitions-in-sdk-what-is-the-correct-usage 哪个版本(或下)/source/mcu_plus_sdk/source将与预建库一起用于生产中、例如:
    • icss_emac.am243x.r5f.ti-arm-clang.release.lib
    • icss_timesync.am243x.r5f.ti-arm-clang.release.lib
    [/报价]

    您应使用下的库 INDUSTRIAL_COMMS_SDK_INSTALL_PATH/source/networking

    [引述 userid=“617515" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1536119/am2432-question-duplicate-networking-source-and-library-definitions-in-sdk-what-is-the-correct-usage 我们应如何在工程中配置包含路径和库路径以避免意外混合?
    我们是否应该完全排除一棵树?
    对此是否有任何官方指导?

    您应使用下的文件 INDUSTRIAL_COMMS_SDK_INSTALL_PATH/source/networking

    虽然没有通用方法来处理此问题、但您可以删除源代码并清理下的 ICSS EMAC 和 Timesync 库  INDUSTRIAL_COMMS_SDK_INSTALL_PATH/MCU_PLUS_SDK/源/网络  ->这将确保在包含路径不正确的情况下至少获得编译失败。

    未来的 SDK 版本是否会整合这些结构或阐明其预期用途?

    是的、我们计划在未来的版本中消除 Industrial Comms SDK 和 MCU+ SDK 之间的 ICSS 网络组件重复。 但我们将在 SDK 文档中对此进行记录。

    此致
    Archit