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.

[参考译文] RM48L952:FEE 函数库

Guru**** 2515175 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1370264/rm48l952-fee-library

器件型号:RM48L952
主题中讨论的其他器件:HALCOGEN

工具与软件:

您好!

我正在使用 FEE、以便将一些数据和校准值存储在非易失性存储器中。
为了生成驱动程序、配置和特定于器件的文件、FEE 驱动器在 HalCoGen 版本04.07.01中被启用。 该项目中还会使用 HalCoGen 安装文件夹中的 F021闪存 API 库版本02.01.01。
我对费用有两个问题:

1) 1)我的设置是否正确、或者我是否应该添加/替换某些文件?
我发现在在线资源转售中  可以下载 TMS470M 闪存 EEPROM 仿真驱动程序。 但是、我的器件似乎不支持它、它是一个由 HalCoGen 生成的旧版本。
我在在线资源库中找不到适用于我的器件的版本、因此我认为我要保留由 HalCoGen 生成的文件、而不是用其他地方的库/驱动程序代替它们。

2) 2)阅读完 TI FEE 用户指南后、我明白不可能同时在4个闪存扇区中存储数据:其中只有2个可以使用、而当第一个闪存扇区满时、将使用另外2个。
我的理解是否正确?

感谢您的支持、
丹尼

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

    大家好、

    Unknown 说:
    1)我的设置是否正确或者我应该添加/替换某些文件吗?

    您的设置正确。

    我的建议是、您可以在 HALCoGen 中找到 RM48的 FEE 示例。 您可以通过以下步骤访问它:

    首先转到 HALCoGen 中的"帮助主题"部分、

    在这里的"示例"部分、您可以找到名为"Example_TI_Examples"的示例 Fee_Write_Read。

    在此示例中、您可以找到分步过程 以及 FEE 示例的代码。

    只需按照以下步骤操作。

    Unknown 说:
    2)阅读完 TI FEE 用户指南后、我知道不可能同时将数据存储在4个闪存扇区中:只能使用其中的2个闪存扇区、而当第一个闪存扇区填满时、将使用另外2个闪存扇区。
    我的理解是否正确?

    不完全是这样。

    实际上、我们需要做的是将物理扇区合并成一些虚拟扇区(最少两个)。 例如、我创建了两个虚拟扇区 VS1和 VS2、这里我还假设我通过组合前两个物理扇区创建了 VS1、通过其他两个物理扇区创建了 VS2。

    现在、FEE 驱动器首先将 VS1设置为活动虚拟扇区、并将所有数据存储到数据块的 VS1冬季。 一旦 VS1完全填满、FEE 驱动器会 将 VS1的活动数据块(活动数据块意味着您可以假设像最新数据一样、我的意思是如果您写两次数据块、那么旧数据将标记为无效、新数据将标记为活动数据块)复制到 VS2中、并将 VS1标记为擦除扇区、 从而 VS1将在后台擦除、并且意味着新数据现在将移动到 VS2。

    现在、如果这个 VS2也被填满、那么 FEE 驱动器将再次返回到 VS1、并且它将把 VS2的所有活动数据块移动到 VS1中并将 VS2标记为擦除。 这一进程将继续下去。

    注:

    理论上、您还可以使用 FEE 配置两个以上的虚拟扇区、但我在最近的测试中看到了一个这样做的问题。 请参阅我在以下主题中的最后一条评论:

    (+) TMS570LS1224:FEE 特定问题-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    因此、我的建议是仅使用2个虚拟扇区。 这将足以连续存储数据而不会出现任何问题。

    --
    谢谢。此致、
    Jagadish。

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

    您好 Jadadish:

    感谢您的回答。
    好的、如果设置正确、这是一个很好的开始。 感谢示例:)

    我对 FEE 行为还有一些疑问:假设我想在第一个 VS 中存储一些校准参数、在第二个 VS 中存储一些事件日志、并在第三个 VS 中存储一些各种数据。如果我理解正确、就无法做到、因为它需要3个活动 VS 和3个备用 VS、即至少6个物理扇区、而我的器件只有4个。
    因此我需要将所有这些数据存储在同一 VS 中、对示例而言、正确吗?

    此外,为何费用只能按行业计算? 它是为了在擦除之前写入所有内存单元,以便使扇区的寿命最大化?

    此致、
    丹尼

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

    大家好、

    假设我想在第一个 VS 中存储一些校准参数,在第二个 VS 中存储一些事件日志,在第三个 VS 中存储一些各种数据。如果我理解正确,这将不可能实现,因为它需要3个活动 VS 和3个备用 VS,这意味着至少6个物理扇区,而我的设备只有4个[/报价]。

    我想您不太了解它、我建议您再次参考 TI FEE 用户指南:

    实际上、我们不能将每个扇区专门指定一个参数。 我的意思是永远不可能一次进入所有部门。

    数据应以数据块格式存储。

    例如、在您的情况下、您应该需要如下创建3个数据块

    我假设您的校准数据是16字节、那么您应该需要创建第一个数据块为16字节、可用于校准数据、类似地、还需要创建另外两个数据块、分别用于事件日志和一些其他数据等。

    现在、每当您想写入一些数据时、应该需要使用相应的块编号调用写入函数、如下所示。

    同样、对于读取函数、您也应该需要调用相应的块编号。

    实际上,你不必担心虚拟扇区,实际上虚拟扇区的处理将由收费驱动器内部处理。 唯一需要做的就是创建两个虚拟扇区。

    这只是收费的内部操作、分享您对内部操作的理解:

    假设我创建了两个 FEE 虚拟扇区和3个数据块。

    FEE 驱动器的作用是、每当您尝试写入一个数据块时、FEE 就会将数据块写入 VS1。 在 VS1完全填满之前、它会将所有数据块写入 VS1。

    如果任何块使用新数据多次调用、FEE 在内部将最新块标记为有效、而相应块的所有之前数据标记为无效。 如果你使用块编号调用读取函数、那么 FEE 将为相应的块提供最新的有效数据。

    一旦 VS1完全填满、FEE 将把 VS1中的所有最新有效数据块复制到 VS2中并将 VS1标记为擦除。 现在、如果你将任何新数据写入块、那么它们将继续写入 VS2、此过程将继续、直到 VS2被填满。 一旦 VS2被填满、FEE 将把 VS2中所有有效数据块复制到 VS1并标记 VS2用于擦除操作。 这一进程仍在继续。

    --
    谢谢。此致、
    Jagadish。