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:使用 NVS (CC2745R10) 进行 UDS 实现时面临的挑战。

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1575086/cc2745r10-q1-challenges-in-using-nvs-cc2745r10-for-uds-implementation

器件型号:CC2745R10-Q1


工具/软件:

TI 团队大家好:

我们计划将 NVS(非易失性存储)用于 UDS 实施。 然而、由于 NVS 的某些局限性、我们目前面临一些挑战。

具体来说、NVS 不支持单字节写入操作执行此类操作会导致整个扇区的擦除。 此外、由于 NVS 的写入/擦除周期有限、因此为进行少量数据更新擦除整个扇区是不切实际的。

例如、如果我们已写入 256 个字节的数据并且只需要修改一个字节、该过程需要将整个 256 字节读取到 RAM 中、更新所需的字节、然后将整个块重写回 NVS。

这种方法有两个主要缺点:

  1. 缩短了 NVS 的写入/擦除周期寿命。

  2. 增加了用于处理读取/修改写入操作的 RAM 用量。

我们想讨论克服这些限制的可能替代方法或优化方法。

此致、

Ratan Dalei

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

    您好 Ratan、  

    我理解这种沮丧。 我将与团队合作、看看使用我们当前的 NVS 软件是否可以做到这一点。  

    同时、您能否提供您所使用的 SDK 版本?  

    我知道您当前正在使用 256 字节选项进行 NVS 写入。 128 字节选项可供使用。 要启用此功能、您必须在构建前将 NVSLPF3_Introduced 添加为预定义项。 预定义的将添加一个名为 flashPageSize 的变量、可以配置为 256 字节或 128 字节。 预定义的还包括记分板(用于跟踪页面被写入的次数)和记分板大小(即记分板中的字节数)。 添加预定义的变量后、这些变量将添加到 NVSLPF3_HWAttrs 结构中。 我知道这不是您的要求、但请在我继续调查时尝试此操作。  

    我希望星期三下周能做出进一步回应 (10/15)。  

    谢谢、

    Isaac

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

    您好 Ratan、  

    您未写入 SRAM、而是从 SRAM 读取正确?  

    我得到了研发团队的一些澄清。 128 字节/256 字节限制用于外部闪存。 这是外部闪存的擦除/写入限制。 对于内部闪存、可以写入一个字节。 请注意、内部闪存默认设置为全 1。 因此、如果一个闪存字节已经写入 0x25 (0b0010 0101)、并且您希望写入 0x35 (0b0011 0101)、则需要擦除该字节并重新写入。 由于闪存仅写入 0、因此擦除后、闪存将填充到所有 1。 当您写入时、将在需要时添加 0、并且 1 将保留。  

    另请注意、最小擦除是整个扇区、为 2kB。  

    谢谢、
    Isaac