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.

[参考译文] CC2652RSIP:片上 OAD,使用1个 BLE 堆栈副本

Guru**** 2390755 points
Other Parts Discussed in Thread: CC2652RSIP, CC2652R7

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1075971/cc2652rsip-on-chip-oad-using-1-copy-of-ble-stack

部件号:CC2652RSIP
“线程”中讨论的其它部件: CC2652R7测试

由于 传感器控制器提供的独特外设集,我正在将应用程序从 nRF52832移植到 CC2652RSIP。 我们的应用程序已经是193KB (在 nRF52832上),没有双栈,我们需要安全的 OAD 功能。 目前,TI 的片上 OAD 实施由以下组件组成:

  • BIM,负责安全和映像验证,8kB
  • 持久应用程序+ BLE 堆栈,负责 OAD 映像下载,~120 KB
  • 负责产品功能的用户应用程序+ BLE 堆栈可以使用剩余闪存352kB-8kB-120kB =224 KB

这种方法有两个 BLE 堆栈副本。 目前,我们的“工作中”应用程序+ BLE 堆栈为232 KB。 我相信,如果我们只有一个堆栈副本,我们将释放足够的空间来实施片上 OAD。 目标是让持久应用程序和用户应用程序使用相同的 BLE 堆栈。

问题-如何使持久应用程序和用户应用程序共享 BLE 堆栈? 我在3-4年前看到了一些关于 BLE 堆栈作为一个单独项目的论坛线索,但大多数指向指南的链接都不起作用或过时。

使用的工具:

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

    您好,玛丽亚斯,

    鉴于 此处用户指南中的文本,我不知道这是否可行

    这种方法需要在目标设备上对两个完整的应用程序和堆栈库对”。

    尽管如此,我将在内部向团队中其他成员转发这些信息,他们可能会有更多的想法。 同时,您还可以选择以下选项:

    1.按照以下指南减少设备所消耗的内存:  

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_5_40_00_40/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/creating-a-custom-bluetooth-low-energy-application-cc13xx_cc26xx.html#optimizing-bluetooth-low-energy-stack-memory-usage

    2.考虑升级到 CC2652R7设备,该设备的内存是内存的两倍

    3.考虑运行片外 OAD

    最佳

    不会

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

    嗨,玛丽乌斯,

    为了回应 Nathan 的答复:不幸的是,在 CC2652RSIP 的最新堆栈中,分离图像 OAD 不受支持,因为应用程序和堆栈是一起构建的。 我建议尝试 Nate 的一些建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="358670" url="~ë/support/wireless-connectivity /蓝牙组/蓝牙/f/Bluetooth-forum/1075971/cc2652rsip 芯片上加载使用-1副本双栈/3982202#3982202]1. 按照以下指南减少设备消耗的内存量: 

    已经做到了。

    [引用 userid="358670" url="~ë/support/wireless-connectivity /蓝牙组/蓝牙/f/Bluetooth-forum/1075971/cc2652rsip 芯片上加载使用-1副本双堆栈/3982202#3982202]2. 考虑升级到 CC2652R7设备,该设备的内存是内存的两倍

    不,大小是我们的一个重要因素。 我们之所以选择 RSIP,是因为它将晶体和天线匹配集成在相同的7x7mm 覆盖范围内。 如果我们需要使用 TI 7x7mm 器件+无源器件(天线匹配和晶体),则与当前的实施相比,这并没有多大改进。

    [引用 userid="358670" url="~ë/support/wireless-connectivity /蓝牙组/蓝牙/f/Bluetooth-forum/1075971/cc2652rsip 芯片上加载使用-1副本双堆栈/3982202#3982202]3. 考虑运行片外 OAD[/quot]

    将在内部对此进行评估。

    但是,我仍在考虑不同的方法。 我可以改进 OAD 以使用所需的任何图像配置。 主要问题是-当我链接用户应用程序时,如何让 CCS 链接程序重新使用来自持久性应用程序的 BLE 堆栈代码?

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

    嗨,玛丽乌斯,

    感谢您对其他选项的评估,我现在更清楚地理解您的担忧。

    [引用 userid="336458" url="~ë/support/wireless-connectivity /蓝牙组/Bluetooth/f/Bluetooth-forum/1075971/cc2652rsip 芯片上加载使用- 1副本-堆栈/3983417#3983417]\n 但是,我仍在考虑不同的方法。 我可以改进 OAD 以使用所需的任何图像配置。 主要问题是-当我链接用户应用程序时,如何告诉 CCS 链接程序重新使用来自持久性应用程序的 BLE 堆栈代码?

    在我们进一步讨论这一问题之前,我们会立即声明:由于您所询问的配置不是由 TI 提供的,因此我们很遗憾无法测试这一配置,因此,在最终测试/验证方面,这项工作的大部分内容必须是自驾式的。

    CCS 中的链接器文件(.cmd)是将项目映射到内存中的文件。 CCS 构建项目后,请参考该项目的.map 文件,最后说出项目的放置位置和引用符号的位置。

    您将面临的一个难题是,您需要以某种方式将项目分离,以便将堆栈依赖关系构建到一个单独的项目中。 这将极大地帮助我们向前迈进,避免自定义内存映射出现任何问题。 然后,您可以更轻松,更自由地修改 .cmd 中的内存映射,并拥有一个堆栈源。 恐怕这不是一件小事。 现在,这些项目可以在您知道的情况下一起构建一个应用程序+堆栈映像。

    我希望这有助于并为今后的一些步骤提供背景。

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

    做了一些初步调查,看起来像共享 BLE 堆栈,常见驱动程序可以节省~72kB 的闪存空间。 为用户应用程序保留~296 KB。