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.

[参考译文] CC2652R:编译到 NVS 区域

Guru**** 2390755 points
Other Parts Discussed in Thread: SYSCONFIG, SIMPLELINK-CC13XX-CC26XX-SDK, CC2652R7

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1208482/cc2652r-compiling-into-nvs-regions

器件型号:CC2652R
Thread 中讨论的其他器件:SysConfigSIMPLELINK-CC13XX-CC26XX-SDK

您好!

我正在努力使 NVS 能够开发我们的应用、从而将其用于固件更新。 我在 SysConfig 中设置了多个区域、能够读取、写入和擦除这些区域、但我不知道如何从编译加载到这些区域、也不知道如何跳转到这些区域。 一个区域是主程序、另一个是新下载的程序、另一个区域是用于将新程序移动到旧位置的区域。 如何设置该区域、以便将 main 分配给我指定的特定区域。 现在看看存储器映射、它似乎默认为存储器0x0、然后我创建的区域出现了。 我想运行主程序、并用它来加载另一个新程序、然后跳转到加载器、用它来移动新程序、然后跳转到新程序并重新启动。

这是 NVS 的有效利用计划吗? 或者是否有其他更好的方法。 我们有一种奇怪的通信方法、因此似乎不能选择引导加载程序。

TICLANG 编译器。

让我知道你可能还需要什么信息或见解,对我来说有点新的地形。

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

    尊敬的 Seth:

    您是否正在使用无线电协议?  我建议您进一步调查 BIM。  具体思路是、此独立应用程序在启动时运行、并  使用 jumpToPrgEntry 找到要跳转到的有效应用程序映像。  BIM 和应用程序映像被单独加载到器件中、并共享一个公共标头闪存空间、以便共享有效的映像标志。  您还可以参考 BLE 增强型 OAD 基础知识 SimpleLink Academy 实验 、我建议熟悉 SIMPLELINK-CC13XX-CC26XX-SDK 中的现有 OAD 示例。   如果 ROM 引导加载程序 不足、这里也有一个自定义串行引导加载程序的示例。

    此致、
    Ryan

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

    尊敬的 Seth:

    BIM 会搜索映像头参数(imgType & imgVld)、找到有效的映像进行启动。  在将图像加载到存储区域后、可在重新启动设备之前更新图像标头来验证图像。  图像标头位置已知并在应用程序之间共享。

    此致、
    Ryan

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

    谢谢你的答复。 我查看了应用程序的内存、这是存储在0x0标头(版本1)中的信息:

    以下是在0x34000 (版本2)处刷写的标头信息:

    我正在使用 SDK simple_peripheral_oad_onchip_lp_CC2652R7_tirtos7_ticlang 项目中的示例工程。 正常使用版本1刷写应用程序、版本2的应用程序位于0x34000以模拟已下载新版本、以及用于片上的 BIM 项目。

    启动时、我们收到指示我们正在运行第一版的 UART 日志。 我对 BIM 的理解是、它应该自动注意新的版本、并将其移动到0x0位置并删除0x34000?

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

    如果您 在 bim_onchip 项目中查看 bim_findImage 的默认 Debug_unsecure 构建配置、则会看到、如果找到、BIM 会跳转到第一个有效的映像、包括 imgValid、bimVer 和 metaVer 字段。  如果通过、BIM 会立即使用 prgEntry 字段跳转到程序、而不考虑任何其他图像标头。  BIM 不会以物理方式移动或删除图像。

    simple_peripheral_oad_onchip 是使用持久映像来更新活动映像区域的示例。  如 应用程序执行切换部分中所述、用户应用程序将自身标记为无效然后复位、以便 BIM 跳转到0x38000处的持久性映像(0x34000至0x38000保留用于非易失性存储器)、从而通过替换用户应用程序来执行更新。  完成操作并将新用户应用程序的映像标记为有效后、持久映像会强制重置、以便 BIM 可以跳转到更新的用户应用程序。

    您描述的声音更像两个用户应用、在这种情况下、您需要仔细研究 bim_onchip 项目的 Dual_image 构建配置。  此 BIM 设置将更新 标头的 verifrStatus、并可能相应地擦除无效映像。 请注意、默认的 simple_peripheral 对于双映像配置来说过大、因此使用 persistent_app。

    此致、
    Ryan

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

    谢谢、这对我们很有帮助。 我对 BIM 的作用产生了误解。 那么、以下是该示例遵循的过程:

    1. 增强
    2. 转至 BIM
    3. BIM 在0x0处找到有效的应用程序(用户应用程序)
    4. 应用程序使其自身无效并复位
    5. 转至 BIM
    6. BIM 在0x38000 (持久)找到有效的应用程序
    7. 持久性应用程序读取数据、并在原始应用程序所在的0x0处写入新应用程序。
    8. 完成时将验证0x0并复位
    9. 转至 BIM
    10. BIM 在0x0处找到有效的应用程序并启动
    11. 更新完成

    BIM 不会移动程序,而是使用持久应用程序将新程序直接加载到需要的位置。

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

    准确描述片上 simple_peripheral、片上 BIM 和持续应用的使用。

    此致、
    Ryan

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

    回顾一下我现在理解的文档、我理解的是、使用双片上处理器可以在两个单独的存储器位置运行应用。 假设我们在0x0处运行一个应用程序或在0x50000处运行第二个应用程序。 我的问题是、我们必须如何编译第二个编译器才能在该存储器位置运行、或者芯片是否有能力为我们处理该问题? 我的意思是、我们必须有两个单独编译的工程映射到第二个应用程序的位置、还是芯片单独处理存储器中的偏移? 我们的目标是让一个在0x0处运行的应用程序、然后让这个运行的应用程序在0x50000处下载一个新的应用程序、然后在其位置(0x50000)上复位并运行新的应用程序、然后返回第四个更新。 这是双映像架构的有效实现吗?

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

    您将需要使用不同的配置编译工程、或完全使用第二个工程、从而将第二个应用程序定位在所需的偏移量。  这可以通过 SysConfig NVS 模块、配置文件和链接器命令文件来实现。  您可以掌握双图像架构。  TI 提供了一个 ZR_SW_OTA_CLIENT_ONCHIP 工程的示例、您可以将其用作参考。  Z-Stack 用户指南中还有一些文档

    此致、
    Ryan