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.

[参考译文] CC2642R-Q1:向单个字行写入83个以上的闪存

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1181242/cc2642r-q1-more-than-83-flash-writes-to-a-single-wordline

器件型号:CC2642R-Q1

https://www.ti.com/jp/lit/ug/swcu185e/swcu185e.pdf

你好

技术参考手册规定、如果要在单个文字线上执行83次以上的写入操作、则应擦除闪存。

我们使用 TI 驱动程序创建了以下代码、以检查本例中的行为。

    for(uint16_t count=0;count<256;count++)
    {
        uint8_t tw_buff = 0xFF;
        for(uint8_t subcount=0; subcount<8;subcount++)
        {
            tw_buff = tw_buff & (~(0x01 << subcount));
            ret_list2[count*8+subcount] = NVS_write(nvsHandle2, count, &tw_buff, 1, NVS_WRITE_POST_VERIFY);
        }

    }

此代码将文字行中的所有位逐个设置为0。

技术参考手册对其进行了如下描述:

"如果在重新擦除之前执行了83个以上的写入操作、则可能会看到被擦除的行中的未写入位(处于逻辑1状态)会被编程(更改为逻辑0状态)。"

因此,我们希望通过对每个位执行 NVS_WRITE_POST_VERIFY,从某个点返回 NVS_STATUS_ERROR。

但是、结果是写入所有位返回 NVS_STATUS_SUCCESS、刷新值按预期写入。

是否有任何误解?

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

    您好 Yoshiaki、

    您可以从 source\ti\drivers\NVS\NVSCC26XX.c 中查看 NVSCC26XX_WRITE、以进一步了解 NVS_WRITE 的操作。   仅当 定义了 NVSCC26XX_Instrumented 时、才会评估 Max_Writes_per_flash_row、即使定义了 NVSCC26XX_instrumented、它也会导致器件在 while Forever 循环中旋转、而不是返回错误。  如果  您想进一步调试或更改其行为、可以将 NVSCC26XX.c 文件直接复制到项目的工作区中并进行相应修改。

    此致、
    Ryan

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

    感谢您的快速回复。
    我已经检查了代码、似乎只有在通电时才会保留记分板。

    我有两个问题。
    1:我认为 MAX_Writes_per_flash_row 是擦除之间的一个限制、因此电源的状态无关紧要、这不正确吗?
    2:将 MAX_Writes_per_flash_row 解释为保证其正常工作的大致次数是否正确、如果超出此值、则不定义硬件行为?
    换言之、它是否能够在83次以上正常工作?

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

    电源应该是不相关的、但是电源周期将重置现有的记分板计数。    不保证通过 MAX_Writes_PER_FLASH_ROW 的适当闪存行为。  NVOCMP 操作、  建议将\source\ti\common\nv\nvocmp.c 用于高级 NV 使用、因为它通过在 创建新项目并将旧项目标记为非活动的同时循环浏览压缩/活动页面来优化闪存访问。

    此致、
    Ryan