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.

[参考译文] MSPM0G3107:未初始化存储器上的空白检查不工作

Guru**** 2396165 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1429418/mspm0g3107-blank-check-on-uninitialized-memory-not-working

器件型号:MSPM0G3107

工具与软件:

您好!

我目前正在实施服务层以处理 NVM 的读取/写入请求、并且我使用 MCAL 中提供的 FLS 驱动程序模块。

在测试时、我注意到、如果我想在初始化存储器之前执行空白检查操作(我想检查存储器之前是否已编程)、则作业结果始终设置为 FLS_E_BLANK_CHECK_FAILED。

对扇区执行擦除操作后、该函数将工作并返回有效输出。

我想知道未初始化的存储器和已擦除的存储器之间有何区别? 以及对未初始化的存储器执行空白检查不起作用的原因。 它们都似乎为0xFF。

 

谢谢!

 此致、

Andreea

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

    您好、Andreaa:
    我可以确认、当您说空白检查时、您是指空白验证吗?
    此致、
    Diego Abad

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

    您好、Diego:

    是的、是这样。 我的意思是空白验证命令。

    此致、  

    Andreea

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

    您好、Andreaa:

    检查不起作用、因为检查会评估闪存是否 已成功擦除、以及是否尚未编程为偏离未擦除状态。 您可以在 MSPM0G3107 TRM 第6章的第6.3.6节 BLANKVERIFY 命令中找到更多信息


    此致、
    Diego Abad

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

    您好、Diego:

    感谢您的答复。

    我还有一个与此主题相关的问题。

    首先、我将介绍一下相关的一些背景知识。 我要针对此服务层实施的概念涉及使用一些扇区来写入数据、并且一次只有一个扇区包含有效数据 (验证扇区-> 在该扇区中的某个位置写入特定标头)。

    在复位之后会出现问题、以确定哪个是有效扇区。 为此、我最初想先检查是否所有扇区都是空的(对它们执行空白验证)、然后继续处理那些写入了一些数据的扇区。 但现在这将不再适用、因为空白验证仅适用于已擦除的存储器(当存储器未进行编程或擦除时、问题会在第一次上电时出现)。

    所以、下一个想法是使用我选择的模式从存储器中读取/比较(读取-验证)报头。 我在这里有一些问题、因为我在参考手册的章节中读到过  6.3.6 BLANKVERIFY 命令 "擦除后、闪存字 不处于确定性状态 直到使用 PROGRAM 命令对其进行编程。
    这意味着应用软件不能期望擦除后被擦除的位读回为"1"。
    必须先使用 PROGRAM 命令成功地对存储器位置进行编程、然后才能读取该位置
    存储器位置可视为确定性的、并由应用软件使用。"

    这是否意味着即使我擦除了一个扇区、在标头的位置也可能会发生与擦除之前写入的模式相同的变化? 可以对已擦除的存储器使用读取/比较(读取-验证)操作吗?

    例如、如果我已在 NVM 中写入8个字节的0x22、在擦除后、如果我在该位置读取或执行读取验证、它们是否会返回有效响应?

    谢谢!

    此致、

    Andreea

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

    您好、Andreea:
    咨询我们的内部团队后、您 可以 在每次擦除闪存中的位置时得到值0xFF。 您应该能够使用 readverify、并在擦除位置中检查该值。 提醒一下、blankverify 命令仍将检查已擦除的闪存、而不是值。
    此致、
    Diego Abad

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

    您好、Diego:

    好极了。 感谢您的支持!

    此致、

    Andreea