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.
您好!
这与 使用 EEPROM 闪存组 来存储配置和其他数据有关。 根据我的理解、TI FEE 驱动器会按顺序将数据写入存储器。 如果要求将存储器分区成存储不同类型的数据、是否可以将驱动程序用于 FEE 操作?
例如、前32个字节存储系统信息、后256个字节存储配置数据、后1 KB 存储一些其他数据等。如果我的配置数据长度为32字节、则第一个配置 应存储在地址0x20。 如果配置被修改、它 应该被存储在下一个地址0x40、依此类推。 当到达段末尾(地址0x120)时、第一条记录(位于0x20) 应该被擦除并写入 新的配置。 这应该适用于 FEE 中创建的所有分区、即使 在配置写入之间对其他段进行写入调用时也是如此。 如果有可能,请详细说明如何实现这一目标?
谢谢、此致、
Vimal
尊敬的 Vimal:
仿真的 EEPROM 分为两个或多个虚拟扇区。 每个虚拟扇区都被划分为多个数据块。 虚拟扇区可以包含一个或多个连续的物理闪存扇区。 至少需要2个虚拟扇区来支持 TI FEE 驱动器。
虚拟扇区的大小必须大于所有数据块的大小。
将数据编程到 EEPROM 时、数据将写入活动虚拟扇区中的第一个空位置。 如果当前虚拟扇区中没有足够的空间来更新数据、它将切换到下一个虚拟扇区、并将所有有效数据从当前虚拟扇区中的其他数据块复制到新的数据块。 复制所有有效数据后、当前虚拟扇区标记为擦除就绪、新虚拟扇区标记为活动虚拟扇区。 任何新数据现在都将写入新的活动虚拟扇区、且标记为可擦除的虚拟扇区将在后台擦除。
您可以将所有系统配置信息放入一个块中、例如块1、配置数据是另一个块、例如块2。 当您将块#2读取/写入闪存时、您无需提供由驱动程序分配的地址。 当您将配置数据(块2)写入闪存时、驱动程序将检查块2是否是闪存中的有效块、如果块2不存在、则块2将写入闪存。 下次更新块#2时、驱动程序会检查新的配置数据是否与闪存中的块#2数据不同。 如果不同、新的块#2将被编程到闪存并标记为活动块、而前一个块#2被标记为无效块。 如果相同、则写入操作将被忽略。
请查看 FEE 驱动器用户指南:
e2e.ti.com/.../4478.TI-FEE-User-Guide.pdf
您好、QJ Wang、
感谢您的回答。
考虑一种配置数据很少更新但系统数据快照经常存储的情况。 由于地址是由驱动程序分配的、 这是否会导致我的配置数据在内存已满时被覆盖?
谢谢、此致、
Vimal
尊敬的 Vimal:
当虚拟扇区已满时、包括配置数据在内的所有有效数据块都将复制到下一个虚拟扇区。 配置数据块的地址会改变、但配置数据不会改变。
您好、QJ Wang、
这意味着将保留最新的配置数据(即有效块)。 但 旧配置 (标记为无效)将被擦除。 在这种情况下、我是否可以保留多个配置块?
此外、 是否可以 访问经常存储的系统数据的多个快照(即使块被标记为无效)? 或者、我是否能够 只读取有效(最新)块? 由于费用用于数据记录、我们需要能够 检索同一类型的多个记录。
谢谢、此致、
Vimal
可以、您可以将相同的配置数据存储到2个或更多不同的数据块中。 但您不必这么做。
[引用 userid="506337" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1105564/tms570ls1227-ti-fee-driver-usage/4099966#4099966"] 即使块被标记为无效、也可以多次访问频繁存储的系统数据快照(即使该块) 或者、我是否能够 只读取有效(最新)块?当您读取块时、将仅返回有效块中的数据。 无效块中的数据已过期、与有效块中的数据有多大不同。