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.

[参考译文] CC2640:从 BLE 堆栈2.2.0移植到2.2.1

Guru**** 2560390 points
Other Parts Discussed in Thread: CC2640, BLE-STACK, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/570034/cc2640-porting-from-ble-stack-2-2-0-to-2-2-1

器件型号:CC2640
Thread 中讨论的其他器件: BLE-STACKCC2650

我正在将几个应用程序(及其堆栈)从2.2.0移植到2.2.1。 由于我正在使用 Linux 主机、首先我必须遵循正确设置库和源代码树以及编辑某些文件名的大写字母的过程。  我在过去做过这件事、虽然仍然无法理解为什么一家数十亿公司无法最终将这款 fkng BLE 套件移植到 Linux、但我始终设法做好准备并继续工作。 不适用于此版本。

一切设置正确后、我开始了代码成功编译的过程。 虽然还没有雪茄、但通常的变化让我稍微靠近了一点。 我在 wiki 上找到了"CC2640移植项目"、为我提供了更多技巧、帮助我更接近成功编译。

不幸的是,我达到了一个无法取得更多进展的地步。 删除后:

启动文件夹中的 common_rom_init.c 和 rom_init.c

并添加:

${ROM}\ROM_JT.c

我遇到了需要包含 aes.h 的新错误

之后、我遇到了以下错误(全部位于 src/rom/r1/common_rom_init.c 中的 R2R_Flash_JT_CommonROM[]中的 AES 部分下):

#20标识符"FFMULT_SW"未定义
#20标识符"InvAddRoundKey_SW"未定义
#20标识符"InvMixColumns_sw"未定义
#20标识符"InvRoundKey_SW"未定义
#20标识符"InvShiftRows_sw"未定义
#20标识符"InvSubBytes_sw"未定义
#20标识符"sspAesDecrypt_sw"未定义

我尝试了定义 include_AES_decrypt、只注释掉这些行。  两种情况下的误差相同:

 未定义                 第一个参考
 符号                                      
 ------                                --------
 TRNGCC26XX_CONFIG    

它是指真随机数生成器模块。 此时、我想停止猜测、看看 TI 是否可以提供指导、以便我继续进行项目并开始测试新图像。 非常感谢。

Pibe.

