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.

[参考译文] TMS570LS3137:FEE 模块内的数据备份

Guru**** 2569835 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1120540/tms570ls3137-data-backup-inside-fee-module

器件型号:TMS570LS3137

您好!

我正在设计 NVM 类以实现可靠的持续配置管理、我对 FEE 的实际工作方式有点困惑。 通常、当我实施 NVM 存储时、我会手动准备双组存储器配置并一次操作一个、因此当写入中断时、我可以处理第二个副本。 FEE 驱动器是否包含此功能? 有关我的意图的更多说明:

在 FEE 块配置中、我只有一个大小为30720的块、使用两个虚拟扇区、第一个使用闪存扇区0-1、第二个使用2-3

2.我想确保当 TI_FEE 在重新启动后执行 TI_FEE 读取后以某种方式失败(例如功率损耗)时、我将在功率损耗之前保存有效数据

此致、

Bartosz Nowicki

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

    您好、 Bartosz Nowicki、


    我已开始处理您的问题、我将很快回复您。

    --

    谢谢、

    Jagadish。

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

    您好@Bartosz Nowicki

    仿真的 EEPROM 分为两个或多个虚拟扇区。 每个虚拟扇区都被划分为多个数据块。  虚拟扇区可以包含一个或多个连续的物理闪存扇区。 至少需要2个虚拟扇区来支持 TI FEE 驱动器。

    虚拟扇区的大小必须大于所有数据块的大小。  

    将数据编程到 EEPROM 时、数据将写入活动虚拟扇区中的第一个空位置。 如果当前虚拟扇区中没有足够的空间来更新数据、它将切换到下一个虚拟扇区、并将所有有效数据从当前虚拟扇区中的其他数据块复制到新的数据块。 复制所有有效数据后、当前虚拟扇区标记为擦除就绪、新虚拟扇区标记为活动虚拟扇区。 任何新数据现在都将写入新的活动虚拟扇区、且标记为可擦除的虚拟扇区将在后台擦除。  

    您可以将所有系统配置信息放入一个块中、例如块1、配置数据是另一个块、例如块2。 当您将块#2读取/写入闪存时、您无需提供由驱动程序分配的地址。 当您将配置数据(块2)写入闪存时、驱动程序将检查块2是否是闪存中的有效块、如果块2不存在、则块2将写入闪存。 下次更新块#2时、驱动程序会检查新的配置数据是否与闪存中的块#2数据不同。 如果不同、新的块#2将被编程到闪存并标记为活动块、而前一个块#2被标记为无效块。 如果相同、则写入操作将被忽略。  

    请查看 FEE 驱动器用户指南:

    e2e.ti.com/.../2678.TI-FEE-User-Guide.pdf

    --

    谢谢、
    Jagadish。

     

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

    您好 Jagadish、

    感谢您的意见、但我想您没有获得任何意见。 我已阅读 FEE 用户指南、我知道虚拟扇区的大小需要大于该扇区内所有数据块的大小。 正如我在第一篇文章中提到的、我的虚拟扇区由两个闪存扇区组成、因此虚拟扇区1为32K、虚拟扇区2为32K。 我的数据块为30K、因此我认为这种情况是满足的。 我只想知道这些虚拟扇区是否提供数据冗余-虚拟扇区2是虚拟扇区1的副本吗?它是否仅在虚拟扇区1成功更新后才更新?

    您好!

    Bartosz

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

    您好、Bartosz、

    我只想知道这些虚拟扇区是否提供数据冗余-虚拟扇区2是虚拟扇区1的副本吗?它是否仅在虚拟扇区1成功更新后才更新?

    否、它不会提供任何数据冗余、VS2不是 VS1的副本。 它的运行方式如下

    当您使用数据块编号调用首次写入函数(请记住、在您的情况下、我们只有一个块)并使用您要写入的数据时、它会将您的数据写入 VS1中并使您的数据块有效。 因此、以后每当您使用数据块编号调用读取函数时、它都会提供出现在 VS1中的块数据。

    如果您再次尝试使用新数据和块编号调用写入函数来更新数据、那么您的数据显然不适合 VS1 (因为32KB 大小的 VS1已被30KB 的块占用 、而您的新数据块为30KB)、 因此、它将在 VS2中写入数据块、并使数据块在 VS2中有效、同时使 VS1中的数据无效、并且还启用 VS1擦除操作。  现在、如果你用块编号调用读取操作、那么它将提供出现在 VS2中的块数据。

    同样、如果您尝试更新数据、则新数据再次移动到 VS1、VS2将开始擦除。 这样,这一进程将继续下去。

    --

    谢谢、

    Jagadish。  

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

    您好 Jagadish、

    感谢您的回答、这消除了我的疑虑。 我将尝试缩小数据结构、然后使用第二个 EEPROM 提供数据冗余。

    此致、

    Bartosz