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.

[参考译文] MSPM0G3507:EEPROM 仿真 B 型错误恢复

Guru**** 2466550 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1466641/mspm0g3507-eeprom-emulation-type-b-error-recovery

器件型号:MSPM0G3507

工具与软件:

您好!

我正在开发一个利用 MSPM0 SDK 中的 EEPROM 仿真 B 型的实施。   

我想问一下、 TI 是否可以提供任何指导、说明如何 使用正确的错误恢复技术来应对可能的错误情况?

EEPROM_TypeB_init ()可以返回:
  • eeprom_emulation_init_error
  • eeprom_emulation_transfer_error\
EEPROM_TypeB_WRITE()可以返回
  • eeprom_emulation_transfer_error
  • EEPROM_EMULATION_WRITE_ERROR
我已经将 EEPROM_EMULATION_FIX_ENABLE #define 设置为1、因此我相信库会  在初始化期间尝试自己的修复。 
假设修复失败、我们应该如何从每种错误类型中恢复? 
我知道此时会发生数据丢失、我们可能需要恢复为默认值。 
提前感谢您的支持、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ben:

    这在很大程度上取决于应用、并且根据您的用例、您可能希望采取不同的行动。

    对于 INIT 函数-错误表示器件无法正确地初始化闪存的 EEPROM 仿真部分。 在某些情况下、您可能希望再次尝试初始化。 而在其他情况下、您可能希望跳转到某个错误状态、防止系统的其余部分启动。 根据仿真 EEPROM 中存储的信息、您可能想要保存错误数据以供以后进行一些分析。 您也可以尝试发出复位以尝试重新启动。 确实有一些选项。  如果初始化的其中一个擦除操作失败、将返回 eeprom_emulation_init_error、因此您也可以读出 flashctl 状态、以查看有关失败擦除的详细信息并采取相应的措施。 当您尝试将数据从一个组传输到下一个组时、会发生 eeprom_emulation_transfer_error、因此您可能需要编辑源以添加更多有关传输如何失败的信息、然后根据失败类型采取措施。

    对于 WRITE 函数 -当闪存控制器尝试写入闪存时、或当闪存数据项正在从一个组传输到另一个组时、可能会发生这两个故障。 对于写入失败、您可能需要检查 EEPROM_TypeB_writeDataItem ()函数内部以获得有关发生了哪些确切失败的更多信息、并相应地处理错误。 如果有一些 ECC 错误、您可能还需要跳转到 NMI 处理程序、因此您可能想要在那里添加一些处理代码。 通常、如果写入过程失败、您可能需要停止系统操作、具体取决于系统正在执行的操作。

    根据您的系统需求、您可以采取措施在出现错误的情况下保存数据、您可以停止系统操作、您可以尝试从出现错误的闪存组中恢复一些信息。 您可以从每个函数中获取更详细的信息、并以不同的方式处理不同的错误。 如果不知道应用的需求、就很难判断在收到某个错误消息时应如何处理 EEPROM 数据。

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

    感谢您的支持 Dylan。  -本