在 Linux 主机上使用 CCSv7

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

    您实际上是使用 AES 加密、还是只是包含该文件以消除错误? 此外、如果您删除了 common_rom_init.c、那么您在该文件中会遇到什么错误?

    -弥敦
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的答复。 我目前没有使用它(尽管我稍后会使用它)、它只是在我移植项目时弹出。 关于 R1/common_rom_init.c、它的重新出现与 rom_jt.c 有关:

    ifdef R2
    #include "R2/ROM_init.c"
    #include "R2/common_rom_init.c"
    #else //默认为 R1
    #include "r1/rom_init.c"
    #include "r1/common_rom_init.c"
    #endif

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

    您好!

    您能否列出您遇到的需要包含 AES.h 的错误?

    此外、您是否在堆栈项目或应用项目中更改了 ROM 文件? 它们只需要在堆栈项目中进行。

    -弥敦

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

    到目前为止、我只在其中一个应用程序中工作、而不是在堆栈中工作。 在制作与 ROM 相关的模块后、我收到错误:

    #1965无法打开源文件"AS.h"(发生在:...src/rom/r1/common_rom_init.c 中)

    要解决我在新树中找到的问题并在找到 AES.h 后向路径中添加了 include:

    "${SRC_BLE_CORE}/components/services/src/aes/cc26xx

    这会处理错误、但会添加我在第一个帖子中提到的所有其他错误。

    关于仅适用于堆栈的更改、它在 wiki 中看起来不像。 项目4、5和6开始说明范围(应用程序或堆栈)。 第7项没有具体说明这一点,因此似乎对这两项都适用。 明天我将尝试从步骤7中删除更改。  希望就是这样。 谢谢。

    PS:我刚刚记得以某种方式包括 common_rom_init.c。  ROM_JT.c 所做的只是根据芯片发布(R1/R2)版本提取正确的文件。 因此,我看不出这会如何影响结果。


    Pibe.

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

    今天、我研究了 TRNG 错误、发现它源自 TRNGCC26XX.c、其中引用了一个似乎未在任何位置定义的外部对象:

    extern const TRNGCC26XX_Config TRNGCC26XX_CONFIG[]

    该结构可在 TRNGCC26XX.h 中找到:

    /*! @简介 TRNGCC26XX 全局配置*/
    typedef 结构 TRNGCC26XX_Config{
       /*! 指向驱动程序特定数据对象*/的指针
       void                  *对象;

       /*! 指向特定于驱动程序的硬件属性结构*/的指针
       void         const   *hwAttrs;
    } TRNGCC26XX_Config;

    遗憾的是、我在可用的文档中找不到有关如何使用该模块的任何指示(包括"技术参考"、其中解释了模块的详细信息、而不是该配置对象的使用方式)、坦率地说、我不想猜测。 TI 能否就此提供支持? 谢谢。

    Pibe.

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

    您显示的代码显示它已定义。 该错误看起来与 TRNG 文件无关。 您的所有错误看起来都源于将 ROM 文件包含在应用程序项目中、以及您为修复这些错误而采取的后续步骤、这会导致其他问题。

    -弥敦
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    链接器不同意、因为它抱怨未定义 TRNGCC26XX_CONFIG。
    此外、删除 ROM 文件不能解决问题。

    Pibe.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从我开始使用 v2.2.0更新我的应用程序到使用 v2.2.1已经过去了三天了。 根据常见的版本控制做法、此版本号增加应仅包含少量更正。 相反、整个树已经被修改、我的应用程序不再编译。 我按照指示执行了 processors.wiki.ti.com/.../CC2640_Porting_Projects 中所示的迁移 、但没有成功。

    如果有人研究这个问题并提供支持、我将不胜感激。 谢谢你。

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

    此版本中只有细微的更改。 Wiki 中的步骤已在所有示例应用中进行了测试。 您是否曾尝试从2.2.1项目开始、复制您的项目和源文件(如 wiki 中指定)、然后仅按照 wiki 中的步骤操作(确保仅将步骤7中提到的 ROM 文件添加到堆栈项目)?

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

    "此版本中只有细微的更改。"

    如果是这样、我应该能够毫无问题地编译现有的代码。 阅读文档时、似乎所做的更改并不小。

    "wiki 中的步骤已针对所有示例应用进行了测试。"

    这并不意味着它将用于客户存在的项目。 更不用说、在您的 Wiki 中发现错误并不少见。

    您是否曾尝试从2.2.1项目开始、复制您的项目和源文件(如 wiki 中指定)、然后仅按照 wiki 中的步骤操作(确保仅将步骤7中提到的 ROM 文件添加到堆栈项目)?

    为什么应该这样做? 我在最初选择器件时已经浏览了所有文档。  该项目已相应设置、您不能要求客户在每个"次要"版本中重做所有事情。

    Pibe.

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

    很抱歉、您在移植应用程序时遇到问题。 BLE-STACK 2.2.0仍可与 CC2650配合使用。 如果要将项目迁移到2.2.1 SDK、则必须进行更改、以使应用程序能够处理此版本中对堆栈所做的更改。 虽然这些更改很小、但仍需要在移植过程中采取步骤、移植指南 wiki 中包含了需要遵循的步骤。

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

    我不同意你的"我很抱歉"回答。 您的客户应该比您的方便更重要。

    这里的重点是、您已经制作了一个2.2.1版本、其中包含已迁移到2.2.0的版本所需的几个修复程序。 除了保持兼容性之外、您还添加了对新器件的支持、并解决了架构问题、这些问题引发了本应通过其他版本(如3.0.0或更高版本)解决的更改。

    我有四个受控项目、由于您粗心的做法、现在需要再次移植。

    Pibe.