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:在启用 OAD 的情况下将外部处理器的数据保存到 SNV

Guru**** 2573695 points
Other Parts Discussed in Thread: CC2640, CC2640R2F, BLE-STACK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/587243/cc2640-saving-data-from-external-processor-to-snv-while-oad-is-enabled

器件型号:CC2640
Thread 中讨论的其他部件:、 BLE-STACK

您好!

在我们的硬件中、cc2640通过 I2C 连接到 STM32L471RET6。 我想将一些来自 STM32L471RET6的信息保存在 SVN/其他非易失性存储器上。

我还使用片上 OAD、但堆栈禁用了 SNV (OSAL_SNV=0)。 如果我将其设置 为 OSAL_SNV=1或 OSAL_SNV=2、则 img_b 不会被编译、它会显示内存不足错误。

我使用 IAR 7.70.2来构建应用。

如何减少内存使用并使 SNV 与 OAD 一起工作?

是否有任何其他方法可以保留数据、以便即使在关机时也能保留在存储器中?

等待您的帮助。

提前感谢。

此致

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

    器件型号:CC2640

    工具/软件:TI C/C++编译器

    您好!

    我想将 SNV 与 OAD 服务一起使用。 我在 simple_perphy_app_LP 中对 SNV 执行了写入/读取操作、但返回的状态= 2。

    然后我检查了堆栈的预处理器(2.2.1)、并发现  OSAL_SNV=0。  这意味着没有为 SNV 分配页面。 我将 OSAL_SNV 更改为   OSAL_SNV=1、并尝试 OSAL_SNV=2。

    但是、当我编译应用程序时、我遇到以下错误。

    我使用 simple_peripheral (不带 OAD)检查了 SNV、它工作正常。 我正在使用 IAR 7.70.2和堆栈2.2.1。

    您能不能帮助我如何启用 SNV 以及片上 OAD?

    我认为这是一些与配置相关的问题。 要解决此问题、应进行哪些更改?

    提前感谢。

    正在等待善良的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请 TI 提供任何帮助? 情况紧急。
    非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于闪存大小限制、不支持将 SNV 和/或绑定管理器与用于 CC2640的片上 OAD 配合使用。 我建议您为此配置使用 CC2640R2F。

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

    如 OAD 指南中所述、对于 BLE-Stack v2.2.1、ImageA 中内置了 OSAL_SNV=0且没有 GapBondMgr 功能。 可能没有足够的空间来执行此功能、这就是图像无法链接的原因。

    如果您希望能够将 ImageA 与 SNV 和键合结合使用、请考虑迁移到 CC2640R2F。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sean、

    是否有任何其他方法(除了 SNV)来保留数据、以便即使在关断时也能保持在存储器中?

    正在等待您的帮助。

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

    写入 NV 是在关断期间保留信息的唯一方法。 由于 NV 的性质、最好使用 SNV、否则您将最终使用闪存 API 实现非常相似的功能。 如果需要使用 SNV,则可以尝试通过调整堆栈和 imageA 的大小来优化 imageB 的空间。


    不过、这是一个非常涉及的过程、需要修改链接器文件。 您是否可以选择使用 CC2640R2F 或将数据存储在 STM32L471RET6上?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sean、

    我们的硬件最终确定后、无法使用 cc2640R2F。 数据不能存储在 STM32L471RET6上。
    您能不能建议我在链接文件中进行哪些修改? 以便我可以如何使用 SNV。

    正在等待种类回复。

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、但不能保证它能够实际工作。 下面是我要尝试的操作:

    1.优化 imgA 的大小,删除所有不是绝对必要的代码。 此应用程序已经非常精简和调整、但您可能可以在这里和那里找到一个修整几个字节的位置。 从此处查看映射文件,并尝试调整分配给 imageA 的空间。 然后您可以获取 imageA 链接并构建闪存

    2.尽可能使用最精简的堆栈配置。 确保您仅是外设、没有4.1控制器、没有额外功能等 重新构建并重新刷写堆栈。 要启用 OSAL_SNV、您需要使用 OSAL_SNV=1来构建堆栈、这需要大约4KB 的额外存储器。

    3.尝试优化 imageB 以适应,但一旦设置了堆栈大小,则会固定 imageB 的空间。 您唯一可以调整的其他内容是您在此空间内的存储器占用空间。 (即分割段等)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sean、

    根据 IAR 输出、以下是每个器件的尺寸:

    IMAGE_B 大小:
    43、305字节

    OAD_application 大小:
    35,422字节

    BIM 大小:
    8、170字节

    堆栈大小:
    49,422字节


    您能向我建议如何改进这些功能吗?

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

    1. BIM 不能大幅降低
    2.只有将堆栈配置为最精简的配置,才能减少堆栈,软件开发人员指南对此进行了介绍
    3、ImageA 已经很小了,但您可能可以在这里找到几个字节。
    4. ImageB,确保不包含任何不需要的驱动程序(显示器等)。 从堆栈中删除对不需要的回调的注册等


    同样、由于闪存大小限制、CC2640R1实际上不支持这种高级用例。 您需要尝试修改、可以随时将特定问题发布回。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、JXS、

    正如您建议的 CC2640R2F。 是否可以将 cc2640的代码移植到 CC2640R2F? 因为 CC2640R2F 使用蓝牙5.0而不是4.2。

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

    大家好、mabbas、

    是的、代码移植应该非常简单。 BLE-Stack 3.0.1也基于蓝牙4.2。

     请参阅 software-dl.ti.com/.../migration.html