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.

[参考译文] CC2745R10-Q1:通过 CCS 编程时的 CC2745 闪存擦除行为

Guru**** 2756805 points

Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1605383/cc2745r10-q1-cc2745-flash-memory-erase-behavior-when-programming-via-ccs

器件型号: CC2745R10-Q1
Thread 中讨论的其他器件: UNIFLASH

尊敬的 TI 支持团队:

我正在使用通过 Code Composer Studio (CCS) 进行固件开发的 CC2745 器件。

我观察到以下与闪存相关的行为:

当使用以下指令复位器件时:

电源复位

硬件复位引脚

软件复位

→闪存内容保持不变且持久不变。

但是、当 I 使用 CCS (Load Program / Debug) 对固件进行刷写/编程时、闪存内容将被擦除并恢复为默认值 (0xFF)。

我不仅在我的应用中验证了这种行为、还使用了 TI 参考示例、该行为在所有情况下都是相同的。

据我的理解、CCS 在编程前执行批量擦除、这会导致 NVS 等用户数据或闪存中存储的配置丢失。

我的问题:

CCS 的这种批量擦除行为是否是 CC2745 的建议行为及预期行为?

在开发过程中对固件重新编程时、建议使用什么方法来保留 NVS/用户数据?

是否有首选的 CCS 配置或链接器存储器布局来安全地保护 NVS 区域不被擦除?

在生产固件更新场景中、确保闪存用户数据不会丢失的最佳实践是什么?

我的用例:

我将永久配置数据存储在闪存中、并希望确保:

数据能够承受电源复位和系统复位(正常工作)。

在固件重新编程或未来的固件更新机制期间、不会意外擦除数据。

请参阅 TI 建议的用于在 CC2745 上管理持久闪存数据的最佳方法指南。

感谢您的支持。

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

    您好:

    CCS 的这种批量擦除行为是否为 CC2745 的建议行为及预期行为?

    批量擦除意味着  从器件中移除所有存储器。 这是在进行批量擦除时的预期结果。

    在开发过程中重新编程固件时、建议使用什么方法来保留 NVS /用户数据?

    我不知道有任何方法可以避免在批量擦除过程中擦除 NVS 区域。 这实际上取决于您如何对器件重新编程(即 Uniflash 将执行批量擦除、CCS 也会执行)。 如果您使用自己的闪存引导加载程序或等效器件、则可以避免这种情况发生。

    在固件重新编程或未来的固件更新机制期间、不会无意中擦除数据。

    如果您使用 OAD 或编写自己的闪存引导加载程序、则必须实现此。 我们提供可用于实施的硬件 API。 您可在此处找到这些内容:

    CC27xxDriverLibrary:[flash.h]闪存

    当前的 OAD 项目不应删除 NVS 区域、如果您决定编写自己的闪存引导加载程序、则在重新编程时可以避免 NVS 区域地址。

    此致、

    Nima Behmanesh