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.

[参考译文] TMS570LS2124:用于空白检查的 F021 API

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/653605/tms570ls2124-f021-api-for-blank-check

器件型号:TMS570LS2124

您好!

   SPNU501h 中的第21/52页规定:"读取函数不会将主范围和 ECC 范围组合在一起。 因为这是您需要读取操作时的结果
数据和相应的 ECC 上执行、您必须为这两者调用函数。 例如、如果您
已擦除组0、扇区0、您需要对扇区0主地址范围执行空白检查
和 ECC 地址范围。"

这是否意味着如果我必须检查闪存的一部分是否被擦除、我必须执行以下操作:

Fapi_doBlankCheck (FlashData_StartAddress、执行空白检查的闪存字的长度、FlashStatusWord)

Fapi_doBlankCheck (对应 FlashData 的 FlashECC 地址、ECC 数据字的长度、FlashStatusWord)

我对此操作进行了一些测试:

1.测试一个样本数据以检查它是否在闪存组7扇区0中为空。 我只使用 Fapi_doBlankCheck 来检查闪存数据、而不是其相应的 ECC 数据。

情况 A:EE_CTRL1寄存器中的 EE_All1_OK 位设置为"不将所有1s 视为 ECC 故障"。 Fapi_doBlankCheck 返回成功

情况 b:EE_CTRL1寄存器中的 EE_All1_OK 位被清除。 Fapi_doBlankCheck 返回失败、并且一些位翻转为1。 我认为这是因为 ECC 试图纠正它们。  

2.将0xFFFF 写入闪存并使用 Fapi_doBlankCheck 检查其是否处于已擦除状态。 我只使用 Fapi_doBlankCheck 来检查闪存数据、而不是其相应的 ECC 数据。

情况 A:EE_CTRL1寄存器中的 EE_All1_OK 位设置为"不将所有1s 视为 ECC 故障"。 Fapi_doBlankCheck 返回成功

情况 b:EE_CTRL1寄存器中的 EE_All1_OK 位被清除。 Fapi_doBlankCheck 返回成功。

 

为什么在测试2的情况 b 中它返回成功。 写入0xFFFF 是否与使能 ECC 时使闪存处于擦除状态相同? 如果否、为什么空白检查返回成功。

如果还必须验证相应的 ECC 以确定已擦除状态与将0xFFFF 写入闪存的状态之间的差异、那么为什么这在测试1中看起来有效。

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

    我将您的问题转交给我们的软件团队、以便 Flash API 专家提供直接支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Suman:

    -是必须对闪存和闪存 ECC 区域执行空白检查以确认擦除操作成功。

    -当闪存组被擦除时、所有的 ar F 包括 ECC 区域。 但对于所有 F,F 不是相应的 ECC。 因此、擦除闪存及其相应的 ECC 后、如果您尝试在启用 ECC 的情况下读取闪存位置、则会抛出错误、 EE_CTRL1中的 EE_All1_OK 位将用于避免此错误。 因此、如果您清除此位并读取 ECC 错误、则会发生。

    -当写入0xFFFF 的数据时、相应的 ECC (并非所有 F)将被编程到相应的位置。 现在、闪存区全部为 F、但 ECC 区具有有效的 ECC 值。  无论 EE_CTRL1中的 EE_All1_OK 位是1还是0、都不应存在差异。