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.

[参考译文] 针对便携式 BLE 应用/项目配置的建议?

Guru**** 1831610 points
Other Parts Discussed in Thread: CC2650, CC2640R2F-Q1, CC2540T, CC2640, CC2640R2F
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/636720/recommendations-for-portable-ble-application-project-configuration

主题中讨论的其他器件:CC2650CC2640R2F-Q1CC2540TCC2640CC2640R2F

我们有一个 BLE 外设应用、我们希望针对多个 TI 芯片(cc2540T、cc2650、cc2640R2F-Q1)来满足不同的功率、温度和资质限制。

到目前为止、我们已经进行了实验、只需通过 cc4540T 和 cc2650 SDK 源树中的 simple_peripheral 示例手动复制我们的应用程序源代码、并使用现有的 SDK 项目定义进行构建。 (我们创建了一个 Shim 以隐藏堆栈 API 差异)。

现在、我们要创建项目定义、以便将源代码放置在单独的目录中、并根据这些 TI 堆栈/芯片进行构建。 我们的初始目标是基于 cc2650和 cc2640R2F-Q1堆栈进行构建、因为它们至少共享 ARM/CCS 工具链。 是否有任何指导原则可用于修改项目定义以实现此目标?

我已经开始复制和修改示例项目定义、以便它通过单个环境变量引用 SDK 资源、但我在编译时遇到了此错误:-

找不到导入文件:'../../../../../src/common/cc26xx/kernel/cc2640/config/cc2640.cfg (未找到...)

我决定在向这个方向深入挖掘之前、先征求建议!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    勘误表:"到目前为止、我们仅通过在 cc4540T 和 cc2650 SDK 源树中手动复制我们的应用程序源代码进行了实验、"应该是: "到目前为止、我们已经通过在 cc2640RF 和 cc2650 SDK 源树中手动复制我们的应用程序源代码进行了实验"。 我们尚未尝试移植到 cc2540T。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、John、

    我们为每个 SDK 版本提供了移植/迁移指南、这些指南已发布到 BLE wiki 或包含在 SDK 中。 相应的发行说明将提供更多详细信息。 我们所有发布的 SDK (不包括 BLE5 EVAL SDK)都共享一组通用的 API、但存在一些结构差异、需要迁移应用。 我建议从与您正在使用的 SDK 相对应的迁移指南开始。

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

    JXS、

    我不清楚:我们已经使我们的应用程序源可移植、它使用隐藏目标差异的抽象层在 cc2640R2F 和 cc2650上运行。

    我在这里要努力的是如何修改项目定义、以便我们可以将自己的源代码和项目定义检查到一个目录中、并根据多个(未修改的) TI 堆栈/SDK 构建到他们自己的目录中。 到目前为止、我已经在 SDK 树中的 simple_peripheral 源顶部检查了我们的源、并使用 simple_peripheral 项目配置示例进行构建。 这不是一个令人满意的解决办法。

    一个具体示例:为了修改我们的 cc2650项目副本以根据另一目录中的 TI SDK 进行构建、我在环境中定义了"TI_BLE_SDK_2_1_DIR"以指向 SDK 目录、并替换了 app_ble.cfg 中的此行:-

      utils.importFile ("../../../../../src/common/cc26xx/kernel/cc2640/config/cc2640.cfg);

    其中:-

      var sdkPath = String (java.lang.System.getenv ("TI_BLE_SDK_2_2_1_DIR")).trim ();
      utils.importFile ("src/Ccommon/cc26xx/kernel/cc2640/config/cc2640.cfg"、sdkPath);

    这构建良好。 但是、我最初尝试在"Path Variables"中使用此环境变量会导致链接资源的"无效位置"(请参阅下面的 TI_SDK_DIR 变量):-

    我当然可以继续挖掘这个漏洞、但首先想问是否有"更好的方法"来组织和定义可移植的_projects _、它将根据多个 TI 堆栈构建?

    /John

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

    遗憾的是、这种方法不是设计考虑因素、因为项目文件结构发生了更改。 您将代码设计为可移植代码是一件很好的事情、但我看不到一种使项目/工作区结构"通用性"的方法。 我相信您在链接资源中看到的是一种鸡肉/鸡蛋场景、在这种场景下、预编译会期望这些 args 在解析 RTOS cfg 文件之前到位。

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

    >我看不到"共同"项目/工作区结构的方法

    为不同的目标设置单独的项目是可以接受的、实际上对于 cc2540T/IAR 来说是不可避免的、但是在项目中设置硬编码的绝对路径(到 SDK、RTOS、工具)是不可接受的、因为这会阻止 C.I.编译。 您如何在 TI 为 C.I.配置这些项目? 现在、我想最好将所有相关资源签出到一个通用编译根目录中、然后在每个单独的项目定义中使用相对路径。

    /John

    (P.S. 您是否还说在公共 CCS 工作区中使用多个工程也会因为某种原因而成为一个问题?)