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.

[参考译文] CCS/CC2640:将字节保存到闪存 CC2640中的 SNV 区域

Guru**** 2551880 points
Other Parts Discussed in Thread: CC2540, CC2640, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/579467/ccs-cc2640-save-bytes-to-snv-area-in-flash-cc2640

器件型号:CC2640
Thread 中讨论的其他部件:CC2540CC2650

工具/软件:Code Composer Studio

这篇文章与保存到 SNV 闪存的字节相关。

我遵循 CC2540和 cc2640的 BLE 开发人员指南中的第3.10.3节。 本节与“将简单 NV 用于闪存存储”相关。 根据这一点,“协议栈可被配置为为为 SNV 保留最多两个4 KB 的闪存页,尽管有效数据只存储在一个活动的闪存页中”

根据我的理解、我可以通过在堆栈项目中设置 OSAL_SNV 预处理器符号来保留最多两页。 为了解释压实、它使用了"扇区"一词。 此处使用的术语"扇区"和"页面"是相同或不同的。 API 将自行处理1页和2页上的读取/写入操作。

这是两个 API 调用

OSAL_SNV_read (id、len、void * buf);

OSAL_SNV_write (id、len、void * buf);

我的另一个问题是在文档中、它显示仅可供客户使用的 ID 为0x80–0x8F。 总共16个 ID。 因此、对于 buf/数组内的 ID、我可以写入 uint8的字节数。 我的要求是存储小于4KB 的数据。 那么、我能否根据 ID 保存4KB、即4096字节。 或两个页面在16个 ID 之间进行划分。 您能帮助我理解这一点吗?

我的要求是至少在 SNV 中存储4096字节。 此外、我能否稍后根据 ID 更新数据、这意味着无需擦除。

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

    CC2640上的1个扇区(或1页)为4KB。 您使用的是哪种器件? SNV 有几个字节的开销、但您应该能够使用单个 ID 写入整个页面(更改 len 类型后、如下所述)。

    默认情况下、osalSnvId_t 和 osalSnvlen_t 类型定义为 uint8。 要使用 uint16类型定义、请在应用程序和堆栈项目中定义预处理器符号 OSAL_SNV_uint16_ID。

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

    ID 的含义是什么。
    为什么它们总共是16个。
    它们如何在4KB 页面之间分布、因为您知道 OSAL_SNV 可以将其设置为2。

    为了澄清、使用"要使用 uint16类型定义、请在应用程序和堆栈项目中定义预处理器符号 OSAL_SNV_UINT16_ID 有何优势。"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    了解 SNV 闪存区域的人员的视频。

    e2e.ti.com/.../457656

    对 TI 开发人员创建的文档非常失望。 只有在开发人员指南中为其提供一个页面以及 TI 员工的回复才会让人感到非常沮丧。 从段的最后一行复制粘贴。 我们正在努力开发您的平台、而不是笨手。 提供一些良好的支持。 以上帖子对此进行了完整讨论。